2013-08-31 4 views
0

Je ne suis pas vraiment sûr si une requête imbriquée est ce dont j'ai besoin.Deuxième requête pour afficher les données pour seulement quelques lignes de la requête initiale

Je travaille sur un site où les enseignants peuvent créer des quiz pour aider leurs élèves à apprendre. J'ai une requête simple qui fait écho aux questionnaires qu'un enseignant connecté a déjà créés, en fonction de l'identifiant de session du membre correspondant à member_id dans tbl_quiz_titles. Sous chaque nom de quiz se trouve un bouton (dans un formulaire) qui permet à l'enseignant d'aller à une autre page pour ajouter un badge au quiz, que les étudiants peuvent recevoir s'ils obtiennent un certain pourcentage, déterminé par l'enseignant.

Voici mon code actuel:

session_start(); 
    include "mysqlpdo_connect.php"; 
     $my_quiz_query = $pdo->query("SELECT * FROM tbl_quiz_titles WHERE member_id = '{$_SESSION['member_id']}'") ; 

$result_my_quiz_query = $my_quiz_query->fetchAll(PDO::FETCH_ASSOC); 

     foreach($result_my_quiz_query as $row_my_quiz_query) { 


echo $row_my_quiz_query['quiz_id'] . ": " . $row_my_quiz_query['quiz_name'] . "<br/> 

<form action=\"ebox_badge_new.php\" method=\"get\" style=\"float: left\"> 
    <input type=\"hidden\" name=\"ref\" value=\"" . $row_my_quiz_query['quiz_id'] . "\" />    
    <button><img src=\"images/icons/Add_Badge_Btn.gif\" alt=\"Add badge to quiz\" width=\"100\" height=\"25\" border=\"0\" /></button> 
</form> 
<br/> 
<br/> 

"; 

     } 

Le problème est que cette requête montre le bouton du formulaire sous chaque nom de quiz. Une fois qu'un enseignant a ajouté un badge à son questionnaire, je ne veux plus qu'il voit le formulaire pour ajouter un badge pour ce quiz particulier.

Il convient de noter que les badges sont stockés dans tbl_badges, l'identifiant du quiz étant stocké dans la colonne "badge_quiz_id".

Ma question est donc la suivante: Comment puis-je changer le code de manière à ce que le bouton de formulaire n'apparaisse que pour les quiz auxquels aucun badge n'est associé?

Ie: row_my_quiz_query de $ [ 'de quiz_name']

doit être repris pour chaque jeu-questionnaire, mais la forme ne doit être indiqué lorsque row_my_quiz_query de $ [ 'quiz_id'] ne se voit pas dans tbl_quiz_badges.badge_quiz_id?

Tous les conseils seraient grandement appréciés.

Cheers, Dave

+0

vous avez besoin JOIN dans votre requête –

Répondre

0

Merci de me pointer dans la bonne direction "votre bon sens".

C'est ce que je suis venu avec, qui semble faire l'affaire:

<?php 
    session_start(); 
    include "mysqlpdo_connect.php"; 
     $my_quiz_query = $pdo->query("SELECT * 
FROM `tbl_quiz_titles` 
LEFT JOIN 
    `tbl_badges` 
ON  `member_id` = '{$_SESSION['member_id']}' 
    AND `quiz_id` = `badge_quiz_id`") ; 





$result_my_quiz_query = $my_quiz_query->fetchAll(PDO::FETCH_ASSOC); 

     foreach($result_my_quiz_query as $row_my_quiz_query) { 


echo $row_my_quiz_query['quiz_id'] . ": " . $row_my_quiz_query['quiz_name'] . "<br/>"; 

if ($row_my_quiz_query['badge_quiz_id'] == "") 
{ 


echo" <form action=\"ebox_badge_new.php\" method=\"get\" style=\"float: left\"> 
    <input type=\"hidden\" name=\"ref\" value=\"" . $row_my_quiz_query['quiz_id'] . "\" />    
    <button><img src=\"images/icons/Add_Badge_Btn.gif\" alt=\"Add badge to quiz\" width=\"100\" height=\"25\" border=\"0\" /></button> 
</form> 
<br/> 
<br/> 

"; 
    } 
     } 
     ?> 
Questions connexes