Problème de variable en pdo
Résolu
solara198
Messages postés
15
Statut
Membre
-
solara198 Messages postés 15 Statut Membre -
solara198 Messages postés 15 Statut Membre -
Bonjour,
j'ai un problème au niveau de ce bout de code
la galerie d'images s'affiche avec en dessous de chaque image a[1]= POUR LA PREMIERE ET a[2]= POUR LA DEUXIEME AINSI DE SUITE MAIS LE R2SULTAT '.$detail2.' ne s'affiche pas.
merci d'avance
j'ai un problème au niveau de ce bout de code
for ($i=0; $i<$nbpics; $i++){
$img2=$detail;
$img3=$tableau[$i];
$echo_reponses ='<span>'.$img2.'</</span><span>'.$img3.'</span>';
$req='select NomArticle FROM article WHERE Image= :echo_reponses';
$requete2 = $bdd->prepare($req);
$requete2->bindValue(':echo_reponses',$echo_reponses);
$requete2->execute();
$image2 = $requete2->fetch();
$detail2 = $requete2->fetchColumn();
$requete->closeCursor();
$requete2->execute();
// pour chaque miniature, on affiche la miniature munie d'un lien vers la photo en taille réelle
echo ' <td><a href="TESTT.PHP?&ctrligne='.$detail.'/' , $tableau[$i] , '" ><img src="'.$detail.'/' , $tableau[$i] , '" width="200" height="200" id="chemin" name="chemin" onchange="javascript:adresse();" alt="Image" /></BR></BR><CENTER> a['.$i.']='.$detail2.'</a></CENTER></BR></BR></td>';
la galerie d'images s'affiche avec en dessous de chaque image a[1]= POUR LA PREMIERE ET a[2]= POUR LA DEUXIEME AINSI DE SUITE MAIS LE R2SULTAT '.$detail2.' ne s'affiche pas.
merci d'avance
13 réponses
-
C'est bien ce que je pensais.
Dans ton code PHP tu déclares ta variable :
$echo_reponses ='<span>'.$img2.'</span><span>/</span><span>'.$img3.'</span>'
Ensuite ta requête SQL :
$req="select NomArticle FROM Article WHERE Image='.$echo_reponses.'";
Donc la même chose que$req="select NomArticle FROM Article WHERE Image='<span>'.$img2.'</span><span>/</span><span>'.$img3.'</span>';
(Grossièrement hein, juste pour que tu comprennes)
Or ton champ Image contient juste "image\A.jpg", donc il ne trouvera jamais "<span>'.$img2.'</span><span>/</span><span>'.$img3.'</span>". Tu dois donc délcarer la valeur de $echo_reponses par le texte contenu dans le champ Image.
-
Bonjour,
Tu as des , à la place de . pour faire le lien entre des variables PHP et un echo de code HTML. Essayes avec ça:
echo '<td><a href="TESTT.PHP?&ctrligne='.$detail.'/'.$tableau[$i].'"> <img src="'.$detail.'/'.$tableau[$i].'" width="200" height="200" id="chemin" name="chemin" onchange="javascript:adresse();" alt="Image" /> </BR></BR><CENTER> a['.$i.']='.$detail2.'</a></CENTER></BR></BR></td>';
Par contre tu as quelques maladresses dans ton code HTML, je te recommande une validation W3C ou au moins l'affichage du code source avec Firefox qui te donnera quelques conseils.
-
Bonjour,
Merci d'avoir répondu à ma question.
Je viens de tester avec ton code mais j'ai le même résultat.
c'est vrai que le code n'est pas propre mais lorsque je mets le nom de l'image directement à la place de la variable
$req='select NomArticle FROM article WHERE Image= 'images/AA.jpg'; $requete2 = $bdd->prepare($req); ; $image2 = $requete2->fetch(); $detail2 = $requete2->fetchColumn(); $requete->closeCursor(); $requete2->execute();
ça marche avec le nom mais en mettant la variable $echo_reponses non -
Ah oui, j'avais pas vu ce détail ^^
$req="select NomArticle FROM article WHERE Image='".$echo_reponses."'";
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
j'ai déja testé cela
Malheureusement ça marche tjrs pas.
je crois la syntaxe en pdo ne supporte pas ce genre de variable?????
je suis vraiment bloquée -
en fait 'images/AA.jpg' est une image dans un dossier depuis lequel j'affiche ma galerie.moi je veux que les images de la galerie s'affichent avec le nom de l'article correspondant en dessous.
$echo_reponses ='<span>'.$img2.'</</span><span>'.$img3.'</span>';
si i= 1 ON AURA $echo_reponse='images/AA.jpg'
si i=2 ON AURA LA DEUXIÈME IMAGE ET AINSI DE SUITE -
Je comprend pas tout.
Il y a quoi dans ta table article ? Comment fais-tu le lien entre l'image et son chemin physique sur le serveur ?
-
Dans ma table article j'ai les champs :( IdArticle, NomArticle, Prix, libelle, Image, IdFournisseur(foreigne key), galerie)
je vous explique:
galerie (varchar) c'est le nom de dossier qui contient les images dont l'image de l' article.
Image 'varchar): est le chemin de l'image de l'article désigné.exemple (images/burger.jpg).-
je vous donne le code entier pour bien comprendre
<script language="javascript"> function adresse() { var path=document.getElementById("chemin").value; return path; }; </script> <?php define("SERVEURBD","127.0.0.1"); define("LOGIN","root"); define("MOTDEPASSE",""); define("NOMDELABASE","food"); function connexionBD() { try { $bdd = new PDO('mysql:host=' . SERVEURBD . ';dbname=' . NOMDELABASE, LOGIN, MOTDEPASSE); } catch(PDOException $e) { throw new Exception('Pb connexion serveur BD : ' . $e->getMessage()); } return $bdd; } function listerReference() { $bdd = connexionBD(); $requete = $bdd->query("select IdFournisseur,Nom from Fournisseur ;"); echo "<option value=\"-1\">Choisissez un fournisseur</option>"; while ($tab = $requete->fetch()) { echo "<option value=\"".$tab['IdFournisseur']."\">".utf8_encode($tab['Nom'])."</option>\n"; } $requete->closeCursor(); } function getDescriptionJson($id){ $bdd= connexionBD(); $requete = $bdd->prepare("select galerie from article where IdFournisseur = :idV ;"); $image = $requete->fetch(); $requete->bindParam(":idV", $id); $requete->execute() or die(print_r($requete->errorInfo())); $detail = $requete->fetchColumn(); $requete->closeCursor(); // on déclare un tableau qui contiendra le nom des fichiers de nos miniatures $tableau = array(); // on ouvre notre dossier contenant les miniatures $dossier = opendir ('./'.$detail.'/'); while ($fichier = readdir ($dossier)) { if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') { // on stocke le nom des fichiers des miniatures dans un tableau $tableau[] = $fichier; } } closedir ($dossier); // on défini le nombre de colonne sur lesquelles vont s'afficher nos miniatures $nbcol=4; // on compte le nombre de miniatures $nbpics = count($tableau); // si on a au moins une miniature, on les affiche toutes if ($nbpics != 0) { echo '<table>'; for ($i=0; $i<$nbpics; $i++){ $img2=$detail; $img3=$tableau[$i]; $echo_reponses ='<span>'.$img2.'</</span><span>'.$img3.'</span>'; $req="select NomArticle FROM Article WHERE Image='".$echo_reponses."'"; $requete2 = $bdd->prepare($req); $image2 = $requete2->fetch(); $detail2 = $requete2->fetchColumn(); $requete->closeCursor(); $requete2->execute(); // pour chaque miniature, on affiche la miniature munie d'un lien vers la photo en taille réelle echo '<td><a href="TESTT.PHP?&ctrligne='.$detail.'/'.$tableau[$i].'"> <img src="'.$detail.'/'.$tableau[$i].'" width="200" height="200" id="chemin" name="chemin" onchange="javascript:adresse();" alt="Image" /> </BR></BR><CENTER> a['.$i.']='.$detail2.'</a></CENTER></BR></BR></td>'; if($i%$nbcol==($nbcol-1)) echo '</tr>'; } echo '</table>'; } // si on a aucune miniature, on affiche un petit message :) else echo 'Aucune image à afficher'; }
-
-
Ta requête SQL recherche Image = <span>'.$img2.'</</span><span>'.$img3.'</span> (d'ailleurs tu as un "</" en trop) ce n'est pas logique si c'est le chemin du fichier qui est stocké dans ce champ.
-
bonne remarque merci.je viens de rectifié mais c'est pareil.
oui c'est le chemin de l'image qui est stocké<script language="javascript"> function adresse() { var path=document.getElementById("chemin").value; return path; }; </script> <?php define("SERVEURBD","127.0.0.1"); define("LOGIN","root"); define("MOTDEPASSE",""); define("NOMDELABASE","food"); function connexionBD() { try { $bdd = new PDO('mysql:host=' . SERVEURBD . ';dbname=' . NOMDELABASE, LOGIN, MOTDEPASSE); } catch(PDOException $e) { throw new Exception('Pb connexion serveur BD : ' . $e->getMessage()); } return $bdd; } function listerReference() { $bdd = connexionBD(); $requete = $bdd->query("select IdFournisseur,Nom from Fournisseur ;"); echo "<option value=\"-1\">Choisissez un fournisseur</option>"; while ($tab = $requete->fetch()) { echo "<option value=\"".$tab['IdFournisseur']."\">".utf8_encode($tab['Nom'])."</option>\n"; } $requete->closeCursor(); } function getDescriptionJson($id){ $bdd= connexionBD(); $requete = $bdd->prepare("select galerie from article where IdFournisseur = :idV ;"); $image = $requete->fetch(); $requete->bindParam(":idV", $id); $requete->execute() or die(print_r($requete->errorInfo())); $detail = $requete->fetchColumn(); $requete->closeCursor(); // on déclare un tableau qui contiendra le nom des fichiers de nos miniatures $tableau = array(); // on ouvre notre dossier contenant les miniatures $dossier = opendir ('./'.$detail.'/'); while ($fichier = readdir ($dossier)) { if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') { // on stocke le nom des fichiers des miniatures dans un tableau $tableau[] = $fichier; } } closedir ($dossier); // on défini le nombre de colonne sur lesquelles vont s'afficher nos miniatures $nbcol=4; // on compte le nombre de miniatures $nbpics = count($tableau); // si on a au moins une miniature, on les affiche toutes if ($nbpics != 0) { echo '<table>'; for ($i=0; $i<$nbpics; $i++){ $img2=$detail; $img3=$tableau[$i]; $echo_reponses ='<span>'.$img2.'</span><span>/</span><span>'.$img3.'</span>'; $req="select NomArticle FROM Article WHERE Image='.$echo_reponses.'"; $requete2 = $bdd->prepare($req); $image2 = $requete2->fetch(); $detail2 = $requete2->fetchColumn(); $requete->closeCursor(); $requete2->execute(); // pour chaque miniature, on affiche la miniature munie d'un lien vers la photo en taille réelle echo '<td><a href="TESTT.PHP?&ctrligne='.$detail.'/'.$tableau[$i].'"> <img src="'.$detail.'/'.$tableau[$i].'" width="200" height="200" id="chemin" name="chemin" onchange="javascript:adresse();" alt="Image" /> </BR></BR><CENTER> a['.$i.']='.$detail2.'</a></CENTER></BR></BR></td>'; if($i%$nbcol==($nbcol-1)) echo '</tr>'; } echo '</table>'; } // si on a aucune miniature, on affiche un petit message :) else echo 'Aucune image à afficher'; } -
merci sipherion de m'avoir répondu
Oui.lorsque je fais echo 'Image = '.$echo_reponses.'';
avec $echo_reponses ='<span>'.$img2.'</span><span>/</span><span>'.$img3.'</span>';
et
$img2=$detail;
$img3=$tableau[$i];
ça donne bien le chemin de l'image -
-
Merci infiniment sipherion.C'était ça le problème.J'ai ajouté une requête pour avoir le texte contenu dans le champ Image et ça a marché.
$bdd= connexionBD();
$requete0 = $bdd->prepare("select Image from article where Image='".$detail.'/'.$tableau[$i]."' ;");
$image0 = $requete0->fetch();
$requete0->bindParam(":idV", $echo_reponses1);
$requete0->execute() or die(print_r($requete0->errorInfo()));
$detail0 = $requete0->fetchColumn();
$requete0->closeCursor();
$bdd= connexionBD();
$requete2 = $bdd->prepare("select NomArticle from article where Image = :idV ;");
$image2 = $requete2->fetch();
$requete2->bindParam(":idV", $detail0);
$requete2->execute() or die(print_r($requete2->errorInfo()));
$detail2 = $requete2->fetchColumn();
$requete2->closeCursor();
// pour chaque miniature, on affiche la miniature munie d'un lien vers la photo en taille réelle
echo '<td><a href="TESTT.PHP?&ctrligne='.$detail.'/'.$tableau[$i].'">
<img src="'.$detail.'/'.$tableau[$i].'" width="200" height="200" id="chemin" name="chemin" onchange="javascript:adresse();" alt="Image" />
</BR></BR><CENTER>'.$detail2.'</a></CENTER></BR></BR></td>';
merci encore pour le temps que t'as consacré pour résoudre mon problème.
