8791 sujets

Développement web côté serveur, CMS

Pages :
Bonjour,

avec ce bout de code, je n'ai pas l'affichage de l'image mais l'affichage du "alt" soit "Image" quelqu'un peux me dire ou est l'erreur?

merci

echo '<td class="cadre rond"><a href="supprime.php?del=' , $tableau[$i] , '"><img src="../../".$sup."/mini/' , $tableau[$i] , '" alt="Image" /></a></td>';
Modérateur
il ne trouve pas l'image.

Un indice, va voir le code html généré par ton echo et la réponse viendra d'elle-même.

Ainsi qu'un peu de documentation avec pleins d'exemples de concaténation et de déclaration de chaînes de caractères.
Modérateur
Au passage, alt est la pour donner une description alternative de l'image dans le cas où on ne peut pas la voir (navigateur non graphique, problème d'accès, etc.) Donc essaie de trouver quelque chose de mieux que Image (ça on s'en serait douté ^^) et de plus descriptif.
Bonjour kustolovic et merci de ta réponse,
j'ai bien compris que c'était une erreur de concaténation et que ma variable $sup n'était pas prise en compte à l'intérieur de simples quotes mais j'ai beau lire tout ce que je trouve sur le net et dans la doc dont tu m'as envoyé le lien mais je pense avoir tout tenté (sauf surement la bonne solution)
j'ai regardé le code html et là ou devrait apparaitre la photo, j'ai ceci :
<img src="../../"".$sup.""/mini/001.jpg" alt="Image" />

ou $sup devrait être le dossier précédemment choisit dans mon formulaire
Modérateur
Salut,

Ça ne serait pas lié au fait que tu utilises des guillemets et pas de simple quote pour $sup ?
Modérateur
En effet, voici la solution:

echo '<td class="cadre rond"><a href="supprime.php?del=' . $tableau[$i] . '"><img src="../../' . $sup . '/mini/' . $tableau[$i] . '" alt="Image" /></a></td>';


p.s: un éditeur a coloration syntaxique t'aurais rendu le problème évident
Modifié par kustolovic (28 Mar 2012 - 14:14)
je te remercie kustolovic, ça fonctionne, mais c'est super casse tête ces histoires de simples quotes et doubles quotes (enfin pour un novice comme moi !)
encore un grand merci
en fait, non, ça ne fonctionne pas, j'explique : le bout de code en question fait partie d'un script qui me permet d'afficher une galerie photo et de supprimer juste par un clic l'image sélectionnée ainsi que sa miniature, avec ton dépannage maintenant les miniatures s'affichent correctement mais lorsque je veux essayer de suppimer une photos j'ai le message suivant :

Warning: opendir(../..//mini/) [function.opendir]: failed to open dir: No error in C:\xampp\htdocs\liste\admin\maintenance\supprime.php on line 169

Warning: readdir(): supplied argument is not a valid Directory resource in C:\xampp\htdocs\liste\admin\maintenance\supprime.php on line 170

Warning: closedir(): supplied argument is not a valid Directory resource in C:\xampp\htdocs\liste\admin\maintenance\supprime.php on line 175
Aucune image à afficher
Image non reconnue

donc je me dis que je vais modifier cette ligne 169
$dossier = opendir ("../../" .$sup. "/mini/");

par :
$dossier = opendir ("../.." .$sup. "/mini/");

et la, évidement plus rien ne fonctionne
donc me revoila dans l'impasse
pour être peut être plus clair voici l’entièreté du code mais avant de le donner, une petite précision : à la base le code fonctionnait parfaitement mais avec des chemins écrit comme ceci : "../../pics/" ou "../../mini" j'ai modifié le code car j'ai plusieurs galeries de photos et je voudrais ne plus avoir une partie admin dans chaque galerie mais une seule partie admin que je gérerais à partir d'un formulaire avec liste déroulantes donc je cherche à modifier "../../mini" par ../../ .$sup. /mini" ou $sup est le nom de la galerie sur laquelle faire des modifs

voici le code :


<?php

$sup = $_POST["sup"];

// on défini le répertoire où sont stockées les images de grande taille
$dir = "../../" .$sup. "/pics";
// on défini le répertoire où seront stockées les miniatures
$dir_mini = "../../" .$sup. "/mini";
// on défini une variable $ratio qui vaudra 150 dans notre cas (150 pixels). En fait, pour nos miniatures, nous allons respecter le ratio de l'image originale, mais nous allons forcer sa taille à 150 pixels, soit en hauteur soit en largeur (tout dépend de l'orientation de notre image : paysage ou portrait).
$ratio = 150;

// on teste si le formulaire permettant d'uploader un fichier a été soumis
if (isset($_POST['go'])) {
	// on teste si le champ permettant de soumettre un fichier est vide ou non
	if (empty($_FILES['mon_image']['tmp_name'])) {
		// si oui, on affiche un petit message d'erreur
		$erreur = 'Aucun fichier envoyé.';
	}
	else {
		// on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier (je vous suggère de regarder la documentation de la fonction getimagesize pour de plus amples informations)
		$tableau = @getimagesize($_FILES['mon_image']['tmp_name']);
		if ($tableau == FALSE) {
			// si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur
			unlink($_FILES['mon_image']['tmp_name']);
			$erreur = 'Votre fichier n\'est pas une image.';
		}
		else {
			// on teste le type de notre image : jpeg ou png
			if ($tableau[2] == 2 || $tableau[2] == 3) {
				// si on a déjà un fichier qui porte le même nom que le fichier que l'on tente d'uploader, on modifie le nom du fichier que l'on upload
				if (is_file("../../" .$sup. "/pics/".$_FILES['mon_image']['name'])) $file_upload = '_'.$_FILES['mon_image']['name'];
				else $file_upload = $_FILES['mon_image']['name'];

				// on copie le fichier que l'on vient d'uploader dans le répertoire des images de grande taille
				copy ($_FILES['mon_image']['tmp_name'], $dir.'/'.$file_upload);

				// il nous reste maintenant à générer la miniature

				// si notre image est de type jpeg
				if ($tableau[2] == 2) {
					// on crée une image à partir de notre grande image à l'aide de la librairie GD
					$src = imagecreatefromjpeg($dir.'/'.$file_upload);
					// on teste si notre image est de type paysage ou portrait
					if ($tableau[0] > $tableau[1]) {
						$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
						imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
					}
					else {
						$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
						imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
					}
					// on copie notre fichier généré dans le répertoire des miniatures
					imagejpeg ($im, $dir_mini.'/'.$file_upload);
				}
				elseif ($tableau[2] == 3) {
					$src = imagecreatefrompng($dir.'/'.$file_upload);
					if ($tableau[0] > $tableau[1]) {
						$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
						imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
					}
					else {
						$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
						imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
					}
					imagepng ($im, $dir_mini.'/'.$file_upload);
				}
				// on redirige l'administrateur vers l'accueil de la partie admin
				header('location: supprime.php');
				exit();
			}
			else {
				// si notre image n'est pas de type jpeg ou png, on supprime le fichier uploadé et on affiche un petit message d'erreur
				unlink($_FILES['mon_image']['tmp_name']);
				$erreur = 'Votre image est d\'un format non supporté.';
			}
		}
	}
}

// on teste si le formulaire permettant de supprimer un fichier à été soumis
if (isset($_GET['del'])) {
	if (empty($_GET['del'])) {
		// si le paramètre n'est pas renseignée, on affiche un petit message d'erreur
		$erreur = 'Aucune image à supprimer';
	}
	else {
		$pic_a_zapper = $_GET['del'];
		// si l'image existe ainsi que sa miniature, on les supprime
		if (is_file('"../../" .$sup. "/mini/"'.$pic_a_zapper) && is_file('"../../" .$sup. "/pics/"'.$pic_a_zapper)) {
			unlink('"../../" .$sup. "/mini/"'.$pic_a_zapper);
			unlink('"../../" .$sup. "/pics/"'.$pic_a_zapper);
		}
		// si l'image ou la miniature n'existe pas, on affiche un message d'erreur
		else {
			$erreur = 'Image non reconnue';
		}
	}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr-FR">
<head>

	<title>test</title>
	<link type="text/css" rel="stylesheet" href="../../css/images.css"  />
	<link type="text/css" rel="stylesheet" href="../../css/accueil.css"  />
	<link type="text/css" rel="stylesheet" href="../../css/menu.css"  />
	<link type="text/css" rel="stylesheet" href="../../css/admin.css"  />
	<script type="text/javascript" language="javascript" src="../../js/script.js"></script>
  <script src="../../script/jquery.js" type="text/javascript"></script>       <!-- fond d'ecran extensible-->
  <script src="../../script/background.js" type="text/javascript"></script>       <!-- fond d'ecran extensible--> 		
 	<link rel="shortcut icon" href="../../images/55.ico">
	
</head>

<body>



  
  
  
  	<div id="centrale" class="rond">
	<div id="global" class="rond">
<!-- ---------------------------------------------------- -->
		<div id="entete" class="rond">
			<div id="header" class="rond">	<!-- Start Logo--> 					
					<div id="logo_title">
						  test
					</div><!-- End Logo -->						
			</div><br />
		</div>
<!-- ---------------------------------------------------- -->
			<div id="menu" class="rond">
				<ul>
					<li><a href="../../../../">Accueil</a></li>
<!-- 				<li><a href="phenix/">Agenda</a></li> -->
					<li><a href="../../../../citations/">Citations</a></li>
					<li><a  href="../../../../fe/">Fond d'écran</a></li>
					<li><a  href="../../../../drole/">Images drôles</a></li>
					<li><a href="#"><font class="active">Admin</font></a></li>					
					<li><a href="../../../../zik/">Zik</a></li>
				</ul>
			</div>
<!-- ---------------------------------------------------- -->
<div id="main" class="rond">		
<!-- on affiche un formulaire permettant d'uploader une image -->
<br /><hr />
<div class="table1 rond" >
<!--<div>
Retour à la partie admin :<br /><br />
</div>-->
	<form action="index.html" method="post" border="0"><br />
	<input type="hidden" value="80" name="style" id="style" />
	<p><input type="submit" name="envoi" id="envoi" value="Retour à la partie admin" /></p><br />
	</form>

<br />
</div>
<br />
<div class="table2 rond" >
<!-- on affiche toutes les miniatures muniesd'un lien permettant de supprimer les images -->
Un clic sur la photo pour la supprimer de la galerie  :<br /><hr />

<?php
// l'étude de cette portion de code a déjà été faite plus haut
$tableau = array();
$dossier = opendir ("../../" .$sup. "/mini/");
while ($fichier = readdir ($dossier)) {
	if ($fichier != '.' && $fichier != '..' && $fichier != 'supprime.php') {
		$tableau[] = $fichier;
	}
}
closedir ($dossier);

$nbcol=3;
$nbpics = count($tableau);

if ($nbpics != 0) {
	echo '<table>';
	for ($i=0; $i<$nbpics; $i++){
		if($i%$nbcol==0) echo '<tr>';
		// on affiche un lien sur la photo permettant de la supprimer
		echo '<td class="cadre rond"><a href="supprime.php?del=' . $tableau[$i] . '"><img src="../../' .$sup. '/mini/' . $tableau[$i] . '" alt="Image" /></a></td>';
		if($i%$nbcol==($nbcol-1)) echo '</tr>';
	}
	echo '</table>';
}
else echo 'Aucune image à afficher';

// si un message d'erreur est défini, on l'affiche
if (isset($erreur)) echo '<br />' , $erreur;
?>
</div>
		</div>
<br /><br />



</div>
<!-- ---------------------------------------------------- -->	
			<div id="footer" class="rond">
				<div class="footer">Designed By : Padymen, V6.0</div>	
			</div>
<!-- ---------------------------------------------------- -->	
 
</div>  

</body>
</html>
Modérateur
Pour la concaténation : http://www.phpdebutant.org/article55.php

Pour ton problème, qu'y a-t-il dans la variable $sup ?

../../" .$sup. "/mini/

donne
../..//mini/

supprime plutôt le slash juste avant mini et rajoutes en dans ta variable $sup a la fin. Tu auras :
../../" .$sup. "mini/

avec par exemple $sup qui vaut
dossier/

si sup est vide ça affichera :
../../mini/

si sup est plein ça affichera :
../../dossier/mini/
Bonjour _laurent et merci de ta réponse,
j'ai donné le code complet juste au dessus, j'ai essayé ce que tu me conseillais j'ai changé
$sup = $_POST["sup"];
par
 $sup = $_POST["sup/"];
mais l'erreur reste la même
Modérateur
Et est-ce que tu as remplacé
../../" .$sup. "/mini/

par
../../" .$sup. "mini/

partout ?
Modifié par _laurent (28 Mar 2012 - 16:52)
Modérateur
Oula je pars en live désolé.

$sup = $_POST["sup"];

va récupérer le contenu posté via la variable nommée "sup"
Si tu mets
$sup = $_POST["sup/"];

tu changes juste le nom de la variable !
Modérateur
Je dois être vraiment fatigué, je n'arrive pas du tout à voir où est-ce que sup récupère une valeur avant d’être envoyée...
désolé, j'ai du m'absenter !
re, tu ne peux pas le voir dans ce code ci, c'est sur la page qui fait appel à la page dont le code est donné plus haut, mais si tu veux voici le code demandé, pour être plus clair index.php fait appel à supprime.php (dont j'ai donné le code précédemment) et voici donc index.php :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr-FR">
<head>
  <meta charset="UTF-8">
	<title>Pascalhome admin</title>
		<link rel="stylesheet" type="text/css" media="screen" href="../css/accueil.css">
		<link rel="stylesheet" type="text/css" media="screen" href="../css/menu.css">
		<link rel="stylesheet" type="text/css" media="screen" href="../css/admin.css">
		<link rel="stylesheet" type="text/css" media="screen" href="../css/images_zik.css">
		<link rel="stylesheet" type="text/css" media="screen" href="../highslide/highslide.css" />		 
		<script type="text/javascript" src="../highslide/highslide.js"></script>     
		<script type="text/javascript" language="javascript" src="../js/script.js"></script>	
		<link rel="shortcut icon" href="../images/55.ico">
		<script src="../script/jquery.js" type="text/javascript"></script>       <!-- fond d'ecran extensible-->
		<script src="../script/background.js" type="text/javascript"></script>       <!-- fond d'ecran extensible-->  

</head>



<body>


<!-- ---------------------------------------------------- -->

  
  	<div id="centrale" class="rond">
<!-- ---------------------------------------------------- -->
		<div id="entete" class="rond">
			<div id="header" class="rond">	<!-- Start Logo--> 					
					<div id="logo_title">

						  Pascalhome admin
					</div><!-- End Logo -->						
			</div><br />
		</div>
<!-- ---------------------------------------------------- -->
			<div id="menu" class="rond">
				<ul>
					<li><a href="../../../../">Accueil</a></li>
<!-- 					<li><a href="phenix/">Agenda</a></li> -->
					<li><a href="../../../../citations/">Citations</a></li>
						<li><a  href="../../../../fe/">Fond d'écran</a></li>				
					<li><a  href="../../../../drole/">Images drôles</a></li>
						<li><a  href="#"><font class="active">Admin</font></a></li>
					<li><a href="../../../../zik/">Zik</a></li>
				</ul>
			</div>
<!-- ---------------------------------------------------- -->
<div class="table3 rond" >
<!--<div>
Retour à la galerie :<br /><br />
</div>-->
	<form action="../../index.php" method="post" border="0"><br />
	<input type="hidden" value="80" name="style" id="style" />
	<p><input type="submit" name="envoi" id="envoi" value="Retour à la galerie" /></p><br />
	</form>

<br />
</div>
<!-- ---------------------------------------------------- -->
<!-- ---------------------------------------------------- -->
<div id="main" class="rond"><br />
	<table >
		<tr>
			<td class="cadre rond">
				<div >
					<!--<h1>Insertion</h1>-->
					<p>Insertion d'images</p>
						<form action="maintenance/insert/index.html" method="post" border="0"><br />
						<label for='service'></label>
						<select id='inserts' name='insert' class='formStd' >	
						<option value="drole">drole</option>
						<option value="fe">fond d ecran</option>
						</select>
						<input class="button" type="submit" value="valider">
						</form>
				</div>	
			</td>
	<!-- ****************************************************************** colonne suivante --->
			<td class="cadre rond">
				<div >
					<!--<h1>Suppression</h3>-->
					<p>Renommer les nouvelles images</p>
						<form action="maintenance/renomme.php?id= ? " method="post" border="0"><br />
						<label for='service'></label>
						<select id='renommes' name='renomme' class='formStd' >	
						<option value="drole">drole</option>
						<option value="fe">fond d ecran</option>
						</select>
						<input class="button" type="submit" value="valider">
						</form>
				</div>	
			</td>		
		
	<!-- ****************************************************************** colonne suivante --->	
			<td class="cadre rond">
				<div >
					<!--<h1>Miniatures</h3>-->
					<p>Création de miniatures</p>
						<form action="maintenance/mini.php?id= ? " method="post" border="0"><br />
						<label for='service'></label>
						<select id='minis' name='mini' class='formStd' >	
						<option value="drole">drole</option>
						<option value="fe">fond d ecran</option>
						</select>
						<input class="button" type="submit" value="valider">
						</form>
				</div>	
			</td>
			

	<!-- ****************************************************************** colonne suivante --->		
			<td class="cadre rond">
				<div >
					<!--<h1>Suppression</h3>-->
					<p>Suppression d'images et de miniatures</p>
						<form action="maintenance/supprime.php" method="post" border="0"><br />
						<label for='service'></label>
						<select id='sups' name='sup' class='formStd' >	
						<option value="drole">drole</option>
						<option value="fe">fond d ecran</option>
						</select>
						<input class="button" type="submit" value="valider">
						</form>
				</div>	
			</td>
				
	<!-- ****************************************************************** colonne suivante --->
	

		</tr>
	</table>
</div>
			<div id="footer" class="rond">
				<div class="footer">Designed By : Padymen, V6.0</div>	
			</div>	

	

<!-- ******************************************************************************************************************************* fin menu selection --->	
</div>
</body>
</html>

Modérateur
A ok merci. C'était surtout pour comprendre plus que pour le code Smiley smile

C'est donc dans les
value="drole"
etc...

qu'il faut mettre
value="drole/"

et du coup mettre
echo '<td class="cadre rond"><a href="supprime.php?del=' , $tableau[$i] , '"><img src="../..[b]/".$sup."mini[/b]/' , $tableau[$i] , '" alt="Image" /></a></td>';

dans la page supprime comme dit plus haut.

après je vois pas de soucis... il te met quoi comme erreur (une fois ça réglé) ?
Modifié par _laurent (28 Mar 2012 - 18:45)
re _laurent et merci de l'interêt que tu porte à mon souci,
alors j'ai suivi ton conseil et il m'affiche de nouveau le "alt" soit "image" à la place de m'afficher l'image par elle même mais j'essaie tout de même de cliquer sur ce "image" histoire de voir ce qu'il me fait et de nouveau le même message d'erreur qu'avant, soit :

Warning: opendir(../..//mini/) [function.opendir]: failed to open dir: No error in C:\xampp\htdocs\liste\admin\maintenance\supprime.php on line 169

Warning: readdir(): supplied argument is not a valid Directory resource in C:\xampp\htdocs\liste\admin\maintenance\supprime.php on line 170

Warning: closedir(): supplied argument is not a valid Directory resource in C:\xampp\htdocs\liste\admin\maintenance\supprime.php on line 175
c'est fou mais si j'écris :

		echo '<td class="cadre rond"><a href="supprime.php?del=' . $tableau[$i] . '"><img src="../../' .$sup. '/mini/' . $tableau[$i] . '" alt="Image" /></a></td>';


il m'affiche l'image mais si j'écris :

echo '<td class="cadre rond"><a href="supprime.php?del=' . $tableau[$i] . '"><img src="../../' .$rep.  'mini/' . $tableau[$i] . '" alt="Image" /></a></td>';


il m'écris le "alt" soit "image" dans les deux cas, même en ayant modifié
value="drole/"
dans l'index.php
et dans les deux cas l'erreur reste la même si j'essaie de supprimer
Modérateur
t'as mis $rep dans la seconde c'est normal ?

Essais juste d'afficher la variable sans les balises et en la concaténant :

echo $sup;

echo '../../' .$sup. '/mini/' .$tableau[$i];


tu verras ce qui passe comme ca.

Mais du coup si ca marche.. il faudra juste faire une vérification de sup pour etre sur que ca n'affiche pas les ../..//mini
en faisant cela, il m'écrit ( pas d'affichage d'images) :
../..//mini/001.jpg../..//mini/002.jpg../..//mini/003.jpg../..// etc etc ...
Pages :