array_push problems

Hello all. I’m pretty new to this, but I’m trying to build a script that will write random questions for a quiz app that I’m working on. The data is contained in two different tables. I’m trying to randomize the question order that is spit out, as well as randomize the answer order that is displayed. The output has to be in the specific JSON string that is denoted in the code. There are no errors when I go the url that I load the script, however, the string is not populated with any of the data from my tables. Could someone please take a look at this and tell me where I’m going wrong. Thank you in advance.

[php]

<?php //Connect To Database $hostname=""; $username=""; $password=""; $dbname=""; $question_table="wp_mtouchquiz_question"; $answer_table="wp_mtouchquiz_answer"; $yourfield = "question"; $question = "question"; $answer = "answer"; $connection = mysql_connect($hostname, $username, $password); $lastQuestionID = -1; $str = ""; mysql_select_db($dbname, $connection); # Check If Record Exists $query = "SELECT * FROM $question_table q, $answer_table a WHERE q.ID = a.QUESTION_ID AND q.quiz_id = 1 ORDER BY question_id ASC, correct DESC"; $result = mysql_query($query); $questions = array(); $fields = array(); if($result) { while($row = mysql_fetch_array($result)) { if($lastQuestionID != $row["question_id"]) { $fields = array(); if($lastQuestionID != -1) { array_push($questions, $fields); } $fields = array(); $lastQuestionID = $row["question_id"]; $fields["question_id"] = $row["question_id"]; $fields["question"] = $row["question"]; } // correct if($row["correct"] == 1) { $fields["correct"] = $row["answer"]; } // incorrect if ($row["sort_order"] ==2) { $fields["incorrect0"] = $row["answer"]; } // incorrect if ($row["sort_order"] ==3) { $fields["incorrect1"] = $row["answer"]; } // incorrect if ($row["sort_order"] ==4) { $fields["incorrect2"] = $row["answer"]; } if ($row["sort_order"] ==5) { $fields["incorrect3"] = $row["answer"]; } } $str .= "{\"childItems\":["; $numQuestionsToUse = 172; //Set this larger than returned questions or less than row limit / 5 $randomQuestionKeys = array_rand($questions, $numQuestionsToUse); $numQuestions = count($randomQuestionKeys); for($i = 0; $i < $numQuestions ; $i++){ $pickedField = $questions[$randomQuestionKeys[$i]]; $str .= "{\"itemId\":\"question" . $pickedField["question_id"] . "\","; $str .= "\"itemType\":\"BT_questionItem\","; $str .= "\"questionText\":\"" . $pickedField["question"] . "\","; $str .= "\"correctAnswerText\":\"" . $pickedField["answer"] . "\","; $incorrectAnswers = array(); array_push($incorrectAnswers, $pickedField["incorrect0"]); array_push($incorrectAnswers, $pickedField["incorrect1"]); array_push($incorrectAnswers, $pickedField["incorrect2"]); array_push($incorrectAnswers, $pickedField["incorrect3"]); $incorrectAnsKey = array_rand($incorrectAnswers, 3); $str .= "\"incorrectText1\":\"" . $incorrectAnswers[$incorrectAnsKey[0]] . "\","; $str .= "\"incorrectText2\":\"" . $incorrectAnswers[$incorrectAnsKey[0]] . "\","; $str .= "\"incorrectText3\":\"" . $incorrectAnswers[$incorrectAnsKey[0]] . "\","; $str .= "\"imageURLSmallDevice\":\"http://www.myquizcoach.com/extras/images/clear_header.png\","; $str .= "\"imageURLLargeDevice\":\"http://www.myquizcoach.com/extras/images/clear_header.png\"},"; } // remove last comma $str = substr($str,'',-1); $str .= "] }"; echo $str; } ?>[/php]

Rather than manually putting your code into JSON format, you can use the json_encode function.

As well as that, please can you echo out the $query variable then run the query it generates manually - just to ensure that it generates the output that you’re looking for.

Thank you for the prompt reply.

When I run an echo $row[“answer”]; I get the correct answers in the correct order.
when I run and echo $row[“question”]; I get the question stated 5 times, which it should. Hopefully that is what you were referring to. If not please let me know and I’ll do something else.

I’ll check out the json_encode option.

I meant echo out the $query variable:

[php]echo $query;[/php]

I checked the query variable and it is pulling from the correct tables from the proper variables. So that part looks good. Any other thoughts?

Right before:

[php]$randomQuestionKeys = array_rand($questions, $numQuestionsToUse);
$numQuestions = count($randomQuestionKeys);
for($i = 0; $i < $numQuestions ; $i++){[/php]

Can you reply back with the output of:

[php]print_r($questions);
print_r($fields);[/php]

Here is what it looks like:

Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) [6] => Array ( ) [7] => Array ( ) [8] => Array ( ) [9] => Array ( ) [10] => Array ( ) [11] => Array ( ) [12] => Array ( ) [13] => Array ( ) [14] => Array ( ) [15] => Array ( ) [16] => Array ( ) [17] => Array ( ) [18] => Array ( ) [19] => Array ( ) [20] => Array ( ) [21] => Array ( ) [22] => Array ( ) [23] => Array ( ) [24] => Array ( ) [25] => Array ( ) [26] => Array ( ) [27] => Array ( ) [28] => Array ( ) [29] => Array ( ) [30] => Array ( ) [31] => Array ( ) [32] => Array ( ) [33] => Array ( ) [34] => Array ( ) [35] => Array ( ) [36] => Array ( ) [37] => Array ( ) [38] => Array ( ) [39] => Array ( ) [40] => Array ( ) [41] => Array ( ) [42] => Array ( ) [43] => Array ( ) [44] => Array ( ) [45] => Array ( ) [46] => Array ( ) [47] => Array ( ) [48] => Array ( ) [49] => Array ( ) [50] => Array ( ) [51] => Array ( ) [52] => Array ( ) [53] => Array ( ) [54] => Array ( ) [55] => Array ( ) [56] => Array ( ) [57] => Array ( ) [58] => Array ( ) [59] => Array ( ) [60] => Array ( ) [61] => Array ( ) [62] => Array ( ) [63] => Array ( ) [64] => Array ( ) [65] => Array ( ) [66] => Array ( ) [67] => Array ( ) [68] => Array ( ) [69] => Array ( ) [70] => Array ( ) [71] => Array ( ) [72] => Array ( ) [73] => Array ( ) [74] => Array ( ) [75] => Array ( ) [76] => Array ( ) [77] => Array ( ) [78] => Array ( ) [79] => Array ( ) [80] => Array ( ) [81] => Array ( ) [82] => Array ( ) [83] => Array ( ) [84] => Array ( ) [85] => Array ( ) [86] => Array ( ) [87] => Array ( ) [88] => Array ( ) [89] => Array ( ) [90] => Array ( ) [91] => Array ( ) [92] => Array ( ) [93] => Array ( ) [94] => Array ( ) [95] => Array ( ) [96] => Array ( ) [97] => Array ( ) [98] => Array ( ) [99] => Array ( ) [100] => Array ( ) [101] => Array ( ) [102] => Array ( ) [103] => Array ( ) [104] => Array ( ) [105] => Array ( ) [106] => Array ( ) [107] => Array ( ) [108] => Array ( ) [109] => Array ( ) [110] => Array ( ) [111] => Array ( ) [112] => Array ( ) [113] => Array ( ) [114] => Array ( ) [115] => Array ( ) [116] => Array ( ) [117] => Array ( ) [118] => Array ( ) [119] => Array ( ) [120] => Array ( ) [121] => Array ( ) [122] => Array ( ) [123] => Array ( ) [124] => Array ( ) [125] => Array ( ) [126] => Array ( ) [127] => Array ( ) [128] => Array ( ) [129] => Array ( ) [130] => Array ( ) [131] => Array ( ) [132] => Array ( ) [133] => Array ( ) [134] => Array ( ) [135] => Array ( ) [136] => Array ( ) [137] => Array ( ) [138] => Array ( ) [139] => Array ( ) [140] => Array ( ) [141] => Array ( ) [142] => Array ( ) [143] => Array ( ) [144] => Array ( ) [145] => Array ( ) [146] => Array ( ) [147] => Array ( ) [148] => Array ( ) [149] => Array ( ) [150] => Array ( ) [151] => Array ( ) [152] => Array ( ) [153] => Array ( ) [154] => Array ( ) [155] => Array ( ) [156] => Array ( ) [157] => Array ( ) [158] => Array ( ) [159] => Array ( ) [160] => Array ( ) [161] => Array ( ) [162] => Array ( ) [163] => Array ( ) [164] => Array ( ) [165] => Array ( ) [166] => Array ( ) [167] => Array ( ) [168] => Array ( ) [169] => Array ( ) [170] => Array ( ) [171] => Array ( ) ) Array ( [question_id] => 381 [question] => During an allergic response, what type of cells release histamine? [correct] => Mast cells [incorrect0] => Satellite cells [incorrect1] => B cells [incorrect2] => Epithelial cells [incorrect3] => Myoepithelial cells ) {“childItems”:[Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) [6] => Array ( ) [7] => Array ( ) [8] => Array ( ) [9] => Array ( ) [10] => Array ( ) [11] => Array ( ) [12] => Array ( ) [13] => Array ( ) [14] => Array ( ) [15] => Array ( ) [16] => Array ( ) [17] => Array ( ) [18] => Array ( ) [19] => Array ( ) [20] => Array ( ) [21] => Array ( ) [22] => Array ( ) [23] => Array ( ) [24] => Array ( ) [25] => Array ( ) [26] => Array ( ) [27] => Array ( ) [28] => Array ( ) [29] => Array ( ) [30] => Array ( ) [31] => Array ( ) [32] => Array ( ) [33] => Array ( ) [34] => Array ( ) [35] => Array ( ) [36] => Array ( ) [37] => Array ( ) [38] => Array ( ) [39] => Array ( ) [40] => Array ( ) [41] => Array ( ) [42] => Array ( ) [43] => Array ( ) [44] => Array ( ) [45] => Array ( ) [46] => Array ( ) [47] => Array ( ) [48] => Array ( ) [49] => Array ( ) [50] => Array ( ) [51] => Array ( ) [52] => Array ( ) [53] => Array ( ) [54] => Array ( ) [55] => Array ( ) [56] => Array ( ) [57] => Array ( ) [58] => Array ( ) [59] => Array ( ) [60] => Array ( ) [61] => Array ( ) [62] => Array ( ) [63] => Array ( ) [64] => Array ( ) [65] => Array ( ) [66] => Array ( ) [67] => Array ( ) [68] => Array ( ) [69] => Array ( ) [70] => Array ( ) [71] => Array ( ) [72] => Array ( ) [73] => Array ( ) [74] => Array ( ) [75] => Array ( ) [76] => Array ( ) [77] => Array ( ) [78] => Array ( ) [79] => Array ( ) [80] => Array ( ) [81] => Array ( ) [82] => Array ( ) [83] => Array ( ) [84] => Array ( ) [85] => Array ( ) [86] => Array ( ) [87] => Array ( ) [88] => Array ( ) [89] => Array ( ) [90] => Array ( ) [91] => Array ( ) [92] => Array ( ) [93] => Array ( ) [94] => Array ( ) [95] => Array ( ) [96] => Array ( ) [97] => Array ( ) [98] => Array ( ) [99] => Array ( ) [100] => Array ( ) [101] => Array ( ) [102] => Array ( ) [103] => Array ( ) [104] => Array ( ) [105] => Array ( ) [106] => Array ( ) [107] => Array ( ) [108] => Array ( ) [109] => Array ( ) [110] => Array ( ) [111] => Array ( ) [112] => Array ( ) [113] => Array ( ) [114] => Array ( ) [115] => Array ( ) [116] => Array ( ) [117] => Array ( ) [118] => Array ( ) [119] => Array ( ) [120] => Array ( ) [121] => Array ( ) [122] => Array ( ) [123] => Array ( ) [124] => Array ( ) [125] => Array ( ) [126] => Array ( ) [127] => Array ( ) [128] => Array ( ) [129] => Array ( ) [130] => Array ( ) [131] => Array ( ) [132] => Array ( ) [133] => Array ( ) [134] => Array ( ) [135] => Array ( ) [136] => Array ( ) [137] => Array ( ) [138] => Array ( ) [139] => Array ( ) [140] => Array ( ) [141] => Array ( ) [142] => Array ( ) [143] => Array ( ) [144] => Array ( ) [145] => Array ( ) [146] => Array ( ) [147] => Array ( ) [148] => Array ( ) [149] => Array ( ) [150] => Array ( ) [151] => Array ( ) [152] => Array ( ) [153] => Array ( ) [154] => Array ( ) [155] => Array ( ) [156] => Array ( ) [157] => Array ( ) [158] => Array ( ) [159] => Array ( ) [160] => Array ( ) [161] => Array ( ) [162] => Array ( ) [163] => Array ( ) [164] => Array ( ) [165] => Array ( ) [166] => Array ( ) [167] => Array ( ) [168] => Array ( ) [169] => Array ( ) [170] => Array ( ) [171] => Array ( ) ) Array ( [question_id] => 381 [question] => During an allergic response, what type of cells release histamine? [correct] => Mast cells [incorrect0] => Satellite cells [incorrect1] => B cells [incorrect2] => Epithelial cells [incorrect3] => Myoepithelial cells ) {“childItems”:[{“itemId”:“question”,“itemType”:“BT_questionItem”,“questionText”:"",“correctAnswerText”:"",“incorrectText1”:"",“incorrectText2”:"",“incorrectText3”:"",“imageURLSmallDevice”:“http://www.myquizcoach.com/extras/images/clear_header.png",“imageURLLargeDevice”:"http://www.myquizcoach.com/extras/images/clear_header.png”},

The “{“itemId”:“question”,“itemType”:“BT_questionItem”,“questionText”:”",“correctAnswerText”:"",“incorrectText1”:"",“incorrectText2”:"",“incorrectText3”:"",“imageURLSmallDevice”:"http://www.myquizcoach.com/extras/images/clear_header.png",“imageURLLargeDevice”:“http://www.myquizcoach.com/extras/images/clear_header.png”},"

repeats about 171 times and ends with:

“{“itemId”:“question”,“itemType”:“BT_questionItem”,“questionText”:”",“correctAnswerText”:"",“incorrectText1”:"",“incorrectText2”:"",“incorrectText3”:"",“imageURLSmallDevice”:“http://www.myquizcoach.com/extras/images/clear_header.png",“imageURLLargeDevice”:"http://www.myquizcoach.com/extras/images/clear_header.png”}] }"

I had a paste error on this… Here is what it should have been:

Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) [6] => Array ( ) [7] => Array ( ) [8] => Array ( ) [9] => Array ( ) [10] => Array ( ) [11] => Array ( ) [12] => Array ( ) [13] => Array ( ) [14] => Array ( ) [15] => Array ( ) [16] => Array ( ) [17] => Array ( ) [18] => Array ( ) [19] => Array ( ) [20] => Array ( ) [21] => Array ( ) [22] => Array ( ) [23] => Array ( ) [24] => Array ( ) [25] => Array ( ) [26] => Array ( ) [27] => Array ( ) [28] => Array ( ) [29] => Array ( ) [30] => Array ( ) [31] => Array ( ) [32] => Array ( ) [33] => Array ( ) [34] => Array ( ) [35] => Array ( ) [36] => Array ( ) [37] => Array ( ) [38] => Array ( ) [39] => Array ( ) [40] => Array ( ) [41] => Array ( ) [42] => Array ( ) [43] => Array ( ) [44] => Array ( ) [45] => Array ( ) [46] => Array ( ) [47] => Array ( ) [48] => Array ( ) [49] => Array ( ) [50] => Array ( ) [51] => Array ( ) [52] => Array ( ) [53] => Array ( ) [54] => Array ( ) [55] => Array ( ) [56] => Array ( ) [57] => Array ( ) [58] => Array ( ) [59] => Array ( ) [60] => Array ( ) [61] => Array ( ) [62] => Array ( ) [63] => Array ( ) [64] => Array ( ) [65] => Array ( ) [66] => Array ( ) [67] => Array ( ) [68] => Array ( ) [69] => Array ( ) [70] => Array ( ) [71] => Array ( ) [72] => Array ( ) [73] => Array ( ) [74] => Array ( ) [75] => Array ( ) [76] => Array ( ) [77] => Array ( ) [78] => Array ( ) [79] => Array ( ) [80] => Array ( ) [81] => Array ( ) [82] => Array ( ) [83] => Array ( ) [84] => Array ( ) [85] => Array ( ) [86] => Array ( ) [87] => Array ( ) [88] => Array ( ) [89] => Array ( ) [90] => Array ( ) [91] => Array ( ) [92] => Array ( ) [93] => Array ( ) [94] => Array ( ) [95] => Array ( ) [96] => Array ( ) [97] => Array ( ) [98] => Array ( ) [99] => Array ( ) [100] => Array ( ) [101] => Array ( ) [102] => Array ( ) [103] => Array ( ) [104] => Array ( ) [105] => Array ( ) [106] => Array ( ) [107] => Array ( ) [108] => Array ( ) [109] => Array ( ) [110] => Array ( ) [111] => Array ( ) [112] => Array ( ) [113] => Array ( ) [114] => Array ( ) [115] => Array ( ) [116] => Array ( ) [117] => Array ( ) [118] => Array ( ) [119] => Array ( ) [120] => Array ( ) [121] => Array ( ) [122] => Array ( ) [123] => Array ( ) [124] => Array ( ) [125] => Array ( ) [126] => Array ( ) [127] => Array ( ) [128] => Array ( ) [129] => Array ( ) [130] => Array ( ) [131] => Array ( ) [132] => Array ( ) [133] => Array ( ) [134] => Array ( ) [135] => Array ( ) [136] => Array ( ) [137] => Array ( ) [138] => Array ( ) [139] => Array ( ) [140] => Array ( ) [141] => Array ( ) [142] => Array ( ) [143] => Array ( ) [144] => Array ( ) [145] => Array ( ) [146] => Array ( ) [147] => Array ( ) [148] => Array ( ) [149] => Array ( ) [150] => Array ( ) [151] => Array ( ) [152] => Array ( ) [153] => Array ( ) [154] => Array ( ) [155] => Array ( ) [156] => Array ( ) [157] => Array ( ) [158] => Array ( ) [159] => Array ( ) [160] => Array ( ) [161] => Array ( ) [162] => Array ( ) [163] => Array ( ) [164] => Array ( ) [165] => Array ( ) [166] => Array ( ) [167] => Array ( ) [168] => Array ( ) [169] => Array ( ) [170] => Array ( ) [171] => Array ( ) ) Array ( [question_id] => 381 [question] => During an allergic response, what type of cells release histamine? [correct] => Mast cells [incorrect0] => Satellite cells [incorrect1] => B cells [incorrect2] => Epithelial cells [incorrect3] => Myoepithelial cells ) {“childItems”:[{“itemId”:“question”,“itemType”:“BT_questionItem”,“questionText”:"",“correctAnswerText”:"",“incorrectText1”:"",“incorrectText2”:"",“incorrectText3”:"",“imageURLSmallDevice”:“http://www.myquizcoach.com/extras/images/clear_header.png",“imageURLLargeDevice”:"http://www.myquizcoach.com/extras/images/clear_header.png”},

The “{“itemId”:“question”,“itemType”:“BT_questionItem”,“questionText”:”",“correctAnswerText”:"",“incorrectText1”:"",“incorrectText2”:"",“incorrectText3”:"",“imageURLSmallDevice”:"http://www.myquizcoach.com/extras/images/clear_header.png",“imageURLLargeDevice”:“http://www.myquizcoach.com/extras/images/clear_header.png”},"

repeats about 171 times and ends with:

“{“itemId”:“question”,“itemType”:“BT_questionItem”,“questionText”:”",“correctAnswerText”:"",“incorrectText1”:"",“incorrectText2”:"",“incorrectText3”:"",“imageURLSmallDevice”:“http://www.myquizcoach.com/extras/images/clear_header.png",“imageURLLargeDevice”:"http://www.myquizcoach.com/extras/images/clear_header.png”}] }"

Any thoughts yet?

I’m sorry but I have no idea! It seems you have a mass of blank items in your arrays - hopefully another PHP helper will be able to have a look and figure something out. Sorry!!

Sponsor our Newsletter | Privacy Policy | Terms of Service