Comment afficher une image dans bdd php/mysql

Bonjour,

je voudrai savoir comment comment je fais pour que quand une personne veut upoader une image (parcourir) dans un champ de la table (de la bdd) par un lien ver l'image sur le pc ou directement sur la table (blob),
et ensuite pouvoir l'afficher sur un page php.

Merci
Configuration: Windows Vista
Internet Explorer 7.0

27 réponses

Résumé de la discussion

Le fil porte sur l’upload d’image via un formulaire et l’affichage en PHP, entre stocker l’image en BLOB ou la conserver sur le serveur et n’enregistrer que son nom. Plusieurs réponses préconisent de stocker les fichiers sur le serveur et d’enregistrer uniquement le nom ou le chemin dans la BDD, puis de reconstruire l’URL lors de l’affichage. Des exemples évoquent move_uploaded_file, la construction du chemin et l’utilisation d’un dossier dédié, mais des problèmes apparaissent fréquemment, comme des chemins faux ou des variables non définies lors de l’affichage. En cas de confusion, certains échanges évoquent aussi des questions de permissions et de format, montrant l’importance de synchroniser emplacement réel et référence en base pour un affichage fiable.

Bobot (l’IA à votre service)
  1. Contributeur
    tu ne serais pas un peu têtu par hasard ?

    moi je laisse tomber, débrouille toi avec la faq ou avec une autre bonne volonté.
    1. enfet c'est pas vraiment une croix rouge

      c'est un truk avec un carre rouge et triangle bleu et un cecle vert mais je penseke le repertoire est bon
      1. Contributeur
        si il y a une croix rouge c'est que l'url est fausse.
        le code ne sert à rien pour le moment, il faut savoir où sont enregistrées les images et où est enregistré le document qui affiche les images.
        comme ça on pourra te dire quelle url il faut utiliser.
        1. non il est bon normalement atend jte remontre le code :

          ajout.php:

          <?php 
          
          include("connect.php");
          
          $description=$_POST["description"]; // on recupere la description
          
          $nom=$_FILES["file"]["name"]; // on recupere le nom de l'image avec son extension
          $taille=$_FILES["file"]["size"]; //optionnelle, mnt vous avez la taille
          
          
              list($name, $ext) = explode(".", $nom);   // on separe le nom de l'image de son extension    
            
            $ext=".".$ext; // on rajoute un . devant l'extention
          
            
          $chemin = "./repertoire/".$nom; // ici c'est l'endroit ou va etre stocker le chemin de votre texte ou image ou autre  ici c'est dans ==> répertoire.
          
          move_uploaded_file($HTTP_POST_FILES["file"]["tmp_name"],$chemin); // on envoie le fichier a l'endroit voulu
          
          mysql_query("INSERT INTO fichier (file, titre, description, taille)  VALUES('$nom','$name','$description', '$taille');"); // et on termine en envoyant les donné dans la base mysql
          echo 'Good Job Sir ';
          
          
          
          mysql_close();
          
          ?>
          
          fichier.php :
          
          
          <?php
            
          include("connect.php");
              
          $date = gmdate("H\hi"); 
          echo $date; // aller je le laisse pour le plaisir de tjs savoir l'heure
          
          ?>
            
           
          <form enctype="multipart/form-data" method="post" action="ajout.php">
            
          <br />
                Image: 
                <input name="file" type="file">
          <br />
          <br />
                Description
          <br /> 
                <textarea name="description">
                </textarea>
              
          <br />     
          <br />
                <input type="submit" value="valider">
             
          </form>
          
          <html>
          <head><title>.:: Enjoy BabY ::.</title></head>
          
          </html>
             
          
          <?php
          
          mysql_close();
          
          ?>
          
          ajout.php :
          
          <?php 
          
          include("connect.php");
          
          $description=$_POST["description"]; // on recupere la description
          
          $nom=$_FILES["file"]["name"]; // on recupere le nom de l'image avec son extension
          $taille=$_FILES["file"]["size"]; //optionnelle, mnt vous avez la taille
          
          
              list($name, $ext) = explode(".", $nom);   // on separe le nom de l'image de son extension    
            
            $ext=".".$ext; // on rajoute un . devant l'extention
          
            
          $chemin = "./repertoire/".$nom; // ici c'est l'endroit ou va etre stocker le chemin de votre texte ou image ou autre  ici c'est dans ==> répertoire.
          
          move_uploaded_file($HTTP_POST_FILES["file"]["tmp_name"],$chemin); // on envoie le fichier a l'endroit voulu
          
          mysql_query("INSERT INTO fichier (file, titre, description, taille)  VALUES('$nom','$name','$description', '$taille');"); // et on termine en envoyant les donné dans la base mysql
          echo 'Good Job Sir ';
          
          
          
          mysql_close();
          
          ?>
          
          

          et ma soeur

          CREATE TABLE `fichier` (
          `id` int(3) NOT NULL auto_increment,
          `file` varchar(25) NOT NULL default '',
          `titre` varchar(25) NOT NULL,
          `description` longtext NOT NULL,
          `taille` varchar(10) NOT NULL default '',
          PRIMARY KEY (`id`)
          ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

          et sa afiiche quand je lmet le afficher.php une icone image sas la metre
          1. Contributeur
            salut,

            c'est que le chemin vers l'image est faux.

            dans quel dossier as-tu enregistré tes images ?

            où se situe le fichier qui affiche l'image ?
            1. g plus lereur mais ca affiche un carre avec une image avec une croix;;;;;;;;.;;;;;;;
              1. Contributeur
                ah ba vi, mais je te fais pas du code clé en main !
                regarde le code, il faut l'adapter !!!

                tu n'as pas de champ 'nom'…
                echo '<li><img scr="repertoire/'.$row['file'].'" /></li>'."\n";
                1. L EREUR C Notice: Undefined index: nom in d:\program files\easyphp1-8\www\pho\afficher.php on line 11
                  1. deja ca conte bien puisque je vois les 6 erreurs des 6 photos ke g uploader

                    mais enfette ca mfer une erreur sur cette ligne echo '<li><img scr="/repertoire/'.$row['nom'].'" /></li>'."\n";
                    1. Contributeur
                      mais il faut ton inclusion de paramètres de connexion !
                      include("connect.php"); 

                      je mets juste le bout de code à corriger…
                      1. creattion de la table:

                        CREATE TABLE `fichier` (
                        `id` int(3) NOT NULL auto_increment,
                        `file` varchar(25) NOT NULL default '',
                        `titre` varchar(25) NOT NULL,
                        `description` longtext NOT NULL,
                        `taille` varchar(10) NOT NULL default '',
                        PRIMARY KEY (`id`)
                        ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
                        1. euh ptit probleme

                          Warning: mysql_query(): Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in d:\program files\easyphp1-8\www\pho\afficher.php on line 2

                          Warning: mysql_query(): A link to the server could not be established in d:\program files\easyphp1-8\www\pho\afficher.php on line 2

                          Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in d:\program files\easyphp1-8\www\pho\afficher.php on line 3

                          merci
                          1. Contributeur
                            ah oui mais ton script est incomplet !
                            si tu veux mettre tes images dans une liste ('<ul>').
                            <?php
                            $result = mysql_query("SELECT * FROM fichier");
                            if( mysql_num_rows( $result ) > 0 )
                            {
                            	echo "<ul>\n";
                            	while( $row = mysql_fetch_assoc( $result ) )
                            	{
                            		echo '<li><img scr="repertoire/'.$row['nom'].'" /></li>'."\n"; 
                            	}
                            	echo "</ul>\n";
                            }
                            ?>
                            1. message derreur:

                              Notice: Undefined variable: nom in d:\program files\easyphp1-8\www\pho\afficher.php on line 7
                              1. Contributeur
                                et c'est quoi le problème ?

                                colles nous le message d'erreur.
                                1. g fer un fichier
                                  afficher.php:

                                  <?php

                                  include("connect.php");

                                  mysql_query("SELECT * FROM fichier");

                                  echo "<p><img scr=\"repertoire/$nom\" /></p>";

                                  mysql_close();

                                  ?>

                                  mais il mdise ke ya un probleme
                                  • 1
                                  • 2