Jens Simrock: Forum läuft nicht mehr

Hallo, Leute!

Ich bin ein wenig verzweifelt, weil ich erstens nicht weiß, was ich falsch gemacht habe und zweitens keine Ahnung von PHP habe.
Trotzdem hätte ich gerne weiter mein Forum.

Also ich habe schon eine Weile das Forum von Alex bei mir laufen und alles lief auch fehlerfrei. Heute Morgen plötzlich nicht mehr, obwohl ich - soweit ich das überblicken kann - nichts geändert habe. Ich war gar nicht dran würde ich sagen.

Jedenfalls gibt es jetzt einige Fehlermeldungen, die ich nicht verstehe.
Das ist auch kein Wunder bei meinen Kenntnissen. Ärgerlich ist, dass ich jetzt nicht einmal weiß, was ich hier posten muss, damit man mir helfen kann.

Diese Fehlermeldungen bekomme ich

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /www/htdocs/xyz/forum2/inc.php on line 86

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /www/htdocs/xyz/forum2/inc.php on line 88

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /www/htdocs/xyz/forum2/inc.php on line 104

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/xyz/forum2/inc.php:86) in /www/htdocs/xyz/forum2/forum.php on line 38

Zeilen 82-104 der inc.php

if ($settings['count_users_online'] == 1)
 {
  user_online();
  $count_result = mysql_query("SELECT COUNT(*) FROM ".$useronline_table." WHERE user_id > 0", $connid);
  list($useronline_count) = mysql_fetch_row($count_result);
  $count_result = mysql_query("SELECT COUNT(*) FROM ".$useronline_table." WHERE user_id = 0", $connid);
  list($guestsonline_count) = mysql_fetch_row($count_result);
  $counter = str_replace("[postings]", $posting_count, $lang['counter_uo']);
  $counter = str_replace("[threads]", $thread_count, $counter);
  $counter = str_replace("[users]", $user_count, $counter);
  $counter = str_replace("[total_online]", $useronline_count+$guestsonline_count, $counter);
  $counter = str_replace("[user_online]", $useronline_count, $counter);
  $counter = str_replace("[guests_online]", $guestsonline_count, $counter);
 }
else
 {
  $counter = str_replace("[forum_name]", "<a href="".$settings['forum_address']."">".stripslashes($settings['forum_name'])."</a>", $lang['counter']);
  $counter = str_replace("[contact]", "<a href="email.php?forum_contact=true">".$lang['contact_linkname']."</a>", $counter);
  $counter = str_replace("[postings]", $posting_count, $counter);
  $counter = str_replace("[threads]", $thread_count, $counter);
  $counter = str_replace("[users]", $user_count, $counter);
 }
mysql_free_result($count_result);

Zeile 38 der forum.php

if ($settings['remember_userstandard'] == 1 && !isset($_SESSION['newtime'])) { setcookie("user_view","thread",time()+(3600*24*30)); }

Ich hoffe, ich kann so wenigstens auf Hilfe hoffen!
Danke schon einmal allen potenziellen Helfern, dass ihr bis hierher gelsen habt.

Jens

  1. Hallo Jens,

    Heute Morgen plötzlich nicht mehr, obwohl ich - soweit ich das überblicken kann - nichts geändert habe.

    Du vielleicht nicht - aber vielleicht dein Provider?

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /www/htdocs/xyz/forum2/inc.php on line 86

    Was sagt mysql_error() und wie sieht der Query der die Fehlermeldung erzeugt aus?

    Grüße aus Nürnberg
    Tobias

    1. Hallo, Tobias!

      Du vielleicht nicht - aber vielleicht dein Provider?

      Sollte er mir davon nicht erzählt haben?

      Was sagt mysql_error()

      Öhm ... ich liebe Herausforderungen.
      Ich habe jetzt mal eine test.php aufgerufen mit dem Inhalt

      <?php echo "Fehler: ".mysql_error();?>

      War das korrekt? Wenn ja - und sonst auch - gab es keine Ausgabe.

      und wie sieht der Query der die Fehlermeldung erzeugt aus?

      Hier bin ich dann endgültig ausgestiegen.
      Was kann ich tun, damit du was für mich tun kannst? :)

      Jens

      1. Hallo Jens,

        Du vielleicht nicht - aber vielleicht dein Provider?
        Sollte er mir davon nicht erzählt haben?

        Eigentlich schon, aber vielleicht musste schnell was geändert werden, so dass keine Zeit war die Kunden zu warnen.

        Was sagt mysql_error()
        Öhm ... ich liebe Herausforderungen.
        Ich habe jetzt mal eine test.php aufgerufen mit dem Inhalt

        nein, nein - du musst mysql_error() schon in das Script schreiben dass die Fehlermeldung ausgibt (in deinem Fall zwischen Zeile 85 und 86)

        und wie sieht der Query der die Fehlermeldung erzeugt aus?
        Hier bin ich dann endgültig ausgestiegen.

        :-)

        In der Zeile 85 steht: $count_result = mysql_query("SELECT COUNT(*) FROM ".$useronline_table." WHERE user_id > 0", $connid); - der Query ist das "SELECT COUNT..." da drin, schreib das am besten so, dass erst der Query einer Variablen zugewiesen wird, und dan die Funktion mit der Variablen als Parameter aufgerufen wird (die Fehlerbehandlung habe ich mal weggelassen):

        $query = "SELECT COUNT(*) FROM ".$useronline_table." WHERE user_id > 0";  
        $count_result = mysql_query($query, $connid);
        

        Dann kannst du dir mit
         echo $query;
        den Query ausgeben lassen.

        Grüße aus Nürnberg
        Tobias

        1. Hallo, Tobias!

          nein, nein - du musst mysql_error() schon in das Script schreiben dass die Fehlermeldung ausgibt (in deinem Fall zwischen Zeile 85 und 86)

          Ah jetzt ja, eine Insel!
          Suchtest du also die Ausgabe weiter oben, die fastix mit seinem Vorschlag hervorgebracht hat?

          und wie sieht der Query der die Fehlermeldung erzeugt aus?

          Keine Ahnung, ob ich deinen Vorschlag richtig verstanden habe,
          aber die Fehlermeldung lautet jetzt

          SELECT COUNT(*) FROM forum_useronline WHERE user_id > 0

          Darunter die alten Fehlermeldungen.

          Jens

  2. echo $begrüßung;

    Ich bin ein wenig verzweifelt, weil ich erstens nicht weiß, was ich falsch gemacht habe und zweitens keine Ahnung von PHP habe.

    Also ich habe schon eine Weile das Forum von Alex bei mir laufen und alles lief auch fehlerfrei. Heute Morgen plötzlich nicht mehr, obwohl ich - soweit ich das überblicken kann - nichts geändert habe. Ich war gar nicht dran würde ich sagen.

    Wende dich an den Autor, mit der Bitte, dass er sein Script fehlertoleranter schreiben möge. Die angezeigten Meldungen sind Folgefehler, die nun auftreten, weil in Zeile 85 ein Rückgabewert, der einen Fehler beim MySQL-Zugriff anzeigt, nicht ausgewertet wurde.

    echo "$verabschiedung $name";

  3. Moin!

    Zeilen 82-104 der inc.php

    if ($settings['count_users_online'] == 1)
    {
      user_online();
      $count_result = mysql_query("SELECT COUNT(*) FROM ".$useronline_table." WHERE user_id > 0", $connid);

    besser wäre:

    if ($settings['count_users_online'] == 1)
    {
      user_online();

    $sql="SELECT COUNT(*) FROM ".$useronline_table." WHERE user_id > 0";
        $count_result = mysql_query($sql, $connid) or die("<hr>SQL-FEHELR: ".mysql_error()."<hr>".$sql."<hr>");

    Schon bei der Aufnahme der Verbindung zur Datenbank wurde offensichtlich der Fehler nicht abgefangen. Möglicherweise hast Du keinen Datenbankzugriff (Server down?) oder jemand hat heute Nacht Dein Skript angegriffen und spaßeshalber Deine Datentabellen gelöscht. Das das Skript auch ansonsten Schrott ist kann ich berechtigt vermuten.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
    1. Hallo, fastix!

      besser wäre: [...]

      Ich habe einfach mal die Originalzeile auskommentiert und deine
      eingesetzt. Jetzt lautet die Fehlermeldung

      SQL-FEHELR: Can't open file: 'forum_useronline.MYI'. (errno:145)
      SELECT COUNT(*) FROM forum_useronline WHERE user_id > 0

      Möglicherweise hast Du keinen Datenbankzugriff (Server down?)

      Der Rest der Seite läuft und alle anderen datenbankbasierten Skripte ebenfalls.

      oder jemand hat heute Nacht Dein Skript angegriffen und spaßeshalber Deine Datentabellen gelöscht.

      Sieht nicht so aus. Unter den Fehlermeldungen sind die Inhalte des Forums zu sehen.

      Das das Skript auch ansonsten Schrott ist kann ich berechtigt vermuten.

      Diesen Hinweis gab es hier im Forum ja auch schon öfter, aber man muss einfach sagen, dass es ihm (Alex) gelingt, Skripte zu schreiben, die selbst Dummbatze wie ich an ihre eigene Seite anpassen können.

      Jens

      1. Hallo Jens,

        SQL-FEHELR: Can't open file: 'forum_useronline.MYI'. (errno:145)
        SELECT COUNT(*) FROM forum_useronline WHERE user_id > 0

        Laut Doku bedeutet das, dass die Tabelle repariert werden sollte - wende dich an den Support deines Provieders.

        Grüße aus Nürnberg
        Tobias

        1. Hallo, Tobias!

          wende dich an den Support deines Provieders.

          Nachdem ich mich hier ja jetzt ausreichend lächerlich gemacht haben dürfte, habe ich mit den hier gewonnenen Erkenntnissen beim Support angerufen und die konnten die Tabelle sofort reparieren.

          Danke euch allen für eure Geduld!

          Jens