Vous ne pouvez pas récupérer un tableau multidimensionnel uniquement avec mysql (du moins pour autant que je sache). Vous devrez faire un traitement php. Cela ne semble pas trop fou.
Tout d'abord, mettez à jour votre requête pour sélectionner des réponses en même temps en rejoignant quiz_answers
sur quiz_questions
en utilisant l'identifiant de la question. Ensuite, dans votre boucle :
$quiz = array();
while ($row = mysql_fetch_assoc($result)) {
// you don't need to check num_rows
// fetch_assoc returns false after the last row, so you can do this
// which is cleaner
if (!isset($quiz[$row['question_id'])) {
$quiz[$row['question_id']] = array(
'question' => $row['question_text']
, 'answers' => array()
);
}
$quiz[$row['question_id']]['answers'][] = $row['answer_text'];
}
$full = json_encode(array('questions' => $quiz'));
Cela vous donnera le tableau que vous voulez après avoir été encodé en json.
Notez que vous finirez par sélectionner le texte/l'identifiant de la question une fois pour chaque réponse, ce qui est inefficace. Vous pouvez utiliser GROUP_CONCAT
sur les réponses, mais ce qui précède fonctionnera toujours presque à l'identique, il vous suffit de diviser la chaîne de réponse.
Je vous suggère également d'utiliser PDO
ou un autre wrapper sur mysql_*
.