Avatar billede christian-BN Praktikant
15. maj 2010 - 14:07 Der 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?
Avatar billede michael_stim Ekspert
15. maj 2010 - 14:43 #1
Multiarray laves med ekstra [] ($mulArr[][]). Eller har jeg misforstået?

Kan det desuden ikke hentes ud med én forespørgsel istedet?
Avatar billede christian-BN Praktikant
15. maj 2010 - 14:54 #2
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
Avatar billede michael_stim Ekspert
15. maj 2010 - 15:01 #3
Som jeg skrev tidligere, må det da være lettere at bruge én forespørgsel, eller?

SELECT a.detEne, a.detAndet, b.detTredje FROM questions a, songs b WHERE a.questionID=".$id." AND b.songID=a.questionSongID

Noget á la det.
Avatar billede christian-BN Praktikant
15. maj 2010 - 16:54 #4
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

getQuestions(20);
Avatar billede christian-BN Praktikant
15. maj 2010 - 18:33 #5
Super. Lig et svar og du får points
Avatar billede michael_stim Ekspert
26. maj 2010 - 12:47 #6
Ellers tak, samler ikke på point. Læg selv et svar og accepter.
Avatar billede christian-BN Praktikant
18. januar 2011 - 13:18 #7
tak for det,
glemte at lukke spørgsmålet
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester