Bonsoir,

je ne sais pas si ce sujet est bien placé, et pour tout avouer, c'est la première fois que je me sers de votre forum. Je me tourne vers vous car je coince sur un problème que je vois de façon récurrente dans vos topic, mais je ne trouve pas de solution a mon problème.
Je travail sur la réalisation d'une plateforme de commande, et pour ce faire, je cherche a afficher une liste de produit avec leurs photos, leurs nom, leurs proprio, et leurs prix. J'ai donc créer une table sur ma base de donnée qui récupère les image des articles en question sous forme de blob afin qu'il puissent être lier aux différents article.
Le stockage passe très bien, seulement une fois l'extraction faite, je n'arrive pas a afficher mes produit dans la page et je me retrouve confronté au message d'erreur "l'image.... ne peut être affichée car elle contient des erreur" sur un fond de page gris/noir.

Afin de dissocier les différents code au maximum, je me sert des procédure stockée et des fonction sql pour faire toute mes requetes sur la base de donnée. Et ces procédure sont appelée via mes fonctions php traitant les affichage d'article. Pourriez vous s'il vous plaît me donner quelques conseil pour résoudre mon problème car la je coince depuis 3 jour sur ce problème et faut vraiment que j'arrive a trouver une solution???

Voici les différentes partie de code agissant.
* page "produit.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
59
60
61
62
63
64
65
66
67
68
69
70
 
<?php
session_start();
if(isset($_SESSION["username"]) && isset($_SESSION["password"])){
?>
<!doctype html>
<html lang="fr">
    <head>
        <title>Les Produit du Terroir </title>
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <!-- <meta http-equiv="content-type" content="text/html; charset=utf-8"/>-->
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
 
        <link rel="apple-touch-icon" href="apple-touch-icon.png">
 
        <!-- style bootstrap -->
        <link rel="stylesheet" href="htmlTemplate/css/bootstrap.css">
 
        <!-- style customiz� -->
        <link rel="stylesheet" href="htmlTemplate/css/normalize.css">
        <link rel="stylesheet" href="htmlTemplate/css/mise_en_page_generale.css">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
    </head>
 
    <!-- Copyright DWE64  -->
    <body>
        <header class="container" id="header">
            <nav class="navbar">
                <a href="index.php">accueil</a>
                <a href="fournisseur.php">Nos partenaires</a>
                <a href="produit.php">Nos Produits</a>
                <a href="contact.php">Nous contacter</a>
            </nav>
            <div name="iconeEnregistrement" class="container">
                <p>
                    <ul id="connexion" class="boutonConnexion">
                        <li><a href="profil.php"><img src="htmlTemplate/img/iconeMenu/user.png" id="iconeConnexion"/></a>
                        <li><a href="fichierGestionPhp/deconnexion.php"><img src="htmlTemplate/img/iconeMenu/logout.png" id="iconeConnexion"/></a></li>
                    </ul>
                </p>
            </div>
        </header>
 
        <section class="container" id="section">
            <aside class="container" id="legume">
 
                <h1 id="titreAsideLegume"> Nos légumes du Terroir</h1>
                <div class="container" id="listeProduits">
                    <?php
                    require "/fichierGestionPhp/RequeteSql.Class.php";
                    $afficherInfoProduit= new RequeteSql();
                    $afficherInfoProduit->afficherArticleCategorieLegume();
                    ?>
 
 
                </div>
            </aside>
        </section>
        <footer class="container" id="footer">
        </footer>
        <script src="htmlTemplate/js/vendor/jquery-3.2.1.min.js"></script>
        <script src="htmlTemplate/js/vendor/modernizr-3.5.0.min.js"></script>
        <script src="fichierGestionJs/affichageArticle4.js"></script>
        <script src="fichierGestionJs/ajoutPanier.js"></script>
    </body>
</html>
<?php }else{
    header("Location:/plateformeMarechaux/index.php?connexionRequise");
}?>


*page "profil.php" qui permet la saisie de produit:
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
 
<?php
session_start();
 if(isset($_SESSION["username"]) && isset($_SESSION["password"])){
?>
<!doctype html>
<html lang="fr">
    <head>
        <title>Les Produit du Terroir </title>
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
 
        <link rel="apple-touch-icon" href="apple-touch-icon.png">
 
        <!-- style bootstrap -->
        <link rel="stylesheet" href="htmlTemplate/css/bootstrap.css">
 
        <!-- style customiz� -->
        <link rel="stylesheet" href="htmlTemplate/css/normalize.css">
        <link rel="stylesheet" href="htmlTemplate/css/mise_en_page_generale.css">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
 
    </head>
 
    <!-- Copyright DWE64  -->
    <body>
        <header class="container" id="header">
            <nav class="navbar">
                <a href="index.php">accueil</a>
                <a href="fournisseur.php">Nos partenaires</a>
                <?php if(isset($_SESSION["username"]) && isset($_SESSION["password"])){?>
                <a href="produit.php">Nos Produits</a>
                <?php }?>
                <a href="contact.php">Nous contacter</a>
            </nav>
            <div name="iconeEnregistrement" class="container">
                <p>
 
                    <ul id="connexion" class="boutonConnexion">
                        <li><a href="profil.php"><img src="htmlTemplate/img/iconeMenu/user.png" id="iconeConnexion"/></a>
                        <li><a href="fichierGestionPhp/deconnexion.php"><img src="htmlTemplate/img/iconeMenu/logout.png" id="iconeConnexion"/></a></li>
                    </ul>
 
                </p>
            </div>
        </header>
 
        <section class="container" id="section">
            <aside class="container">
                <div class="container" id="listeProduits">
 
 
                    <form action="fichierGestionPhp/gestionArticle.php" method="POST" enctype="multipart/form-data">
                        <p>
                            <label for="nomArticle" class="texteP">Nom article</label>
                            <input type="text" placeholder="Nom" name="nomArticle" id="nomArticle"/>
                        </p>
                        <div>
                            <label for="fruit/legume">fruits/legume</label>
                            <input type="radio" id="legume" name="typeProduit" value="1" checked/>
                              <label for="viande">Viande</label>
                              <input type="radio" id="viande" name="typeProduit" value="2"/>
                              <label for="charcuterie">Charcuterie</label>
                              <input type="radio" id="charcuterie" name="typeProduit" value="3"/>
                              <label for="fromage">Fromage</label>
                              <input type="radio" id="fromage" name="typeProduit" value="4"/>
                              <label for="boulangerie">Boulangerie</label>
                              <input type="radio" id="boulangerie" name="typeProduit" value="5"/>
                              <label for="viennoiserie">Viennoiserie</label>
                              <input type="radio" id="viennoiserie" name="typeProduit" value="6"/>
                              <label for="epicerie">Epicerie</label>
                              <input type="radio" id="epicerie" name="typeProduit" value="7"/>
                              <label for="poisson">Poissonnerie</label>
                              <input type="radio" id="poisson" name="typeProduit" value="8"/>
                          </div>
                        <p>
                            <label for="imgArticle" class="texteP">Photo du produit</label>
                            <input type="file" name="imgArticle" id="imgArticle"/>
                            <input type="hidden" name="MAX_FILE_SIZE" value="100000">
                        </p>
                        <p>
                            <label for="quantite" class="texteP">Quantité disponible</label>
                            <input type="number" placeholder="Quantité" name="quantite" id="quantite"/>
                        </p>
                        <p>
                            <label for="prix" class="texteP">Prix HT/KG</label>
                            <input type="text" placeholder="prix" name="prix" id="prix"/>
                        </p>
                        <p>
                            <input class="boutonEnvoyer" type="submit" value="Envoyer"/>
                        </p>
                    </form>                    
                </div>
 
            </aside>
            <aside class="container">
                <div>
                </div>
            </aside>
        </section>
        <footer class="container" id="footer">
        </footer>
        <script src="htmlTemplate/js/vendor/jquery-3.2.1.min.js"></script>
        <script src="htmlTemplate/js/vendor/modernizr-3.5.0.min.js"></script>
        <script src="fichierGestionJs/affichageArticle4.js"></script>
        <script src="fichierGestionJs/ajoutPanier.js"></script>
    </body>
</html>
<?php
 }else{
     header("Location:/plateformeMarechaux/index.php?connexionRequise");
 }?>
*code permettant l'upload de l'image sur la base:
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
 
<?php
session_start();
 
include "RequeteSql.class.php";
 
$nomArticle=$_POST['nomArticle'];
$quantite=$_POST['quantite'];
$prix=$_POST['prix'];
$typeProduit=$_POST['typeProduit'];
$user=$_SESSION["username"];
$ret=false;
$img_blob='';
$img_taille=0;
$img_type='';
$img_nom='';
$taille_max=250000;
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$ret= is_uploaded_file($_FILES['imgArticle']['tmp_name']);
 
if(!$ret){
    echo "problème de transfert";
    return false;
}else{
    //fichier correctement reçu
    $img_taille=$_FILES['imgArticle']['size'];
    $extension = strrchr($_FILES['imgArticle']['name'], '.');
    if($img_taille>$taille_max){
        echo "fichier trop gros";
        return false;
    }
    $img_type=$_FILES['imgArticle']['type'];
    if(!in_array($extension, $extensions)){
        echo 'mauvais type de fichier';
    }else{
        $img_nom=$_FILES['imgArticle']['name'];
    }
 
    // récuperation de la valeur binaire de l'image
    $img_blob=file_get_contents($_FILES['imgArticle']['tmp_name']);
 
 
    if(isset($nomArticle) && isset($quantite) && isset($prix) && isset($typeProduit)){
 
        $newArticle= new RequeteSql();
        $newArticle->ajoutArticleBdd($user, $nomArticle, $quantite, $prix, $img_nom, $img_taille, $img_type, $img_blob, $typeProduit);
        header("Location:/plateformeMarechaux/profil.php?typeProduitvaut=".$typeProduit."");
    }
 
 
}
 
?>
* code de ma page "RequeteSql.Class.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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
 
public function ajoutArticleBdd($user, $nomArticle, $quantite, $prix, $img_nom, $img_taille, $img_type, $img_blob, $typeProduit){
 
        $ouvertureConnexion= new DatabaseManager('localhost','','plateformemarechaux','root',''); //appel implicite au constructeur      
        $ouvertureConnexion->connexionDatabase();
 
 
        $statement=$ouvertureConnexion->connexionDb->prepare("CALL ajoutImage(:a, :b, :c, :d);");
        $statement->bindValue(":a", $img_nom);
        $statement->bindValue(":b", $img_taille);
        $statement->bindValue(":c", $img_type);
        $statement->bindValue(":d", addslashes($img_blob));
        $statement->execute();
        echo "deconnexion demandee";
        unset($ouvertureConnexion);
 
        $ouvertureConnexion2= new DatabaseManager('localhost','','plateformemarechaux','root',''); //appel implicite au constructeur      
        $ouvertureConnexion2->connexionDatabase();
 
 
        $statementAjoutArticle=$ouvertureConnexion2->connexionDb->prepare("CALL ajoutArticle(:a, :b, :c, :d, :e, :f, :g, :h);");
        $statementAjoutArticle->bindValue(":a", $nomArticle);
        $statementAjoutArticle->bindValue(":b", $quantite);
        $statementAjoutArticle->bindValue(":c", $prix);
        $statementAjoutArticle->bindValue(":d", $img_nom);
        $statementAjoutArticle->bindValue(":e", $img_taille);
        $statementAjoutArticle->bindValue(":f", $img_type);
        $statementAjoutArticle->bindValue(":g", addslashes($img_blob));
        $statementAjoutArticle->bindValue(":h", $typeProduit);
        $statementAjoutArticle->execute();
        echo "deconnexion demandee";
        unset($ouvertureConnexion2);
 
        $ouvertureConnexion3= new DatabaseManager('localhost','','plateformemarechaux','root',''); //appel implicite au constructeur      
        $ouvertureConnexion3->connexionDatabase();
 
        $statementAssociationUserArticle=$ouvertureConnexion3->connexionDb->prepare("CALL id_Proprio(:a, :b);");
        $statementAssociationUserArticle->bindParam(":a", $user);
        $statementAssociationUserArticle->bindParam(":b", $nomArticle);
        $statementAssociationUserArticle->execute();
 
        echo "deconnexion demandee";
        unset($ouvertureConnexion3);
 
 
    }
 
 
    /*ici requete affichage des articles*/
 
    public function afficherArticleCategorieLegume(){
 
        $ouvertureConnexion= new DatabaseManager('localhost','','plateformemarechaux','root',''); //appel implicite au constructeur  
        $ouvertureConnexion->connexionDatabase();
        $statement=$ouvertureConnexion->connexionDb->prepare("CALL affichageArticleCategorieLegume();");
        $statement->execute();
 
        while ($donnees = $statement->fetch()){
 
            if(!$donnees['idTypeProduit']){
 
                echo "probleme d'identifiant de catégorie/ donnees['idTypeProduit'] vaut : ".$donnees['idTypeProduit'];
            }else{
 
 
                header("Content-type:".$donnees['img_type']);
                //echo $donnees['img_blob'];
 
            ?>
            <div name="article1" id="article">
                <form method="POST" action="ajoutPanier.php"> <!-- a voir si je passe par php pour l'ajout au panier ou par javascript -->
                <div name="imageArticle" id="cadreImageArticle">   
                    <?php
                    echo '<img src="data:image/jpeg;base64,'.base64_encode($donnees['img_blob']).'" title="image"/>';
                    ?>
                </div>    <!-- image d'un légume -->
                <div name="titreArticle" id="titreArticle">
                    <p><?php echo $donnees['nomArticle'];?></p>
 
                </div>
                <div name="propio" id="proprio">
                    <p><?php echo $donnees['raisonSociale'];?></p>
                </div>
                <div name="prixArticle" id="cadrePrix">
                    <div>
                        <?php echo $donnees['prixHtKilo'];?>
                    </div>
                </div>
                <div name="QTArticle" id="champQT">
                    <input type="number" name="QtAchat" id="QtAchat"/>
                </div>
                <div name="buttonAjoutAuPanier" id="boutonAjouterAuPanier">
                    <input type="submit" value="Commander"/>
                </div>
                </form>
            </div>
            <?php
            }       
        }               
 
    }
pour mes procédure voici ce qu'elle contiennent:

* affichageArticleCategorieLegume()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
SELECT idTypeProduit, img_type, img_blob, nomArticle, raisonSociale, prixHtKilo FROM t_typeproduit, t_imgarticle, article, utilisateur
WHERE idTypeProduit=1;
*ajoutArticle(varchar nomArticle, Int quantite, double prix, varchar nomImg, varchar tailleImg, varchar typeImg, longblob imgBlob, int t_typeProduit)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
DECLARE idImg INT (11);
 
SET idImg=selectionImgId(nomImg, tailleImg, typeImg, imgBlob);
 
INSERT INTO article (nomArticle, QTenStock, prixHtKilo, t_imgArticle_id_imgArticle, t_typeproduit) VALUES (nomArticle, quantite, prix, idImg, t_typeProduit);
*selectionImgId(nomImg, tailleImg, typeImg, imgBlob):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
declare idImg INT(11);
 
SELECT id_imgArticle INTO idImg FROM t_imgarticle WHERE img_nom=nom AND img_taille=taille AND img_type=type AND img_blob=imgblob;
 
return idImg;
*ajoutImage(varchar nom, varchar taille, varchar type, imgBlob longblob):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
INSERT INTO t_imgarticle (img_nom, img_taille, img_type, img_blob) VALUES (nom, taille, type, imgBlob);
*id_Proprio (varchar mail, varchar nomArticle):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
DECLARE idUser INT(11);
DECLARE idArt INT(11);
 
SET idUser=set_IdUser(mail);
SET idArt=set_IdArticle(nomArticle);
 
 
INSERT INTO utilisateur_has_article (utilisateur_idutilisateur, article_idarticle) VALUES (idUser, idArt);
*set_IdUser(mail):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
DECLARE iduser INT(11);
 
SELECT idutilisateur INTO iduser FROM utilisateur WHERE mail=email;
 
return iduser;
*set_IdArticle(nomArticle):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
DECLARE idArt INT(11);
 
SELECT idarticle INTO idArt FROM article WHERE nomArticle=nomArt;
 
return idArt;
Pour mes table, celle ci sont bien paramétrer (du moins je pense) les ayant fait avec mysqlworkbench...


Voilà tout y est je pense.... merci par avance pour le temps que vous aurez passé a étudier mon code :/ ....

PS: si vous estimez que ce sujet n'est pas a sa place, n'hésitez pas a le déplacer ^^