comment insérer une variable dans ma requête sql

Eléphanteau du PHP | 28 Messages

12 août 2018, 16:36

Bonjour
j'ai fais un petit programme qui devrait me permettre d'afficher sur mon site la correspondance entre des maladies et des pierres de lithothérapie. Puis ensuite m'afficher les images de ces pierres.
Donc la première partie fonctionne, puisque j'ai un menu déroulant qui me propose toutes les maladies ou problèmes, quand on en sélectionne une il me propose bien les différentes pierres qui peuvent aider, mais c'est la que cela se corse, je n'arrive pas a lui demander de m'afficher l'image des pierres proposés.

J'ai fais 2 tables différentes :
Une avec le nom des maladies et les pierres associés. Les champs : (maladie, pierre)
une avec le nom de la pierre et le fichier image associé. Les champs : (nom, image)

Dans ma page qui appelle tout ca je commence par afficher ma liste déroulante de maladie, je peux en sélectionner une et la il me donne une liste de pierres. Il peut y en avoir de 1 a 14.
dans mon champs pierre j'ai une ligne qui ressemble à ça : Agate Turitelle. Aventurine. Kunzite. Lapis Lazuli. Quartz Rutile
donc pour récupérer le nom des pierres une par une je fais un

Code : Tout sélectionner

<?php // recuperer les noms des pierres $pieces = explode(". ", $donnees['pierre']); ?> <?php echo $pieces[0]; // piece1 ?> <br /> <?php echo $pieces[1]; // piece2 ?> <br /> <?php echo $pieces[2]; // piece3 ?> <br /> <?php echo $pieces[3]; // piece4 ?> <br /> <?php echo $pieces[4]; // piece5 ?> <br /> <?php echo $pieces[5]; // piece6 ?> <br /> <?php echo $pieces[6]; // piece7 ?> <br /> <?php echo $pieces[7]; // piece8 ?> <br /> <?php echo $pieces[8]; // piece9 ?> <br /> <?php echo $pieces[9]; // piece10 ?> <br /> <?php echo $pieces[10]; // piece11 ?> <br /> <?php echo $pieces[11]; // piece12 ?> <br /> <?php echo $pieces[12]; // piece13 ?> <br /> <?php echo $pieces[13]; // piece14 ?> <br /> <?php echo $pieces[14]; // piece15 ?> <br /> <?php
Ensuite j'ouvre ma 2 eme table et c'est la que les soucis commencent.
Je ne sais pas comment appeler avec ce tableau chacune des pierres.

Code : Tout sélectionner

<?php $reponse = $pdo->prepare('SELECT * FROM qow_infos_pierres WHERE nom = ?'); // $reponse->execute(array(':pieces' => $pieces)); // $reponse->execute(array($_POST['$pieces'])); while ($donnees = $reponse->fetch()) { echo $donnees['image'] . '<br />'; ?> Il devrait y avoir une image ici <img class="wp-image-128 size-medium aligncenter" src="wp-content/uploads/photos_pierres/<?php echo $donnees['image'];?>" alt="Photo de la pierre" width="300" height="300"/> <?php } echo $donnees['image']; $reponse->closeCursor(); ?>
J'ai essayer avec les 2 lignes que j'ai mis en anotation mais cela ne veux rien afficher.

Je sais que j'ouvre bien ma base et que sur ce cote la ca fonctionne ( car si je met :

Code : Tout sélectionner

$reponse = $pdo->query('SELECT * FROM qow_infos_pierres '); while ($donnees = $reponse->fetch()) { echo $donnees['image'] . '<br />'; ?> Il devrait y avoir une image ici <img class="wp-image-128 size-medium aligncenter" src="wp-content/uploads/photos_pierres/<?php echo $donnees['image'];?>" alt="Photo de la pierre" width="300" height="300"/> <?php } echo $donnees['image']; $reponse->closeCursor(); ?>
Il m'affiche bien toutes les pierres.
Mais je n'arrive pas a trouver comment joindre mes $pieces[] dans la requêtes.

Quelqu'un peut m'aider svp ?

Mammouth du PHP | 950 Messages

12 août 2018, 17:58

je changerais la structure des données pour ces 3 tables :
table maladie
idmaladie
maladie

table pierre :
idpierre
pierre
image

table maladiepierre :
idmaladie
idpierre

la requete pour afficher les pierres associées à une maladie est alors :
select pierre, image from pierre, maladiepierre where maladiepierre.idpierre=pierre.idpierre and maladiepierre.idmaladie = ?
et il faut passer l'id de la maladie en question à $reponse->execute()

Eléphanteau du PHP | 28 Messages

12 août 2018, 22:53

merci de ta réponse, rhaaa la va falloir que j’étudie bien ce que tu m'as donner comme infos parce que c'est un peu vague pour moi :)
par contre dans mes tables pour idpierre comment je fais pour associer les id de pierres et de maladies car j'ai plusieurs pierres par maladie et plusieurs pierres qui font pour plusieurs maladies ?