Problème de variable en pdo
Résolu/Fermé
solara198
Messages postés
14
Date d'inscription
lundi 18 janvier 2016
Statut
Membre
Dernière intervention
21 mars 2018
-
18 janv. 2016 à 14:50
solara198 Messages postés 14 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 21 mars 2018 - 21 janv. 2016 à 21:05
solara198 Messages postés 14 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 21 mars 2018 - 21 janv. 2016 à 21:05
A voir également:
- Problème de variable en pdo
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Windows 7
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
- Programme python ✓ - Forum Python
13 réponses
sipherion
Messages postés
1809
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
285
21 janv. 2016 à 11:24
21 janv. 2016 à 11:24
C'est bien ce que je pensais.
Dans ton code PHP tu déclares ta variable :
Ensuite ta requête SQL :
Donc la même chose que
(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.
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.
sipherion
Messages postés
1809
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
285
18 janv. 2016 à 15:37
18 janv. 2016 à 15:37
Bonjour,
Tu as des , à la place de . pour faire le lien entre des variables PHP et un echo de code HTML. Essayes avec ça:
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.
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.
solara198
Messages postés
14
Date d'inscription
lundi 18 janvier 2016
Statut
Membre
Dernière intervention
21 mars 2018
18 janv. 2016 à 15:47
18 janv. 2016 à 15:47
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
ça marche avec le nom mais en mettant la variable $echo_reponses non
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
sipherion
Messages postés
1809
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
285
18 janv. 2016 à 16:07
18 janv. 2016 à 16:07
Ton "images/AA.jpg" il vient d'où ?
sipherion
Messages postés
1809
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
285
18 janv. 2016 à 16:06
18 janv. 2016 à 16:06
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
solara198
Messages postés
14
Date d'inscription
lundi 18 janvier 2016
Statut
Membre
Dernière intervention
21 mars 2018
18 janv. 2016 à 16:16
18 janv. 2016 à 16:16
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
Malheureusement ça marche tjrs pas.
je crois la syntaxe en pdo ne supporte pas ce genre de variable?????
je suis vraiment bloquée
solara198
Messages postés
14
Date d'inscription
lundi 18 janvier 2016
Statut
Membre
Dernière intervention
21 mars 2018
18 janv. 2016 à 16:23
18 janv. 2016 à 16:23
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
$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
sipherion
Messages postés
1809
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
285
18 janv. 2016 à 16:52
18 janv. 2016 à 16:52
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 ?
Il y a quoi dans ta table article ? Comment fais-tu le lien entre l'image et son chemin physique sur le serveur ?
solara198
Messages postés
14
Date d'inscription
lundi 18 janvier 2016
Statut
Membre
Dernière intervention
21 mars 2018
18 janv. 2016 à 17:14
18 janv. 2016 à 17:14
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 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).
solara198
Messages postés
14
Date d'inscription
lundi 18 janvier 2016
Statut
Membre
Dernière intervention
21 mars 2018
18 janv. 2016 à 17:16
18 janv. 2016 à 17:16
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'; }
sipherion
Messages postés
1809
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
285
18 janv. 2016 à 17:28
18 janv. 2016 à 17:28
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.
solara198
Messages postés
14
Date d'inscription
lundi 18 janvier 2016
Statut
Membre
Dernière intervention
21 mars 2018
18 janv. 2016 à 17:36
18 janv. 2016 à 17:36
bonne remarque merci.je viens de rectifié mais c'est pareil.
oui c'est le chemin de l'image qui est stocké
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'; }
sipherion
Messages postés
1809
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
285
19 janv. 2016 à 10:08
19 janv. 2016 à 10:08
Es-tu sur que le contenu de ton champ Image ressemble à ça ? "<span>'.$img2.'</span><span>/</span>"
solara198
Messages postés
14
Date d'inscription
lundi 18 janvier 2016
Statut
Membre
Dernière intervention
21 mars 2018
19 janv. 2016 à 15:09
19 janv. 2016 à 15:09
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
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
sipherion
Messages postés
1809
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
285
19 janv. 2016 à 17:57
19 janv. 2016 à 17:57
Peux tu me donner le contenu actuel de ta table Article ? En enlevant si nécessaire des données confidentielles.
solara198
Messages postés
14
Date d'inscription
lundi 18 janvier 2016
Statut
Membre
Dernière intervention
21 mars 2018
20 janv. 2016 à 16:24
20 janv. 2016 à 16:24
solara198
Messages postés
14
Date d'inscription
lundi 18 janvier 2016
Statut
Membre
Dernière intervention
21 mars 2018
21 janv. 2016 à 21:05
21 janv. 2016 à 21:05
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.
$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.