15. maj 2010 - 14:07Der er
6 kommentarer og 1 løsning
Arrays med PHP/ZEND
Hej,
Jeg har brug for hjælp vedr. PHP og Zend.
Jeg har en grundlæggende kode hvor får en værdi ind. Den henter derefter alt ud fra en tabel som hedder quiz. I den tabel ligger der en post som indeholder en masse spørgsmål i form af deres ID. Det ligger som en streng som skal laves om et til array hvorefter jeg henter alle spørgsmålene ind. Igen i questions ligger der en værdi hvor der tilknytter sig et lydklip. Jeg kan lave en funktion til dem alle sammen hvor jeg hver henter alle tingene en af gangen, men så snart jeg skal have lavet det hele til een funktion så får jeg bare en lang fejlbesked fra ZEND som ikke beskriver problemet.
I alt skal jeg hente fra quiz ($id), questions og fra songs.
Koden jeg starter med. public function getQuestions($id) { $output = array(); $array = array(); $arrayList = array(); $result = mysql_query("SELECT * FROM quiz where quizID = '$id'") or die(mysql_error()); while($row = mysql_fetch_assoc( $result )) { $str = $row['quizQuestions']; $str = explode(",", $str); array_push($arrayList, $str); array_push($array, $row); $output = array_merge((array)$array, (array)$arrayList); // array_push($array, $arrayList) } // closing while
foreach ($arrayList as $v) { $result = mysql_query("SELECT * FROM questions WHERE questionID = '$v'") or die(mysql_error()); while($questions = mysql_fetch_assoc( $result )) { array_push($array, $questions) } } return $array; } // closing function getQuizAll
Nogen der ved om man kan lave multidimensionelle arrays i ZEND?
Hvordan vil du bruge den? $result = mysql_query("SELECT * FROM quiz where quizID = '$id'") or die(mysql_error()); while($row = mysql_fetch_assoc( $result )) { $str = $row['quizQuestions']; ... quizQuestions indeholder op til 20 værdier 1,2,3.. etc. Ud fra den værdi skal jeg hente oplysninger fra en anden tabel hvor id er lige quizQuestions værdien. I quizQuestions ligger der yderligere en henvisning til lydklippet i hvert spørgsmål. så ud fra det skal den værdi skal man hente oplysninger. Jeg kan ikke umiddelbart se en muliged for at hente det hele i een foresspørgsel. Men hvis du har en ide er du meget velkommen til at dele den :)
Hvis jeg henter eet spørgsmål ud, så kan jeg bruge følgende. Det giver mig dig 2 arrays i ZEND (tjekket i ZAMF-Browser) public function listQuestion($id) { $result = mysql_query("SELECT * FROM questions where questionID = '$id'") or die(mysql_error()); $array = array(); while($row = mysql_fetch_assoc( $result )) { array_push($array, $row);
// Getting songinformations $songinfo = mysql_query("SELECT * FROM songs where songID = '$row[questionSongID]'") or die(mysql_error()); while($songdata = mysql_fetch_assoc( $songinfo )) { array_push($array, $songdata); }
} // closing while return $array; } // closing function getQuizAll
Det virker jo langt mere fornuftigt. Tak for den. Har du evt. også en ide til hvordan jeg får det kogt ned til at output jeg returnere til send? Pt bruger jeg bare print_r til at tjekke med. Har forsøgt at definere et array inden min forespørgsel og bruge array_push i min while. outputtet bliver bare "array" så..
function getQuestions($id) { $array = array(); $result = mysql_query("SELECT * FROM quiz,questions,songs WHERE quiz.quizID = '$id' && questions.quizID = '$id' && questions.questionID = songs.questionID") or die(mysql_error()); // $result = mysql_query("SELECT * FROM questions WHERE quizID = '$id'") or die(mysql_error()); while($row = mysql_fetch_array( $result )) { print_r($row); } // closing while } // closing function getQuizAll
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.