Я хочу создать некоторые онлайн-опросы, используя значения, хранящиеся в таблице базы данных. На каждой странице будет отображаться десять вопросов, каждый из которых будет отвечать на четыре возможных ответа …
What color are apples? red yellow blue pink
Я знаю, как создать простой массив, который отобразит все вопросы. Или я могу отобразить все ответы. Но группировка каждого набора ответов с соответствующим ответом сложнее.
Кто-то предложил использовать многомерный массив в сочетании с foreach. Поэтому я начал проверять некоторые связанные потоки, в том числе один php PDO fetchAll () – пока не работает, foreach работает, но я полностью снегопаду.
Это то, что я придумал до сих пор …
$Questions = array('question' => $Question, 'answers' => array($Answers)); foreach ($Questions as $Question => $Answers) { echo $Questions.'<br />'; }
Но у него, вероятно, больше ошибок, чем я могу подсчитать. Это по крайней мере на правильном пути?
Я разместил свой код ниже.
$stmt = $pdo->prepare("SELECT T.URL, TQ.URL, TQ.QID, TQ.Question, TQ.Feedback, TA.URL, TA.QID QID2, TA.Value, TA.Answer, TA.Correct FROM g_tests T LEFT JOIN g_test_questions TQ ON TQ.URL = T.URL LEFT JOIN g_test_answers TA ON TA.URL = T.URL WHERE T.URL = 'gw-intro-1' AND TQ.QID = TA.QID ORDER BY TA.N"); $stmt->execute(array( 'MyURL'=>$MyURL )); while ($row = $stmt->fetch()) { $URL = $row['URL']; $QID = $row['QID']; $QID2 = $row['QID2']; $Question = $row['Question']; $Feedback = $row['Feedback']; $Value = $row['Value']; $Answer = $row['Answer']; $Correct = $row['Correct']; $Correct = str_replace('1', 'correct', $Correct); $Correct = str_replace('2', 'wrong', $Correct); $Questions = array('question' => $Question, 'answers' => array($Answers)); foreach ($Questions as $Question => $Answers) { echo $Questions.'<br />'; } }
Я отредактировал это, чтобы показать мой пересмотренный код:
$stmt = $pdo->prepare("SELECT T.Site, T.Type, T.URL, T.Section, T.URL_Foreign, T.Title, T.Subtitle, T.Parent, T.Live, TQ.URL, TQ.QID, TQ.Question, TQ.Feedback, TA.URL, TA.QID QID2, TA.Value, TA.Answer, TA.Correct FROM g_tests T LEFT JOIN g_test_questions TQ ON TQ.URL = T.URL LEFT JOIN g_test_answers TA ON TA.URL = T.URL WHERE T.URL = 'gw-intro-1' AND TQ.QID = TA.QID ORDER BY TA.N"); $stmt->execute(array('MyURL' => $MyURL)); $Array = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($Array as $dataset){ foreach ($dataset as $Column => $Value){ echo "The column [$Column] contains [$Value] <br> \r\n"; } }