Afficher image de la base de données php [Résolu/Fermé]

Signaler
Messages postés
20
Date d'inscription
mercredi 18 mai 2016
Statut
Membre
Dernière intervention
23 mai 2016
-
Messages postés
20
Date d'inscription
mercredi 18 mai 2016
Statut
Membre
Dernière intervention
23 mai 2016
-
Salut,
Comment afficher une image de base de donnée de type longblob,
j'ai essayé ce code mais l'image ne s'affiche pas
Merci d'avance si vous trouvez la solution!

la base est :
CREATE TABLE IF NOT EXISTS `produits` (
  `id` int(30) NOT NULL AUTO_INCREMENT,
  `Nom_de_produit` varchar(50) NOT NULL,
  `img` longblob NOT NULL,
  `description` text NOT NULL,
  `prix` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ;

interface affichage est :
<?php
// Sous WAMP (Windows)
$bdd = new PDO('mysql:host=localhost;dbname=base_phoenixkids;charset=utf8', 'root', '');


$reponse = $bdd->query('SELECT * FROM produits');

// On affiche chaque entrée une à une
while ($produits = $reponse->fetch())
{
?>
    <table>
  <th><img width="200px" height="200px" src="<?php echo $produits['img'];?>"/></th> 
  <th style="color:#0404B4"><?php echo $produits['prix']; ?>  Dinars</th>
    <th ><span style="color:orange"><?php echo $produits['Nom_de_produit']; ?></span></br>
    
    <?php echo $produits['description']; ?></th>
 
   </table>
<?php
}

$reponse->closeCursor(); // Termine le traitement de la requête

?>


EDIT : Ajout des BALISES DE CODE (jordane)

2 réponses

Messages postés
20
Date d'inscription
mercredi 18 mai 2016
Statut
Membre
Dernière intervention
23 mai 2016
2
le code corrige est :
interface_insertion.php
<html>
  <head>
    <title>insertion de données</title>
  </head>
<body>
<div>
<form name="insertion" action="interface_insertion.php" method="POST" enctype="multipart/form-data"  >
  <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">
      <td>Nom de produit</td>
      <td><input type="text" name="Nom_de_produit"></td>
    </tr>
    <tr align="center">
      <td>Prix</td>
      <td><input type="text" name="prix"></td>
    </tr>
    <tr align="center">
      <td>Description</td>
      <td><textarea type="text" name="description"></textarea></td>
    </tr>
    <tr align="center">
      <td>Inserer image</td>
      <td><input type="file" name="img"></td>
    </tr>
   
    <tr align="center">
      <td colspan="2"><input type="submit" value="insérer" name="inserer"></td>
    </tr>
 
  </table>
</form>
</div>


</body>
</html>

<?php


  


//connexion à la BDD
require_once "cnxBdd.php";
 
 if(isset($_POST['inserer'])) {
if (isset($_POST['Nom_de_produit']) AND isset($_POST['prix']) AND isset($_POST['description']) AND isset($_FILES['img']['tmp_name'] )) 

 extract($_POST);
 extract($_FILES);
 if (!empty($Nom_de_produit) && !empty($prix) && !empty($description) && !empty($img))
 
 
{
$req = $bdd->prepare("INSERT INTO produits( Nom_de_produit, prix, description,img ) VALUES(?,?,?,?)"); 
     
$req->execute(array(
 $_POST['Nom_de_produit'] ,
 $_POST['prix'],
 $_POST['description'],
 $_FILES['img']['tmp_name']
 
 ));
    echo 'Le produit a bien été ajouté !';
}
 else 
 {
  echo "Vous n'aver pas remplit tous les champs ";
  } 
 }
?>


<style>
input[type=text], select {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    display: inline-block;
    border: 1px solid #ccc;
    border-radius: 4px;
    box-sizing: border-box;
}

input[type=submit] {
    width: 100%;
    background-color: #4CAF50;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}

input[type=submit]:hover {
    background-color: #45a049;
}

div {
    border-radius: 5px;
    background-color: #f2f2f2;
    padding: 40px;
}
</style>



interface d'affichage
produit_educatifs.php :


<div id="tableau_produit">
<?php



//Affichage des erreurs php
error_reporting(E_ALL);

//connexion à la BDD
require_once "cnxBdd.php";

//Requete et affichage:
try{
$reponse = $bdd->query('SELECT * FROM produits');
}catch(Exception $e){ //en cas d'erreur dans la requete
echo "Erreur dans la requete !".$e->getMessage();
}
// On affiche chaque entrée une à une
while ($produits = $reponse->fetch()) {

echo "<table>
<tbody>
<tr>
<td><img widtd='200px' height='200px' src='data:image/jpeg;base64,".base64_encode($produits['img'])."'></img></td>
<td style='color:#0404B4'>".$produits['prix']." Dinars</td>
<td ><span style='color:orange'>".$produits['Nom_de_produit']."</span></br>".$produits['description']."</td>
</tr>
</tbody>
</table>";
}

$reponse->closeCursor(); // Termine le traitement de la requête

?>




</div>


meme probleme pas d'affichage d'image
et j'ai pas utiliser file_get_contents


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 77665 internautes nous ont dit merci ce mois-ci

Messages postés
28971
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juin 2020
2 486

meme probleme pas d'affichage d'image
et j'ai pas utiliser file_get_contents

Ben.... si tu ne l'as pas utilisé ... alors qu'on te dit de le faire ....... ne viens pas nous voir pour nous dire que ça ne marche pas.......!!!!!
On t'a expliqué quoi mettre ... je t'ai donné un lien qui donne un exemple ..... tu n'as plus qu'à lire ce qu'on te marque et à l'appliquer !!
Messages postés
20
Date d'inscription
mercredi 18 mai 2016
Statut
Membre
Dernière intervention
23 mai 2016
2
merci beaucoup de vos aides,
Le probléme est dans l'insertion,
et ce code l'affichage est juste

echo "<img src='data:image/jpeg;base64".base64_encode($produits['img'])."'>";
Messages postés
28971
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juin 2020
2 486
Bonjour,

1 - à l'avenir, merci d'utiliser les BALISES DE CODE lorsque tu postes du code sur le forum.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

2 - Evite de copier/coller le code de connexion à ta bdd dans tous tes codes .... places le dans un fichier à part que tu n'auras qu'à inclure dans tes pages.
de plus, Pour la connexion à la BDD... utilises le code suivant : (ça te permettra d'afficher les éventuelles soucis de requêtes comme dans ta question précédente)
<?php
//Fichier de connexion à la bdd : cnxBdd.php
 try{
   $bdd = new PDO("mysql:host=localhost;dbname=base_phoenixkids;charset=UTF8", 'root', '');
   $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //pour activer l'affichage des erreurs pdo
} catch(PDOException $e){
     echo 'ERROR: ' . $e->getMessage();
} 


3 - Pour afficher une image issue d'un champ blob, il faut utiliser la syntaxe suivante :
echo "<img src='data:image/jpeg;base64".base64_encode($produits['img'])."'>";


Ce qui, une fois ton code remis en forme avec l'include du fichier de connexion à la BDD donnerait :
<?php
//Affichage des erreurs php
error_reporting(E_ALL);

//connexion à la BDD
require_once "cnxBdd.php";

//Requete et affichage:
try{
  $reponse = $bdd->query('SELECT * FROM produits');
}catch(Exception $e){ //en cas d'erreur dans la requete
  echo "Erreur dans la requete !".$e->getMessage();
}
// On affiche chaque entrée une à une
while ($produits = $reponse->fetch()) {

 echo "<table>
        <tbody>
        <tr>
         <td><img widtd='200px' height='200px' src='data:image/jpeg;base64,".base64_encode($produits['img'])."'></img></td> 
         <td style='color:#0404B4'>".$produits['prix']." Dinars</td>
         <td ><span style='color:orange'>".$produits['Nom_de_produit']."</span></br>".$produits['description']."</td>
        </tr>
        </tbody>
      </table>";
}

$reponse->closeCursor(); // Termine le traitement de la requête

?>


Cordialement, 
Jordane                                                                 
Messages postés
160
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
3 juin 2016
15
D'abord il manque enctype="multipart/form-data" dans form
ensuite pour récupérer l'image il faut utiliser $_FILE et non pas $_POST
au lieu de mettre $_POST['img'] mets file_get_contents($_FILES['img']['tmp_name'])
Messages postés
20
Date d'inscription
mercredi 18 mai 2016
Statut
Membre
Dernière intervention
23 mai 2016
2 >
Messages postés
160
Date d'inscription
jeudi 19 juin 2014
Statut
Membre
Dernière intervention
3 juin 2016

j'ai ajouter enctype="multipart/form-data" dans form ,
et changer $_POST['img'] par $_FILES['img']['tmp_name']),
l'insresion fonctionne ,
puis j'ai trover dans la BDD dans la colone des img des ficher .bin ,
et méme resultat dans il'interface d'affichage il n ya pas d'affichage des images .
Messages postés
28971
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juin 2020
2 486
Tu peux nous montrer le code corrigé stp ?
Messages postés
28971
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juin 2020
2 486 >
Messages postés
28971
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juin 2020

Tu as bien fais un file_get_contents pour le fichier ?
Messages postés
28971
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juin 2020
2 486 >
Messages postés
28971
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juin 2020