Avatar billede mikaelboldt Nybegynder
16. juli 2008 - 17:16 Der er 9 kommentarer og
1 løsning

foreach i en WP plugin-funktion

Jeg forsøger at skrive en plugin til min weblog Wordpress.

og jeg er nu kommet så langt: (har undladt indledende kommentarer)
'function comments($no_comment,$exerpt_length)
{ global $wpdb;

// henter data vedd hjælp af en Wordpress funktion
    $rows= $wpdb->query("SELECT comment_ID, comment_post_ID, comment_author, comment_content, comment_approved FROM comments ORDER BY comment_ID DESC LIMIT ".$nocomment." WHERE comment_approved='1'");

// Vis data
    foreach ($rows as $row)
    {
        $tring='<a href="'.get_bloginfo ('url').'/?p='.$row[comment_post_ID].'#comment-'.$row[comment_ID].'">'.$row[comment_author].': </a>';

        if ($exerpt=0)
            {$tring.=$row[comment_content];}
        else
            {$tring.=substr($row[comment_content],0,$exerpt).'...';}
        $tring.= '<br/>';

        echo $tring;
    }
}
"
og nu til mit problem, jeg får denne besked:

Warning: Invalid argument supplied for foreach() in ...

Hvad er der galt?
Avatar billede straszek Praktikant
16. juli 2008 - 17:48 #1
Jeg tror der er en fejl i den query - "Where" skal komme før ORDER BY
Avatar billede mikaelboldt Nybegynder
16. juli 2008 - 18:06 #2
Jeg har nu prøvet at flytte rundt på rækkefølgen, men fejlen er den samme.

Warning: Invalid argument supplied for foreach() in ...
Avatar billede nielle Nybegynder
16. juli 2008 - 18:44 #3
Tror i hvert fald du skal rette fra:

$rows= $wpdb->query("SELECT comment_ID, comment_post_ID, comment_author, comment_content, comment_approved FROM comments ORDER BY comment_ID DESC LIMIT ".$nocomment." WHERE comment_approved='1'");

til:

$rows= $wpdb->query("SELECT comment_ID, comment_post_ID, comment_author, comment_content, comment_approved FROM comments ORDER BY comment_ID DESC LIMIT ".$no_comment." WHERE comment_approved='1'");
Avatar billede mikaelboldt Nybegynder
16. juli 2008 - 19:02 #4
ja du har ret, men i min original kode er der en definering af $nocomment således at man kan undlade at skrive tal og derved får en default værdi.

Fejlen ligger ikke i selve $wpdb->
men  måske i $rows og $row , skal disse defineres?
Avatar billede nielle Nybegynder
16. juli 2008 - 19:16 #5
Det er muligvis rigtigt at du har en default værdi, men det hjælper jo ikke på at du kalder variablen noget helt andet i SQL sætningen, end den gør i funktionens argument-liste :^)

Umiddelbart burde det være nok til at forklare den SQL fejl du får. Skal det forstås sådan at koden stadig fejler efter at du har rettet det? Med samme fejlbesked?
Avatar billede mikaelboldt Nybegynder
16. juli 2008 - 19:33 #6
fejlkoden er den samme jeg har haft et tal i stedet for variablen og fejlen er stadig den samme
Avatar billede nielle Nybegynder
16. juli 2008 - 19:48 #7
Der er sikkert en fejl i selce SQL'en. Det vilel forklare fejlkoden du får.

$wpdb må kunne udskrive selve SQL fejlkoden sådan at du kan finde den.
Avatar billede mikaelboldt Nybegynder
19. juli 2008 - 09:59 #8
Ja, fejlen lå i query koden

den rigtige kodes skal være:

$rows= $wpdb->query("SELECT comment_ID, comment_post_ID, comment_author, comment_content, comment_approved FROM $wpdb->comments WHERE comment_approved='1' ORDER BY comment_ID DESC LIMIT".$no_comment);

Tak for hjælpen
Avatar billede nielle Nybegynder
20. juli 2008 - 12:41 #9
Ok
Avatar billede nielle Nybegynder
07. september 2008 - 09:35 #10
Lukketid?
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