Avatar billede 1409 Praktikant
03. februar 2007 - 19:05 Der er 2 kommentarer og
1 løsning

php-MySQL med dobbelt while-løkke

Tabellen obc består af obcId, emne og tekst. obcId er primærnøgle.
Tabellen pdf består af pdfId, obcId og pdfFil. pdfId er primærnøgle.

I tabellen pdf kan obcId optræde flere gange eller overhovedet ikke.

Jeg har forsøgt med dette, at foretage et udtræk, der skal resultere i visning af x-antal emner og tekster, samt evt. pdf-filer (ingen, en eller flere), der måtte være tilknyttet hver af disse.
Et eller andet går galt... :-/ Der vises hverken alle pdf-henvisninger eller alle emner og tekster.

$query = MYSQL_QUERY("SELECT o.obcId AS oobcId, emne, tekst, p.obcId AS pobcId, pdfFil FROM obc o ".
"LEFT JOIN pdf p ON o.obcId = p.obcId ");
$r = MYSQL_FETCH_ARRAY($query);
WHILE($r){
    $oobcId = $r["oobcId"];
    $emne = $r["emne"];
    $tekst = $r["tekst"];
       
    ECHO "<TD WIDTH=\"500\" VALIGN=\"top\"><B>$emne</B><BR>$tekst</TD></TR>\n";

    //hente pdf'er fra db
    WHILE($oobcId == $r["pobcId"]) {
        $pdfFil = $r["pdfFil"];
        ECHO "<TR><TD>$pdfFil<BR><BR></TD></TR>\n";

        $r = MYSQL_FETCH_ARRAY($query);
    }
    $r = MYSQL_FETCH_ARRAY($query);
}
Avatar billede esben85 Nybegynder
04. februar 2007 - 00:32 #1
...
        $r = MYSQL_FETCH_ARRAY($query);
    }
    $r = MYSQL_FETCH_ARRAY($query);
}
...
Du kører jo mysql_fetch_array($query); i begge dine løkker. Det er nok derfor der går noget data tabt
Avatar billede esben85 Nybegynder
04. februar 2007 - 00:48 #2
Jeg har ændret lidt (dog ikke testet det), men ideen er, at bruge mysql_data_seek() til at indstille den interne "resultat reference" til det punkt den var, inden 2. while-løkke begyndte.

<?php
$query = MYSQL_QUERY("SELECT o.obcId AS oobcId, emne, tekst, p.obcId AS pobcId, pdfFil FROM obc o ".
"LEFT JOIN pdf p ON o.obcId = p.obcId ");
$r = MYSQL_FETCH_ARRAY($query);
$i = 0;
WHILE($r){
    $oobcId = $r["oobcId"];
    $emne = $r["emne"];
    $tekst = $r["tekst"];
     
    ECHO "<TD WIDTH=\"500\" VALIGN=\"top\"><B>$emne</B><BR>$tekst</TD></TR>\n";

    //hente pdf'er fra db
    WHILE($oobcId == $r["pobcId"]) {
        $pdfFil = $r["pdfFil"];
        ECHO "<TR><TD>$pdfFil<BR><BR></TD></TR>\n";
        $r = MYSQL_FETCH_ARRAY($query);
    }
    $i++;
    mysql_data_seek($query,$i);
    $r = MYSQL_FETCH_ARRAY($query);
}
?>
Avatar billede 1409 Praktikant
16. april 2010 - 09:15 #3
lukker...
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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