Se connecter avec
S'enregistrer | Connectez-vous

Afficher une image stockée dans ma bas de donnée

Dernière réponse : dans Programmation

salut a tous !
je voudrais que les visiteurs de mon site puisseent enregeistrer leur photo dans la base de donnée et ensuite afficher ses photos .
mais je n'arrive pas.
alors je voudrais une aide svp .
merci de bien vouloir m'aider .


NB : rien ne s'affiche duand j'execute le code aperçu .on me met : Vous n avez pas sélectionné d image !

voici mon code :


------------------------------------------------------------------------------------------

image.php
-------------------------------------------------------------------------------------------
  1. <head>
  2. <title>Envoyer une image</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <style type="text/css">
  5. label {
  6. display:block;
  7. width:150px;
  8. float:left;
  9. }
  10. </style>
  11. </head>
  12.  
  13. <body>
  14.  
  15. <?php
  16. if(isset($_POST['validation'])) {
  17.  
  18. //Indique si le fichier a été téléchargé
  19. if(!is_uploaded_file($_FILES['image']['tmp_name']))
  20. echo 'Un problème est survenu durant l opération. Veuillez réessayer !';
  21. else {
  22. //liste des extensions possibles
  23. $extensions = array('/png', '/gif', '/jpg', '/jpeg');
  24.  
  25. //récupère la chaîne à partir du dernier / pour connaître l'extension
  26. $extension = strrchr($_FILES['image']['type'], '/');
  27.  
  28. //vérifie si l'extension est dans notre tableau
  29. if(!in_array($extension, $extensions))
  30. echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg.';
  31. else {
  32.  
  33. //on définit la taille maximale
  34. define('MAXSIZE', 300000);
  35. if($_FILES['image']['size'] > MAXSIZE)
  36. echo 'Votre image est supérieure à la taille maximale de '.MAXSIZE.' octets';
  37. else {
  38. //on se connecte (remplacer les paramètres de connexion)
  39. $connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
  40. $database = mysql_select_db("go&ga") or exit (mysql_error());
  41.  
  42. //récupération des infos saisies
  43. $nom = mysql_escape_string($_POST['nom']);
  44. $description = mysql_escape_string($_POST['description']);
  45.  
  46. //Lecture du fichier. On doit utiliser la fonction mysql_escape_string car les données binaires contiennent des caractères spéciaux.
  47. $image = mysql_escape_string(file_get_contents($_FILES['image']['tmp_name']));
  48.  
  49. //Il ne reste qu'à insérer tout ça dans notre table.
  50. mysql_query("INSERT INTO images(nom, description, img, extension) VALUES('".$nom."', '".$description."', '".$image."', '".$_FILES['image']['type']."')") or exit (mysql_error());
  51. mysql_close();
  52. echo '<h3>L insertion s\'est bien déroulée !</h3>';
  53. }
  54. }
  55. }
  56. }
  57. ?>
  58.  
  59. <h1>Envoyer une image</h1>
  60. <form enctype="multipart/form-data" action="" method="post">
  61. <p>
  62. <label for="nom">Nom : </label><input type="text" name="nom" id="nom" /><br />
  63. <label for="description">Description : </label><textarea name="description" id="description" rows="10" cols="50"></textarea><br />
  64. <label for="image">Image : </label><input type="file" name="image" id="image" /><br />
  65. <label for="validation">Valider : </label><input type="submit" name="validation" id="validation" value="Envoyer" />
  66. </p>
  67. </form>
  68. <form action="galerie.php" method="post">
  69. <p>
  70. <input type="submit" name="validation" value="image" />
  71. </p>
  72. </form>
  73.  
  74. </body>
  75. </html>



--------------------------------------------------------------------------------------
apercu.php

-------------------------------------------------------------------------------------------

  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  3. <title>Document sans titre</title>
  4. </head>
  5.  
  6. <body>
  7.  
  8. <?php
  9. //si nous avons une image
  10. if(!empty($_GET['id_img'])) {
  11.  
  12. //connexion à la base de données
  13. $connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
  14. $database = mysql_select_db("go&ga")or exit (mysql_error());
  15.  
  16. //on sécurise notre donnée
  17. $idImg = intval($_GET['id_img']);
  18.  
  19. //la requète qui récupère l'image à partir de l'identifiant
  20. $apercu = mysql_query("SELECT extension, img FROM images WHERE id_img = ".$idImg) or exit (mysql_error());
  21.  
  22. //si le résultat est différent de 1
  23. if(mysql_num_rows($apercu) != 1)
  24. echo 'L image n existe pas !';
  25. else {
  26. //on stocke les données dans un tableau
  27. $reponse = mysql_fetch_assoc($apercu);
  28. //on indique qu'on affiche une image
  29. header ("Content-type: ".$reponse['extension']);
  30. //on affiche l'image en elle même
  31. echo $reponse['img'];
  32. }
  33. mysql_close();
  34. } else
  35. echo 'Vous n avez pas sélectionné d image !';
  36. ?>
  37.  
  38.  
  39. </body>
  40.  
  41. </html>


-------------------------------------------------------------------------------------------------
galerie.php
--------------------------------------------------------------------------------------------------

  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  3. <title>Document sans titre</title>
  4. </head>
  5.  
  6. <body>
  7.  
  8. <?php
  9. //si nous avons une image
  10. if(!empty($_GET['id_img'])) {
  11.  
  12. //connexion à la base de données
  13. $connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
  14. $database = mysql_select_db("go&ga")or exit (mysql_error());
  15.  
  16. //on sécurise notre donnée
  17. $idImg = intval($_GET['id_img']);
  18.  
  19. //la requète qui récupère l'image à partir de l'identifiant
  20. $apercu = mysql_query("SELECT extension, img FROM images WHERE id_img = ".$idImg) or exit (mysql_error());
  21.  
  22. //si le résultat est différent de 1
  23. if(mysql_num_rows($apercu) != 1)
  24. echo 'L image n existe pas !';
  25. else {
  26. //on stocke les données dans un tableau
  27. $reponse = mysql_fetch_assoc($apercu);
  28. //on indique qu'on affiche une image
  29. header ("Content-type: ".$reponse['extension']);
  30. //on affiche l'image en elle même
  31. echo $reponse['img'];
  32. }
  33. mysql_close();
  34. } else
  35. echo 'Vous n avez pas sélectionné d image !';
  36. ?>
  37.  
  38.  
  39. </body>
  40.  
  41. </html>
Lassé par la pub ? Créez un compte
Expert Programmation

Salut,

Ce n'est pas une bonne idée de stocker l'image directement dans la base de données, il vaut mieux la sauvegarder sur le disque et ne sauvegarder qu'un lien dans ta base de données.

Et ton problème vient du faire que tu mets du code HTML dans ton fichier apercu.php: vu que tu veux afficher l'image, et que tu changes le Content-type, il ne doit y avoir que les données de l'image dedans et rien d'autre

salut merci pour ta disponibilité !
je suis nouveau en php .
vraiment je souhaite que tu me guide mieux .
jai enlevé les code html et j'ai mi : //header ("Content-type: ".$reponse['extension']);

et ca m'affiche ca :Vous n'avez pas sélectionné d'image !
Expert Programmation

Je ne suis pas sûr que tu aies besoin d'avoir un code spécifique... il te suffit juste de passer le paramètre id_img avec l'ID d'une de tes images pour que ça fonctionne.
J'en ai aucune idée des IDs de tes images moi...
Essaie apercu.php?id_img=1

j'ai fait ce que tu as di mais on m'affiche toujours :Vous n'avez pas sélectionné d'image !
de plus il y a une autre petite fenetre qui apparait et la on me di : vous avez choisi d'ouvrir aperçu.php qui est un fichier de type : PHP Script à partir de : http://localhost.com
et juste en bas on met :
ouvrir avec :


quand j'execute tout ca rien ne s'affiche

Bon je vais essayer de vous le reprendre^^
(On dirait que Omar ta abandonner avec lui xD)

Déjà la question c'est plutôt a tu coder toi même tout sa ou ne serait ce pas la l'objet d'un copier coller?

Soit franc, je vais pas te manger. Mais déjà de la je verrais si c'est la peine que je t'explique ou plutôt que je te passe mon adresse pour que je bosse vite fait sur ton problème et te fasse ton site durant mes pause.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde