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