Hagen: Gästebuchscript läuft auf anderem Server nicht

Hallo,habe ein kleines Gästebuchscript welches auf meinem Rechner funzt nun läuft es auf nem anderen Server und ich bekomm das:
Warning: Cannot modify header information - headers already sent by (output started at /home/www/web28/html/index.php:11) in /home/www/gaestebuch/gb.php on line 69

Warning: mysql_query(): 4 is not a valid MySQL-Link resource in /home/www/gaestebuch/gb.php on line 76

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/www/gaestebuch/gb.php on line 77

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/www/gaestebuch/gb.php on line 78

Warning: mysql_query(): 4 is not a valid MySQL-Link resource in /home/www/gaestebuch/gb.php on line 86

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/gaestebuch/gb.php on line 87

Warning: mysql_close(): 4 is not a valid MySQL-Link resource in /home/www/gaestebuch/gb.php on line 94

Die Header-meldung  ist klar weil ja der Fehler an den browser ausgegeben wird. Aber der Rest. Ich erklär mal kurz wie das script funzt.
Daten werden eingegeben.
Daten werden validiert.
Daten werden in Datenbank geschrieben.
Dann Header Umleitung auf die gleiche Seite damit man nicht über F5 erneut abschicken kann.
Nun treten die Fehler(siehe oben auf) obwohl der Eintrag korrekt geschrieben wird. Lädt man die Seite nur ohne ein posting zu machen funktioniert die passage in der die Fehler auftreten einwandfrei.
Hier die Zeilen 69 bis 94:
     header("location: http://".$base."?site=guestb");
    }
   }
 }
//------------------------------Reset gedrückt-----------------------
 elseif(isset($_REQUEST['reset'])){ header("location: http://".$base."?site=guestb");}
//------------------------------alte Einträge auslesen---------------
 $result=mysql_query("SELECT count(name) FROM entries", $link);
 $anzahl=(mysql_fetch_row($result));
 mysql_free_result($result);
 $anzahl=$anzahl[0];
 $register=ceil($anzahl/10);//15 Eintraege pro Seite
 for ($i=1;$i<=$register;$i++)
  {
   $navi=$navi."<a href="index.php?site=guestb&page=".$i."">".$i."</a>&nbsp;|&nbsp;";
  }
 if(isset($_GET['page'])){$reg=$_GET['page'];}else{$page=1;}
 $entries=mysql_query("SELECT name,mail,homepage,nachricht,zeit FROM entries ORDER BY zeit DESC LIMIT ".(($page-1)*10).",10",$link);
 while($row=mysql_fetch_array($entries,MYSQL_NUM))
  {
   $post_zeit=explode(";",date("H:i:s;d.m.y",$row[4]));
   $old_entries[$a]=array(htmlentities($row[0]),htmlentities($row[1]),htmlentities($row[2]),htmlentities($row[3]),$post_zeit[0],$post_zeit[1]);
   $a++;
  };
 if(!empty($entries)){mysql_free_result($entries);}//ergebnisspeicher wieder freigeben
 mysql_close($link);//SQL Datenbank wider freigeben

Achja $base ist so definiert $base=$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ich hoffe ihr könnt mir helfen.

MFG Hagen

  1. hi,

    Warning: Cannot modify header information - headers already sent

    http://www.php-faq.de/q/q-fehler-header.html

    Warning: mysql_query(): 4 is not a valid MySQL-Link resource

    mysql_error() und ggf. Querystring ausgeben lassen, um zu sehen was schief ging.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Lieber Hagen,

    ich verstehe nicht, warum ein Gästebuch mittels einer Datenbank realisiert werden muss. Ich empfinde dieses Vorgehen als "mit Kanonen auf Spatzen schießen". Für mein eigenes GB-Script verwende ich eine XML-Datei zum Speichern. Vielleicht wäre diese Lösung auch etwas für Dich (zumindest in konzeptioneller Hinsicht)?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Hallo Felix,

      ich verstehe nicht, warum ein Gästebuch mittels einer Datenbank realisiert werden muss. Ich empfinde dieses Vorgehen als "mit Kanonen auf Spatzen schießen".

      ich verstehe das schon. Hätte ich Webspace mit Datenbank und möchte ich ein Gästebuch - so wäre der Datenbankzugriff für mich das Mittel der Wahl.

      Gründe:

      1. Ich erspare mir den ganzen Dateisperrkrempel.
      2. Ich mag SQL und kenne mich damit weit besser aus als mit
           den XML-Funktionen.

      Notwendigkeit von Datenbankzugriff sowie Performance wären mir völlig gleichgültig (bei einer erwarteten Quote von weniger als einem Eintrag pro Quartal :-)). Die Wahrscheinlichkeit, dass ich das Skript mit Datenbankzugriff sauber hinkriege wäre weit höher als im Falle von Dateizugriffen, der Aufwand für mich geringer.

      Freundliche Grüße

      Vinzenz

  3. Hallo Hagen,

    hier diese Warnung

    Warning: Cannot modify header information - headers already sent by (output started at /home/www/web28/html/index.php:11) in /home/www/gaestebuch/gb.php on line 69

    und Dein Kommentar dazu

    Die Header-meldung  ist klar weil ja der Fehler an den browser ausgegeben wird.

    sagen doch klar, dass der entscheidende Fehler _vor_ Zeile 69 passiert. Der Rest scheint ziemlich klar zu sein.

    Warning: mysql_query(): 4 is not a valid MySQL-Link resource in /home/www/gaestebuch/gb.php on line 76

    Du hast keine gültige Verbindung zur Datenbank, der Rest sind Folgefehler. Eine Fehlerbehandlung kann ich in Deinem Code nicht erkennen.

    Falls Du Hilfe erwartest, solltest Du uns den _relevanten_ Code posten. Und der befindet sich eindeutig _vor_ Zeile 69.

    Freundliche Grüße

    Vinzenz

    1. Hallo,

      sagen doch klar, dass der entscheidende Fehler _vor_ Zeile 69 passiert. Der Rest scheint ziemlich klar zu sein.

      Stimmt

      Warning: mysql_query(): 4 is not a valid MySQL-Link resource in /home/www/gaestebuch/gb.php on line 76

      Du hast keine gültige Verbindung zur Datenbank, der Rest sind Folgefehler. Eine Fehlerbehandlung kann ich in Deinem Code nicht erkennen.

      So stelle ich die Verbindung her, was ja auch klappt, sonst könnte ich ja die daten nicht aus der datenbank auslesen und in sie schreiben.

      include("gaestebuch/admin/mysql_kennung.inc.php");
      $kennung=explode(",",$kennung);
      $link = mysql_connect(trim($kennung[0]),trim($kennung[1]),trim($kennung[2]));//zu SQL verbinden
      $db_selected=mysql_select_db("gb",$link);//zur Datenbank verbinden
      $base=$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];
      if(!$link) {$fehler="Konnte keine Verbindung herstellen:".mysql_error()."<br/>";}

      und auch nach dem abschicken der daten habe ich eine Verbindung, sonst würde ja nach dem if abgebrochen.

      MFG Hagen

  4. yo,

    die zugangsdaten für die datenbankverbindung sind auf die benötigten daten des neuen servers entsprechend geändert worden ?

    Ilja

    1. yoho Ilja

      na aber sowas von geändert! Ne ähm ich habe ja auch Verb zur datenbank sonst könnt ich ja nicht in sie schreiben.

      MFG Hagen

  5. Die guten alten linux server:
    location==Location...nö das ärgert mich.

    MFG Hagen