Insertion image php/mysql

Résolu/Fermé
lionel - 7 mai 2009 à 08:40
 Scienti - 14 mars 2012 à 14:35
Bonjour,
j'ai un petit soucis, je veux afficher une galerie d'image mais quand j'éxécute mon fichier galerie.php j'ai un tableau sans image, les image ne ce reconstitut pas, quand je clique dessus j'ai un tas de caractère mais je ne sait pas d'ou vient mon erreur alors je vous met le tout:

entree_image.php:

<head>
       <title>Envoyer une image</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <style type="text/css">
		label {
			display:block;
			width:150px;
			float:left;
		}
	   </style>
   </head>
   <body>
	
<?php
  if(isset($_POST['validation'])) {
	 
	 //Indique si le fichier a été téléchargé
	 if(!is_uploaded_file($_FILES['image']['tmp_name']))
		echo 'Un problème est survenu durant l opération. Veuillez réessayer !';
	 else {
		//liste des extensions possibles    
		$extensions = array('/png', '/gif', '/jpg', '/jpeg');
		
		//récupère la chaîne à partir du dernier / pour connaître l'extension
		$extension = strrchr($_FILES['image']['type'], '/');
		
		//vérifie si l'extension est dans notre tableau            
		if(!in_array($extension, $extensions))
			echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg.';
		else {         

			//on définit la taille maximale
			define('MAXSIZE', 300000);        
			if($_FILES['image']['size'] > MAXSIZE)
			   echo 'Votre image est supérieure à la taille maximale de '.MAXSIZE.' octets';
			else {
				//on se connecte (remplacer les paramètres de connexion)
				$connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
				$database = mysql_select_db("vehicules_neufs") or exit (mysql_error());
				
				//récupération des infos saisies
				$nom = mysql_escape_string($_POST['nom']);
				$description = mysql_escape_string($_POST['description']);
				
				//Lecture du fichier. On doit utiliser la fonction mysql_escape_string car les données binaires contiennent des caractères spéciaux.
				$image = mysql_escape_string(file_get_contents($_FILES['image']['tmp_name']));
				
				//Il ne reste qu'à insérer tout ça dans notre table.
				mysql_query("INSERT INTO images(nom, description, img, extension) VALUES('".$nom."', '".$description."', '".$image."', '".$_FILES['image']['type']."')") or exit (mysql_error());
				mysql_close();
				echo '<h3>L insertion s\'est bien déroulée !</h3>';
			 }
		  }
	  }
  }
?>
	
	<h1>Envoyer une image</h1>
	<form enctype="multipart/form-data" action="entree_nouveau_vehicule.php" method="post">
		<p>
			<label for="nom">Nom : </label><input type="text" name="nom" id="nom" /><br />
			<label for="description">Description : </label><textarea name="description" id="description" rows="10" cols="50"></textarea><br />
			<label for="image">Image : </label><input type="file" name="image" id="image" /><br />
			<label for="validation">Valider : </label><input type="submit" name="validation" id="validation" value="Envoyer" />
		</p>
	</form>
    <form action="galerie.php" method="post">
    <p>
    <input type="submit" name="validation" value="image" />
    </p>
    </form>

</body>




galerie.php
<head>
       <title>Ma galerie d'images</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <style type="text/css">
		body {
			width: 95%;
		}
			
		div {
			width: 22%;
			float: left;
			text-align: center;
			border: 1px solid black;
			margin: 5px;
			padding:  5px;
		}
			
		p {
			text-align: left;
		}
			
		a {
			color: #000000;
			text-decoration: none;
		}
	   </style>
   </head>
   <body>
	
	<h1>Ma galerie d'images</h1>
	
	<?php
	    $connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
	    $database = mysql_select_db("vehicules_neufs") or exit (mysql_error());
	    
	    $affichage = mysql_query("SELECT id_img, nom, description FROM images") or exit (mysql_error());
	    while($result = mysql_fetch_assoc($affichage)) {
	       
		echo '<div>';
		echo '<a href="apercu.php?id_img='.$result['id_img'].'"><img src="apercu.php?id_img='.$result['id_img'].'" alt="'.$result['nom'].'" title="'.$result['nom'].'" /></a>';
		echo '<p>Description : '.$result["description"].'</p>';
		echo '</div>';
	    }
	    mysql_close();
	?>


apercu.php
<?php
//si nous avons une image
if(!empty($_GET['id_img'])) {

//connexion à la base de données
$connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
$database = mysql_select_db("vehicules_neufs")or exit (mysql_error());

//on sécurise notre donnée
$idImg = intval($_GET['id_img']);

//la requète qui récupère l'image à partir de l'identifiant
$apercu = mysql_query("SELECT extension, img FROM images WHERE id_img = ".$idImg) or exit (mysql_error());

//si le résultat est différent de 1
if(mysql_num_rows($apercu) != 1)
echo 'L image n existe pas !';
else {
//on stocke les données dans un tableau
$reponse = mysql_fetch_assoc($apercu);
//on indique qu'on affiche une image
header ("Content-type: ".$reponse['extension']);
//on affiche l'image en elle même
echo $reponse['img']['extension'];
}
mysql_close();
} else
echo 'Vous n avez pas sélectionné d image !';
?>



j'ai suivis un tutorial et pourtant je pense l'avoir bien suivis mais j'ai du faire une erreur je ne sais où.



Merci d'avance.
Cordialement lionel
A voir également:

41 réponses

Moi j'étais passé en LONGBLOG parce qu'il me sortait une erreur, mon image était trop grosse (80k). Mais si ton image était trop grosse, elle ne serait pas enregistrée.
Peux-tu :
1-redonner le code du apercu.php tel qu'il est maintenant ?
2-insérer une nouvelle image de petite taille (< 50k) et essayer de la visualiser.
0
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>

<?php
//si nous avons une image
if(!empty($_GET['id_img'])) {

//connexion à la base de données
$connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
$database = mysql_select_db("vehicules_neufs")or exit (mysql_error());

//on sécurise notre donnée
$idImg = intval($_GET['id_img']);

//la requète qui récupère l'image à partir de l'identifiant
$apercu = mysql_query("SELECT extension, img FROM images WHERE id_img = ".$idImg) or exit (mysql_error());

//si le résultat est différent de 1
if(mysql_num_rows($apercu) != 1)
echo 'L image n existe pas !';
else {
//on stocke les données dans un tableau
$reponse = mysql_fetch_assoc($apercu);
//on indique qu'on affiche une image
header ("Content-type: ".$reponse['extension']);
//on affiche l'image en elle même
echo $reponse['img']['extension'];
}
mysql_close();
} else
echo 'Vous n avez pas sélectionné d image !';
?>


</body>
0
désolé je l'ai retirer le extension il n'y est plus et sa marche toujours pas


<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>

<?php
//si nous avons une image
if(!empty($_GET['id_img'])) {

//connexion à la base de données
$connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
$database = mysql_select_db("vehicules_neufs")or exit (mysql_error());

//on sécurise notre donnée
$idImg = intval($_GET['id_img']);

//la requète qui récupère l'image à partir de l'identifiant
$apercu = mysql_query("SELECT extension, img FROM images WHERE id_img = ".$idImg) or exit (mysql_error());

//si le résultat est différent de 1
if(mysql_num_rows($apercu) != 1)
echo 'L image n existe pas !';
else {
//on stocke les données dans un tableau
$reponse = mysql_fetch_assoc($apercu);
//on indique qu'on affiche une image
header ("Content-type: ".$reponse['extension']);
//on affiche l'image en elle même
echo $reponse['img'];
}
mysql_close();
} else
echo 'Vous n avez pas sélectionné d image !';
?>


</body>
0
Franchement, depuis le début je me tue à te répéter que ta ligne echo $reponse['img']['extension']; est incorrecte. Il faut echo $reponse['img'].
Je le dis depuis mon premier message, relis-le.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
encore des messages qui se croisent ...
Mais il ne faut pas le extension, ça c'est sûr
0
je l'ai retirer depuis le début sur le premier copie de apercu je me suis planter de fichier j'ai voulu aller trop vite désolé
0
Et l'essai avec une nouvelle image pas trop grosse ?
0
toujours de même
0
Avec quoi écris-tu ton script ? Notepad++ ? ou quel autre éditeur ?
0
adobe dreamweaver pourquoi
0
certains éditeurs ajoutent des caractères invisibles au début des fichiers. Et comme ils sont avant le <?php, ils empêchent les headers de marcher. Je ne connais pas dreamweaver
Peux-tu ouvrir ton script apercu.php avec le simple bloc-notes du PC puis l'enregistrer en faisant bien attention de l'enregistrer avec le codage ANSI
0
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>

<?php
//si nous avons une image
if(!empty($_GET['id_img'])) {

//connexion à la base de données
$connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
$database = mysql_select_db("vehicules_neufs")or exit (mysql_error());

//on sécurise notre donnée
$idImg = intval($_GET['id_img']);

//la requète qui récupère l'image à partir de l'identifiant
$apercu = mysql_query("SELECT extension, img FROM images WHERE id_img = ".$idImg) or exit (mysql_error());

//si le résultat est différent de 1
if(mysql_num_rows($apercu) != 1)
echo 'L image n existe pas !';
else {
//on stocke les données dans un tableau
$reponse = mysql_fetch_assoc($apercu);
//on indique qu'on affiche une image
header ("Content-Type: ".$reponse['extension']);
//on affiche l'image en elle même
echo $reponse['img'];
}
mysql_close();
} else
echo 'Vous n avez pas sélectionné d image !';
?>


</body>
</html>
0
Je n'avais même pas remarqué depuis le message 25 ...
Ça n'a AUCUNE chance de marcher.
Il faut faire comme dans ton premier script : RIEN DU TOUT avant le premier <?php ni après le ?>
0
a ok merci beaucoup j'ai compris enfin
0
Ce que je n'ai pas compris moi, c'est pourquoi tu as ajouté plein de trucs sans rien dire jusqu'au message 24 ? La correction que je t'avais donnée ce matin à 9h40 était la bonne.
0
salu,
Oui si tu veux je te passe la solution que j'ai utilisé, donne moi ton e-mail et je te l'envoie
0
Oui j'ai une solution, laisse ton e-mail mais tu veux juste savoir comment les insérer ou aussi pour les afficher
si tu répond avant 18h je t'envérai sa aujourd'hui
0
misam Messages postés 31 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 25 juin 2009 2
17 juin 2009 à 17:13
Re Bonjour,
j'ai réussi à résoudre mon problème
MAIS j'ai un nouveau problème, je souhaite recuperer toute les photos de mon repertoire qui ont leurs nom qui commencent de la même manière que ma variable que j'ai récupéré
Exemple :

ma variable : $nom='elephant'
Je veux donc récupérer toutes le photos qui ont leur nom qui commence par 'elephant' ('elephant2.jpg' 'elephant1.jpg' 'elephant23.jpg')
0
Bonjour,
J'ai aujourd'hui le même pb que toi lionel.
Serait-il possible que tu postes la solution à ce pb ce qui permettra d'en faire bénéficier les autres aussi stp.
Merci
0
msi79 Messages postés 499 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023
2 juin 2011 à 01:12
lionel pardon donne moi la solution.
soulzana@yah00.fr
0