Requète SQL avec jointure
Résolu
LaChaux78
Messages postés
583
Date d'inscription
Statut
Membre
Dernière intervention
-
LaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
LaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une liste de dates en sélectionnant une date je souhaiterai que cela me retourne les réponses des membres concerné uniquement par cette date.
Je n'arrive pas à trouver la requète, pouvez-vous m'aider s'ils vous plait, je vous remercie et je vous souhaite par la même occasion de bonne fête de fin d'année.
Voici ce que j'ai fait cela me retourne toutes les réponses de toutes les dates à la fois
J'ai une liste de dates en sélectionnant une date je souhaiterai que cela me retourne les réponses des membres concerné uniquement par cette date.
Je n'arrive pas à trouver la requète, pouvez-vous m'aider s'ils vous plait, je vous remercie et je vous souhaite par la même occasion de bonne fête de fin d'année.
Voici ce que j'ai fait cela me retourne toutes les réponses de toutes les dates à la fois
<div id="membre"> <table id="ad_list" border="3px" cellpadding="0" cellspacing="3"> <tr> <th width="20%">Nom</th> <th width="20%">Prénom</th> <th width="15%">Réponse</th> </tr> <?php $sql = "SELECT nom,prenom,reponse FROM cdc_personnes, cdc_repondre, cdc_manifestations WHERE cdc_personnes.idpers = cdc_repondre.idpers AND cdc_repondre.idmanif = cdc_manifestations.idmanif"; $requete = $bdd->prepare($sql); $requete->execute(); while ($donnees = $requete->fetch()) { ?> <tr> <td><?php echo $donnees->nom; ?></td> <td><?php echo $donnees->prenom; ?></td> <td><?php echo $donnees->reponse; ?></td> </tr> <?php } $resultats->closeCursor(); ?> </table> </div>
A voir également:
- Requète SQL avec jointure
- Logiciel sql - Télécharger - Bases de données
- Sql (+) - Forum Programmation
- Sql lister les tables ✓ - Forum Programmation
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
15 réponses
Bonjour
Le champ date est de type DATE.
mes tables
Donc lorsque je sélectionne une date cela me retourne bien l'url voulu c'est à dire l'id de la dmanif "ppeffectif_indiv.php?idmanif=488"
Je te remercie pour ton aide j'ai essayé de retourner la requète dans tous les sens mais je n'y arrive pas.
Merci
Le champ date est de type DATE.
mes tables
cdc_personnes id nom prenom cdc_manifestations idmanif dmanif (les dates de type date) lieu event cdc_repondre (table où les personnes ont apporté leurs réponses) idrepon idpers idmanif reponse (de type varchar)
Donc lorsque je sélectionne une date cela me retourne bien l'url voulu c'est à dire l'id de la dmanif "ppeffectif_indiv.php?idmanif=488"
Je te remercie pour ton aide j'ai essayé de retourner la requète dans tous les sens mais je n'y arrive pas.
Merci
en sélectionnant une date je souhaiterai que cela me retourne les réponses des membres concerné uniquement par cette date
lorsque je sélectionne une date cela me retourne bien l'url voulu c'est à dire l'id de la dmanif "ppeffectif_indiv.php?idmanif=488"
Je ne comprend pas trop ta question...Tu me parles de dates... puis finalement tu me parles d'un ID ....
Ce n'est pas très clair...
Mais bon.. je pense que ce que tu cherches c'est un truc du genre :
SELECT * FROM cdc_repondre R LEFT JOIN cdc_personnes P ON P.id = R.idpers LEFT JOIN cdc_manifestations M ON M.idmanif=R.idmanif WHERE M.idmanif = '488' AND dmanif = '2016-12-24'
Bonjour
Excuse moi pour mes explications, mais en fait ce que tu m'as fait cela me semble exact. J'ai inséré la requète dans PhpMyadmin et cela me retourne bien les infos corectement. Ensuite j'ai remplacé "488" par $idmanif et la date par $dmanif et aucun résultat. Je ne comprends pas.
Excuse moi pour mes explications, mais en fait ce que tu m'as fait cela me semble exact. J'ai inséré la requète dans PhpMyadmin et cela me retourne bien les infos corectement. Ensuite j'ai remplacé "488" par $idmanif et la date par $dmanif et aucun résultat. Je ne comprends pas.
SELECT nom,prenom,dmanif,reponse FROM cdc_repondre LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_repondre.idpers LEFT JOIN cdc_manifestations ON cdc_manifestations.idmanif=cdc_repondre.idmanif WHERE cdc_manifestations.idmanif = '488' AND dmanif = '2016-12-30'
$sql = "SELECT nom,prenom,dmanif,reponse FROM cdc_repondre LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_repondre.idpers LEFT JOIN cdc_manifestations ON cdc_manifestations.idmanif=cdc_repondre.idmanif WHERE cdc_manifestations.idmanif = '$idmanif' AND dmanif = '$dmanif'";
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'ai mis les var_dump en-dessous de execute et cela me retourne une page blanche
$sql = "SELECT nom,prenom,dmanif,reponse FROM cdc_repondre LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_repondre.idpers LEFT JOIN cdc_manifestations ON cdc_manifestations.idmanif=cdc_repondre.idmanif WHERE cdc_manifestations.idmanif = '$idmanif' AND dmanif = '$dmanif'"; $requete = $bdd->prepare($sql); $requete->execute(); var_dump $idmanif; var_dump $dmanif; var_dump $sql; while ($donnees = $requete->fetch()) { ?> <tr> <td><?php echo $donnees->nom; ?></td> <td><?php echo $donnees->prenom; ?></td> <td><?php echo $donnees->reponse; ?></td> </tr> <?php } ?>
avec le echo $sql; voilà ce que ça donne
SELECT nom,prenom,dmanif,reponse FROM cdc_repondre LEFT JOIN cdc_personnes ON cdc_personnes.idpers = cdc_repondre.idpers LEFT JOIN cdc_manifestations ON cdc_manifestations.idmanif=cdc_repondre.idmanif WHERE cdc_manifestations.idmanif = '' AND dmanif = ''
Donc voici ma page qui permet d'insérer la table cdc_repondre
$PARAM = array ( 'IDREPON' => isset($_REQUEST['idrepon']) ? $_REQUEST['idrepon'] : '', 'IDPERS' => isset($_POST['idpers']) ? $_POST['idpers'] : '', 'IDMANIF' => isset($_POST['idmanif']) ? $_POST['idmanif'] : '', 'REPONSE' => isset($_POST['reponse']) ? $_POST['reponse'] : '', ); if (isset($_REQUEST['action']) AND !empty($_REQUEST['action'])) { switch($_REQUEST['action']) { case 'ajouter': $sql = "INSERT INTO cdc_repondre (idpers, idmanif, reponse) VALUES ('".$_SESSION['idpers']."','".$PARAM['IDMANIF']."', '".$PARAM['REPONSE']."')"; $requete = $bdd->prepare($sql); $requete->bindParam(':idrepon', $PARAM['IDREPON']); $requete->bindParam(':idpers', $_SESSION['idpers']); $requete->bindParam(':idmanif', $PARAM['IDMANIF']); $requete->bindParam(':reponse', $PARAM['REPONSE']); $requete->execute(); break; } echo "<div style='color:red'>Merci pour ta réponse</div><br/>"; } $sql = "SELECT * FROM cdc_manifestations WHERE cdc_manifestations.publier = false AND cdc_manifestations.idmanif NOT IN (SELECT distinct cdc_repondre.idmanif FROM cdc_repondre WHERE cdc_repondre.idpers = ".$_SESSION['idpers'].") ORDER BY cdc_manifestations.dmanif ASC"; $requete = $bdd->prepare($sql); $requete->execute(); $nb = $requete->rowCount(); if($nb < 1) { $erreur = "<div class='erreur'>Aucune sortie n'est prévue pour s'inscrire.....</div>"; } else { $success = "<div class='success'>Merci de t'inscrire pour les sorties.....</div>"; } ?> <?php echo $success; ?> <?php echo $erreur; ?> <div id="content"> <?php while ($donnees = $requete->fetch()) { ?> <form method="post"> <table cellpadding="0" cellspacing="3"> <tr> <th bgcolor="#D6DFF7" >Date de la sortie :</th> <td style="color:#808080"><?php echo dateFR($donnees->dmanif) ?></td> <th bgcolor="#D6DFF7">Objet :</th> <td colspan="5" style="color:#808080"><?php echo $donnees->event;?></td> </tr> <tr> <th bgcolor="#D6DFF7">Lieu :</th> <td style="color:#808080"><?php echo $donnees->lieu; ?></td> </tr> <tr> <th bgcolor="#D6DFF7">Ma réponse :</th> <td> <select name="reponse" size="1"> <option value="present">Je serai Présent</option> <option value="absent">Je serai Absent</option> <option value="saispas">Je ne sais pas encore</option> </select> </td> <th><input type="hidden" name="idmanif" value="<?php echo $donnees->idmanif; ?>" /></th> <td> <input type="hidden" name="action" value="ajouter" /> <input type="submit" name="submit" value="Envoyer ma réponse pour cette sortie" /> </td> </tr> </table> </form> <hr/> <?php } ?> </div>
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
Tu écris en https://forums.commentcamarche.net/forum/affich-34204801-requete-sql-avec-jointure#4 que tu as décidé de remplacer 488 par $idmanif. Pourquoi as-tu décidé cela, et pas de remplacer 488 par $PARAM['IDMANIF']?
j'avais déjà essayé comme ça mais sans résultat toujours
$sql = "SELECT nom,prenom,dmanif,reponse FROM cdc_repondre LEFT JOIN cdc_personnes ON cdc_personnes.idpers=cdc_repondre.idpers LEFT JOIN cdc_manifestations ON cdc_manifestations.idmanif=cdc_repondre.idmanif WHERE cdc_manifestations.idmanif='".$PARAM['IDMANIF']."' AND dmanif='$dmanif'";
c'est tout de même incroyable si je rentre cette requète en dur dans ma BDD cela me retourne bien
NOM PRENOM REPONSE
NOM PRENOM REPONSE
SELECT cdc_personnes.nom, cdc_personnes.prenom, cdc_repondre.reponse FROM cdc_personnes, cdc_repondre WHERE cdc_repondre.idmanif='488' AND cdc_repondre.idpers=cdc_personnes.idpers
Pourquoi c'est incroyable?
Que donnent
C'est quoi
Tu montres des petits morceaux de code, c'est pas évident de comprendre la globalité de ce que tu fais.
Que donnent
echo "$sql:".$sql."<br>"; echo "$dmanif:". var_dump $dmanif."<br>"; echo "$param:".var_dump $param."<br>";?
C'est quoi
$dmanif? Pourquoi fais-tu le test
dmanif='$dmanif'"?
Tu montres des petits morceaux de code, c'est pas évident de comprendre la globalité de ce que tu fais.
Bonjour
Alors voilà j'ai fait les tests avec cette requète.
En fait $dmanif on a pas besoin de tester
cette requète dans phpmyadmin me retourne bien les informations souhaitées.
Voici ce que donnent les résultats des echos
Alors voilà j'ai fait les tests avec cette requète.
En fait $dmanif on a pas besoin de tester
$sql = "SELECT nom,prenom,reponse FROM cdc_repondre R LEFT JOIN cdc_personnes P ON P.idpers = R.idpers WHERE R.idmanif = ".$PARAM['IDMANIF']; echo "$sql:".$sql."<br>"; echo "$idmanif:". var_dump ($idmanif)."<br>"; echo "$param:".var_dump ($param)."<br>"; $requete = $bdd->prepare($sql); $requete->execute(); while ($donnees = $requete->fetch()) { ?> <tr> <td><?php echo $donnees->nom; ?></td> <td><?php echo $donnees->prenom; ?></td> <td><?php echo $donnees->reponse; ?></td> </tr> <?php } ?>
cette requète dans phpmyadmin me retourne bien les informations souhaitées.
Voici ce que donnent les résultats des echos
SELECT nom,prenom,reponse FROM cdc_repondre R LEFT JOIN cdc_personnes P ON P.idpers = R.idpers WHERE R.idmanif = :SELECT nom,prenom,reponse FROM cdc_repondre R LEFT JOIN cdc_personnes P ON P.idpers = R.idpers WHERE R.idmanif = NULL : array(4) { ["IDREPON"]=> string(0) "" ["IDPERS"]=> string(0) "" ["IDMANIF"]=> string(0) "" ["REPONSE"]=> string(0) "" } Array:
Bonjour
Alors voilà j'ai trouvé le soucis.
En fait dans mon tableau j'ai changé la variable supergloba $_POST par $_REQUEST pour idmanif
Par contre ce qui m'ennuie c'est que je n'arrive pas à comprendre pourquoi.
Peux tu essayer de m'expliquer car sur le net je n'ai pas vraiment compris.
Je te remercie
Alors voilà j'ai trouvé le soucis.
En fait dans mon tableau j'ai changé la variable supergloba $_POST par $_REQUEST pour idmanif
$PARAM = array ( 'IDREPON' => isset($_REQUEST['idrepon']) ? $_REQUEST['idrepon'] : '', 'IDPERS' => isset($_POST['idpers']) ? $_POST['idpers'] : '', 'IDMANIF' => isset($_REQUEST['idmanif']) ? $_REQUEST['idmanif'] : '', 'REPONSE' => isset($_POST['reponse']) ? $_POST['reponse'] : '', );
Par contre ce qui m'ennuie c'est que je n'arrive pas à comprendre pourquoi.
Peux tu essayer de m'expliquer car sur le net je n'ai pas vraiment compris.
Je te remercie