[PHP] Fehlermeldung in den Mediadaten

stylah

Well-known member
ID: 193443
L
20 April 2006
103
2
Einen wunderschönen guten Abend,

In meinen Mediadaten steht folgende Fehlermeldung:


Warning: Variable passed to each() is not an array or object in /home/webmastercharts_de/www/index.php on line 25


Zeile 25 in der Index Datei:

PHP:
while (list ($key, $val) = each ($array)) {


Kann einer weiterhelfen?

https://www.webmastercharts.de/?page=mediadaten
 
Check mal das potentielle Array:
PHP:
print_r($array);
P.S. Das hat nix mit MySQL zu tun :biggrin:
 
Nein zwischen die Zeilen 24 und 25 einfügen. Und schreib gleich noch folgendes als zweite einzufügende Zeile dazu:
PHP:
var_dump($array);
 
Soll ich dein code mit dem code zeile 25 austauschen?
Dann wirst du wohl n Syntaxfehler provozieren, weil dann ne Klammer in der Luft hängt :doh:

Ich kenne weder deinen Code, noch hab ich außer der einen Zeile irgendwas, um dir deine Frage zu beantworten.

Ich weiß nur, dass du irgendwas benutzst, was wahrscheinlich kein Array ist. Also musst du prüfen, woher der Müll kommt und ihn beseitigen.
  • Fang an, prüfe, was überhaupt drin is, also einmal print_r, einmal echo machen, um den Inhalt auszugeben.
  • Verfolg den Weg weiter zurück mit demselben Verfahren; an jeder Stelle, wo das Teil auftaucht
  • Das Spielchen bis zur Quelle machen, an der der Wert richtig gesetzt sein sollte.
Habt ihr alle noch nie was von Debugging gehört ?! :wall:
 
Das einzige was sich verändert, jetzt steht zeile 27 statt 25, und am anfang steht null:

NULL
Warning: Variable passed to each() is not an array or object in /home/webmastercharts_de/www/index.php on line 27
 
So und das NULL kommt vom var_dump() und das besagt, dass die Variable definitiv kein Array ist..

Oder kopier doch einfach endlich mal die ersten 25 bzw jetzt 27 Zeilen deines Codes hier rein..
 
So und das NULL kommt vom var_dump() und das besagt, dass die Variable definitiv kein Array ist..

Oder kopier doch einfach endlich mal die ersten 25 bzw jetzt 27 Zeilen deines Codes hier rein..

Hi, Zeile 17 bis Zeile 27 (1 bis 16 ist nur Copyright by... unerlaubtes benutzen etc.)

PHP:
  include("config.php");
  srand(microtime()*1000000);
  $tmp["index"] = file_get_contents("index.tpl");
  
  $connID = @mysql_connect ($mysql["server"], $mysql["user"], $mysql["pw"]);
  @mysql_select_db ($mysql["name"], $connID);
  
  function array_suche ($array, $wert, $feld) {
  print_r($array); 
  var_dump($array);  
    while (list ($key, $val) = each ($array)) {
 
Ach stimmt, ist ja in eine Funktion eingebettet.. Dann musst du mal auf die Suche gehen, von wo aus die Funktion array_suche() aufgerufen wird. Dort wird wahrscheinlich eine nicht gesetzte Variable übergeben (Variablenname falsch geschrieben?), wodurch in der Funktion nur NULL ankommt.

Btw: Wenn da was von Copyright zu lesen ist, gehört es ja eigentlich in Scripts&Software :ugly:
 
Ach stimmt, ist ja in eine Funktion eingebettet.. Dann musst du mal auf die Suche gehen, von wo aus die Funktion array_suche() aufgerufen wird. Dort wird wahrscheinlich eine nicht gesetzte Variable übergeben (Variablenname falsch geschrieben?), wodurch in der Funktion nur NULL ankommt.

Btw: Wenn da was von Copyright zu lesen ist, gehört es ja eigentlich in Scripts&Software :ugly:

in der config ist garnichts mit array_suche zu finden.aber in der index datei steht folgendes in den zeilen 289-295:

PHP:
    }
      }
      if (!$drin) $_POST["button"] = $bla;
      
      $key = array_suche ($r_topliste, $_POST["url"], "url");
      if ($key != "") {
        $code = "<script src=\"".$info["urlscript"]."/pr.php?id=".$r_topliste[$key]["id"]."&bild=".
 
Ok, wenn das die einzige Stelle ist, ist es schonmal gut. Nun wird $r_topliste den Wert NULL haben. Sicherheitshalber kannst du ja nochmal var_dump($r_topliste) in Zeile 292 (also direkt vor die Zeile mit dem Funktionsaufruf) schreiben (die zwei Zeilen an der anderen Stelle kannst du nun wieder löschen). Es sollte nun wieder NULL auf der Seite vor dem selben Fehler erscheinen.

Als nächstes schaust du die Zeilen vor 292 ab, wo da $r_topliste zu finden ist und kopierst das auch mal hier rein (idealerweise noch den Bereich bis 10-20 Zeilen davor)
 
Jetzt öffnet sich die seite erst garnicht.


Parse error: syntax error, unexpected T_STRING in /home/webmastercharts_de/www/index.php on line 292
 
Dann hast du entweder ein Semikolon vergessen oder sonstwas falsch geschrieben.. Also irgendwie wird das so nichts, entweder suchst du selbst oder du schickst mir mal die ganze index.php per PN, das geht wohl schneller..
 
Hier die Zeilen 125-138. Das ist die einzige Stelle, in der die Variable $r_topliste bearbeitet wird.

PHP:
  $q_topliste = @mysql_query("SELECT pr_seiten.id AS id, url, pr, views, viewsheute, pr_seiten.timestamp AS timestamp, backlinks
                              FROM pr_seiten
                              WHERE (status = '1')
                              ORDER BY viewsheute DESC, pr DESC");
  $return = array();
  $zahler = 1;
  $maxviews = 0;
  $maxviewsheute = 0;
  $maxviews = 0;
  while ($back = @mysql_fetch_array($q_topliste)) {
    $r_topliste[$zahler++] = $back;
    $maxviews += $back["views"];
    $maxviewsheute += $back["viewsheute"];
  }
Du könntest nach diesem Bereich nochmal ein var_dump($r_topliste); einfügen, da wird dann wohl wieder NULL erscheinen. Grund ist dann wohl, dass aus der Datenbank kein Ergebnis gezogen wird. Falls dort immer ein Ergebnis sein sollte, dann läuft hier was schief, wenn es möglich sein soll, dass auch mal kein Ergebnis kommt, dann müsste ab der Zeile 24 folgendes geschrieben werden:
PHP:
  function array_suche ($array, $wert, $feld) {  
  if ($array === NULL){
    return '';
  } else {    
    while (list ($key, $val) = each ($array)) {
      if ($val[$feld] == $wert) {
        return $key;
      }
    }
  }
}