IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

image dans une bd


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut image dans une bd
    Bonjour,
    je fais un site vitrine qui doit présenter les articles d'un magasin.
    J'ai décidé de mettre les images dans une base de données.
    Pour le moment j'ai fait un fichier test mais j'ai un probléme, l'image de l'article ne s'affiche pas.
    Ma base de données contient une table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE `images` (
       `id_img` INT NOT NULL AUTO_INCREMENT ,
       `nom` VARCHAR(50) NOT NULL ,
       `desc` VARCHAR(100) NOT NULL ,
       `img` BLOB NOT NULL ,
       `type` VARCHAR(25) NOT NULL ,
       PRIMARY KEY (`id_img`)
    )
    Le premier fichier: traitement.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <html>
    <head>
       <title>Envoyer une image</title>
    </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 chaine à partir du dernier . pour connaître l'extension
                $extension = strrchr($_FILES['image']['name'], '.');
                //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éfini la taille maximale
                    define('MAXSIZE', 300000);        
                    if($_FILES['image']['size'] > MAXSIZE) {
                       echo 'Votre image est supérieure à la taille maximale de '.$maxtaille.' octets';
                    } else {
                        //on se connecte (Remplacer les paramètres de connexion)
                        $connexion = mysql_connect("localhost", "root", "") or die (mysql_error());
                        $database = mysql_select_db("testimage") or die (mysql_error());
                       //Lecture du fichier. On doit utiliser la fonction addslashes 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 VALUES('', '".$_POST[nom]."', '".$_POST[desc]."', '".$image."', '".$_FILES[image][type]."')") or die (mysql_error());
                        mysql_close();
                        echo 'L insertion s est bien déroulée !';
                     }
                  }
              }
          }
       ?>
       <h1>Envoyer une image</h1>
       <form enctype="multipart/form-data" action="traitement.php" method="post">
          Nom:<input type="text" name="nom" size="50" />
          <input type="file" name="image" />
          <input type="submit" name="validation" value="Envoyer" />
       </form>
      <!--sert a lister les images et a faire un lien leur correspondant-->
       <?php
        $connexion = mysql_connect("localhost", "root", "") or die (mysql_error());
        $database = mysql_select_db("testimage") or die (mysql_error());
        $affichage = mysql_query("SELECT id_img, nom, descript FROM images") or die (mysql_error ());
        while($result = mysql_fetch_array($affichage)) {
           echo '<a href="apercu.php?id='.$result[id_img].'">'.$result[nom].'</a>';
        }
        mysql_close();
    ?>
     
    </body>
    </html>
    Le deuxiéme: apercu.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
        if(isset($_GET['id_img'])) {
           $connexion = mysql_connect("localhost", "root", "") or die (mysql_error());
           $database = mysql_select_db("testimage")or die (mysql_error());
     
           $apercu = mysql_query("SELECT id_img, type, img FROM images WHERE id_img = ".$_POST[id_img]) or die (mysql_error ());
           $reponse = mysql_fetch_assoc($apercu);
           if(!$reponse[id_img]) {
              echo 'L image n existe pas !';
           } else {
              header ("Content-type: ".$reponse[type]);
              echo $reponse[img];
           }
        } else {
           echo 'Vous n avez pas sélectionné d image !';
        }
     
    ?>
    <p><img src="apercu.php?id_img=idImage" alt="" /></p>
    Merci de m'aider

  2. #2
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    T'es sûr que tes données sont insérées dans ta BDD ?

    Moi ce qui me pertube, c'est de trouver ça :
    A la place de :

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    oui oui j'ai bien des données insérées dans la base de données quand j'insère les champs se remplissent

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    J'suis assez d'accord avec Chegj... si tu écris


    ca veut dire que "nom" est une variable... or ce n'est pas le cas ;-)

  5. #5
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Je ne suis pas d'accord, nom serait une variable si il avait mis $nom, hors c'est pas le cas.

    De plus la syntaxe $tab[index] est accepté mais l'utilisation de $tab['index']; est vivement conseillé.

  6. #6
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    Perso, je préfère inscrire le chemin dans une chaîne de la table et formater le nom de l'image automatiquement à l'upload coté back-office du style './images/news/image_0001.jpg' et ca fonctionne pas trop mal.

    C'est sûrement pas la meilleure des solutions mais ca tourne bien...

    Bon courage !

  7. #7
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    En fait la je vous ai mis tous mon code source et vous pouvez voir en live que le système fonctionne mais y'a que l'image qu'on voit pas pourtant on a bien une insertion dans la table^^

  8. #8
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Citation Envoyé par kazou Voir le message
    Je ne suis pas d'accord, nom serait une variable si il avait mis $nom, hors c'est pas le cas.

    De plus la syntaxe $tab[index] est accepté mais l'utilisation de $tab['index']; est vivement conseillé.
    Pas dans le cas d'un define()



    Sinon, ce qui me chifonne aussi dans ton code c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><img src="apercu.php?id_img=idImage" alt="" /></p>

  9. #9
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Pas dans le cas d'un define()
    C'est vrais mais ici ce n'était pas le cas, du moins ca ne l'était pas dans son exemple.

  10. #10
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    En fait je veux tout simplement que:
    -l'image puisse être uploader à partir de mon poste
    -de la l'image va sur le serveur et aprés je peux les appeler sur mes pages php.
    Y a t-il une solution meilleur que celle que j'ai proposé?

  11. #11
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    non, le plus simple est de ne garder que le nom de l'image car vu que c'est toi qui défini où se sauvegarde l'image tu connais forcément le chemin pour y accéder ensuite au moment de l'affichage

Discussions similaires

  1. intégrer un fichier image dans une base de donnée?
    Par Lody dans le forum Requêtes
    Réponses: 9
    Dernier message: 16/03/2006, 19h08
  2. [ plugin ] Répertoire d'images dans une webapp
    Par mille_furies dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/03/2004, 15h41
  3. insérer des images dans une bd postgresql
    Par ephet dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/01/2004, 09h18
  4. Peut on mettre une image dans une BD MySQL ?
    Par maddog2032 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 25/07/2003, 16h18
  5. [VB6] [Excel] Insérer une image dans une feuille
    Par mathias dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 09/10/2002, 07h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo