Insertion image php/mysql

Résolu/Fermé
lionel - 7 mai 2009 à 08:40
Scienti Messages postés 13 Date d'inscription dimanche 7 août 2011 Statut Membre Dernière intervention 11 avril 2012 - 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

Scienti Messages postés 13 Date d'inscription dimanche 7 août 2011 Statut Membre Dernière intervention 11 avril 2012 9
14 mars 2012 à 14:35
Bonjour,

je pense que ce petit tuto devrait répondre à la plus part de vos questions ! ;)

https://webinfobazar.com/upload-dune-image-sur-un-ftp-php-sql/

n'hésitez à poser vos questions si vous en avez et à aller jeter un coup d'oeil aux autres tutos :)
0