Neo: mysql_fetch_array(): +fehler

Hi ich habe einen Fehler in einem Script den ich nicht beheben kann. Warscheinlich habe i ein temp. Brett vor meinem Kopf. Hier das Script

function recentdown() {
    global $prefix, $sitename;

$boxstuff = "";
    $boxtitle = "";
 $topdown = "3";
    $boxstuff .="<center><a href="download.php">";
    $boxstuff .="<img src="themes/dgfr/images/minib1.gif" border=0 valign=top> Last files available on $sitename...</a><br>";
 $resultld = mysql_query("SELECT lid, cid, sid, title, date, hits from $prefix"._downloads_downloads." order by date DESC LIMIT $topdown");
 while ($myrowld = mysql_fetch_array($resultld)) {
 $boxstuff .= " <a href="modules.php?op=modload&name=Downloads&file=index&req=viewsdownload&sid=$myrowld[sid]">$myrowld[title]</a> (x$myrowld[hits])<br>\n";
 #echo " $myrowld[date]<br>\n";
 }
 $boxstuff .= "</center>";
 $boxtitle = "";

themecenterposts($boxtitle, $boxstuff);
    mysql_free_result($resultld);
}

-------
Bekomme dann immer diese schoenen Fehler

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/server3/public_html/17/alex86/html/themes/dgfr/morefunc.php on line 163
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/server3/public_html/17/alex86/html/themes/dgfr/morefunc.php on line 172

Ich weiß wirklich nicht warum ? Ist ein Tippfehler schuld?

MfG

Neo

  1. Holladiewaldfee,

    $resultld = mysql_query("SELECT lid, cid, sid, title, date, hits from $prefix"._downloads_downloads." order by date DESC LIMIT $topdown");

    Was ist das?
    Hast Du wirklich eine Konstante _donwloads_downloads definiert?
    Es hat nämlich den Anschein als würde die Query nicht richtig sein - damit würde kein gültiges Ergebnis zurückgegeben (sonder ein Fehler). Und damit kann dann mysql_fetch_array nichts anfangen.

    Ciao,

    Harry

    --
      Man weiß erst was man hatte, wenn man es verloren hat.
      Intelligenz ist nicht zwingend etwas positives.
    1. CREATE TABLE nuke\_downloads\_downloads (
        pn\_lid int(11) NOT NULL auto_increment,
        pn\_cid int(11) NOT NULL default '0',
        pn\_sid int(11) NOT NULL default '0',
        pn\_title varchar(100) NOT NULL default '',
        pn\_url varchar(254) NOT NULL default '',
        pn\_description text NOT NULL,
        pn\_date datetime default NULL,
        pn\_name varchar(100) NOT NULL default '',
        pn\_email varchar(100) NOT NULL default '',
        pn\_hits int(11) NOT NULL default '0',
        pn\_submitter varchar(60) NOT NULL default '',
        pn\_ratingsummary double(6,4) NOT NULL default '0.0000',
        pn\_totalvotes int(11) NOT NULL default '0',
        pn\_totalcomments int(11) NOT NULL default '0',
        pn\_filesize int(11) NOT NULL default '0',
        pn\_version varchar(10) NOT NULL default '',
        pn\_homepage varchar(200) NOT NULL default '',
        PRIMARY KEY  (pn\_lid)
      ) TYPE=MyISAM AUTO_INCREMENT=3 ;

      Das ist die Struktur..
      Bitte nicht schlagen, dass ich postnuke benutze, ist fürn Freund.
      Doch irgendwie kann ich machen was ich will es reagiert ned..

      Warscheinlich ist irgendwo ein winziger Fehler den ich übersehen habe...

      MfG

      Neo

    2. Moin!

      Hast Du wirklich eine Konstante _donwloads_downloads definiert?
      Es hat nämlich den Anschein als würde die Query nicht richtig sein - damit würde kein gültiges Ergebnis zurückgegeben (sonder ein Fehler). Und damit kann dann mysql_fetch_array nichts anfangen.

      Wenn Du das gefixt hast, dann kannst Du Dich dem von mir genannten problem zuwenden.

      Außerdem:

      $boxstuff .= " <a href="modules.php?op=modload&name=Downloadsamp;file=indexamp;req=viewsdownload&sid=".$myrowld['sid']."">".$myrowld['title']."</a> (x".$myrowld['hits'].")<br>\n";

      Nur, damit valides HTML rauskommt.
      Das ist ungetestet, kann also noch Fehler enthalten.

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Meinereinerselbst ist auf der Suche nach Aufträgen
  2. Moin!

    $boxstuff .= "...=$myrowld[sid]">$myrowld[title]......$myrowld[hits]...";

    Also, müsste es nicht  $myrowld['title'] und so weiter heissen?

    fastix®

    --
    Meinereinerselbst ist auf der Suche nach Aufträgen
    1. Jo, stimmt, aber der Fehler liegt glaube ich im query. Ich habe mir diese eine zeile mindestens schon 200 mal durchgelesen und finde den ollen fehler nicht...

      MfG

      Neo

      1. Moin!

        Jo, stimmt, aber der Fehler liegt glaube ich im query. Ich habe mir diese eine zeile mindestens schon 200 mal durchgelesen und finde den ollen fehler nicht...

        Ein Tip:

        Ich mach das meist so:

        $sql="SELECT lid, cid, sid, title, date, hits from $prefix"._downloads_downloads." order by date DESC LIMIT $topdown";

        Ist "_downloads_downloads" eine Konstante?

        echo "<div style="border: thin solid blue">.$sql."</div>";

        Nimm das Kommentarzeichen raus, um Dein SQL- Statement zu checken.

        $resultld = mysql_query($sql) or die ("<div style="border: thin solid red">".mysql_error()."</div>";

        Du bekommst eine Fehlermeldung in einem netten roten Rahmen...

        #Ausserdem:
        while ($myrowld = mysql_fetch_array($resultld)) {
           $print_sid   = $myrowld['sid'];
           $print_title = $myrowld['title'];
           $print_hits  = $myrowld['hits'];
          # Das verkürzt die Zeilen, Du bekommst genauere Fehlermeldungen und Du kannst dann mit einfachen Variablen weiterarbeiten. An der Performance dürfte das nicht so viel verschlechtern. Ferner siehst Du "sofort" ob auch alle Daten abgefragt wurden.

        #Und Du umgehst eine Menge Probleme in "Monsterzeilen":

        $boxstuff .= " <a href="modules.php?op=modload&name=Downloads&file=index&req=viewsdownload&sid=$print_sid">$print_title</a> (x$print_hits)<br>\n";
        } # end while (ein guter Kommentar, wenn es mal verschachtelter wird.

        fastix®

        --
        Meinereinerselbst ist auf der Suche nach Aufträgen
        1. big thx :) habe den Fehler gefunden juuhuu hatte anstatt lid  rid geschrieben ^^ :)
          Thanks a lot :)

          MfG

          Neo

  3. Hallo,

    $resultld = mysql_query("SELECT lid, cid, sid, title, date, hits from $prefix"._downloads_downloads." order by date DESC LIMIT $topdown");

    $resultld = mysql_query("SELECT lid, cid, sid, title, date, hits from $prefix"._downloads_downloads." order by date DESC LIMIT $topdown") or die mysql_error();

    Mit der somit ausgegebenen Fehlermeldung kann eine Diagnose gestellt werden.

    Viele Grüße,
    Christian

    1. Hi,
      die Fehlermeldung bring mir nun dies hier zu Tage...:
      Parse error: parse error, unexpected T_STRING in morefunc.php on line 162

      aber ich habe es so geschrieben wie immer, liegt da ein schreibfehler vor, oder liegt der Fehler wo anders`?

      MfG

      Neo

      1. Kann mir da wirklich niemand helfen?

        MfG

        Neo

        Sry 4 spam post ->verzweifle gerade..

      2. Holladiewaldfee,

        die Fehlermeldung bring mir nun dies hier zu Tage...:
        Parse error: parse error, unexpected T_STRING in morefunc.php on line 162

        Es wäre hilfreich, zu wissen, was in Zeile 162 steht ...

        Ciao,

        Harry

        --
          Man weiß erst was man hatte, wenn man es verloren hat.
          Intelligenz ist nicht zwingend etwas positives.