Fabian: Gästebuch

Hallo zusammen

Habe ein Problem beim Erstellen eines PHP-Gästebuches. Ich möchte, dass ich jeweils nur 4 Gästebuch-Einträge auf einer Seite sehen kann. Die restlichen auf den kommenden Seiten. Nachfolgend die Fehlermeldung und dann das Script:

-------------------- Einträge 2 - 5 von 5 --------------------

Warning: Supplied argument is not a valid MySQL result resource in /home/klostifa/public_html/guesttest.php on line 118
 >> die nächsten 4 Einträge anzeigen

Warning: Supplied argument is not a valid MySQL result resource in /home/klostifa/public_html/guesttest.php on line 218

----------------------------------------------------------------

Und nun mein Script. Die entsprechenden Fehlerzeilen habe ich jeweils am am linken rand gekennzeichnet (line 118) + (line 218)

<?php

$dbh=mysql_connect("localhost","klostifa_fabian","hallo");
$result = mysql_db_query("klostifa_db1","select * from tbl_guestbook order by fld_id DESC limit $start, 4");

$sql = "select count(*) as num from tbl_guestbook";
 $result2 = mysql_db_query("klostifa_db1",$sql);
 $num = mysql_result($result2,0,'num');
 $nummer = $num - $start;

echo "<table>";
echo "<tr><td width='510'>";
$nummer2 = $nummer - 3;
if ($nummer2 > 1)
        {
echo "<center><p><b>-------------------- ";
echo "Einträge $nummer2 - $nummer von $num";
echo " --------------------
</b></p></center></td></tr></table>";
 }
 else
 {
echo "<center><p><b>---------------------- ";
echo "Eintrag $nummer von $num";
echo " ----------------------</b></p></center></td></tr></table>";
   }

(line 118) while($row = mysql_fetch_array($result))

{
//-------------------------------- D A T U M -------------------------------------------------
   echo "<table border='0' width='500' align='center'><tr><td class='tabelle2'>";

$datum = $row["fld_datum"];
   // list($jahr,$monat,$tag) = split('[/.-]',$datum);
 list ($jahr, $monat, $tag) = split ('[/.-]', $datum);
 $dat = "$tag.$monat.$jahr";

echo $dat;
   echo " |  ";

//-------------------------------- E M A I L   C H E C K -------------------------------------

$check_email = $row["fld_email"];
   if ($check_email)
   {

echo "<a class='link' href='mailto:";

echo $row["fld_email"];

echo "'>";

echo $row["fld_name"];

}

else
   {

echo $row["fld_name"];

}

echo "</td></tr>";

// --------------------------------------------- U R L ------------------------------------------------

$check_url = $row["fld_url"];
   if ($check_url)
   if ($check_url !="http://")
   {

echo "<tr><td class='tabelle2'><a class='link' href='";

echo $row["fld_url"];

echo "'>";

echo $row["fld_url"];

echo "</a>";

echo "</td></tr>";

}

// ------------------------------------------ T I T E L ------------------------------------------------

echo "<tr><td class='tabelle2'><b>Titel: ";

echo $row["fld_titel"];

echo "</b></td></tr><tr><td class='tabelle2'>";

echo $row["fld_text"];

echo "</td></tr><tr><td height='20'>";

echo "</td></tr></table>";

}

$nummer--;

echo "<table><tr><td width='100' class='leer'></td>";
    echo "<td width='410' class='guest'><p>>> ";
    if ($start > 3)
  {
  $zurueck = $start - 4;
  echo "<a href=guests.php?start=$zurueck>";
 echo "die vorigen 4 Einträge</a>";
 if ($nummer != 0)
 {
 echo " | ";
 }
 }
 if ($nummer != 0)
 {
 $vor = $start + 4;
 echo "<a href=guests.php?start=$vor>";
 echo "die nächsten 4 Einträge</a>";
 }
 echo " anzeigen";
 echo "</p></td></tr></table>";

(line 218)   mysql_free_result($result);
mysql_close()

?>

---------------------------------------------------------------------

Wer kann mir weiterhelfen

  1. Hallo,

    mysql_db_query("klostifa_db1","select * from tbl_guestbook order by fld_id DESC limit $start, 4");

    Irgendwie kommt mir die Funktion nicht allzu bekannt vor. Die Doku sgt zumindest nichts dazu, und eine eigens definierte ist es anscheinend auch nicht. Folge: $result ist leer.

    Grüße aus Würzburg
    Julian

    1. Hallo Julian

      Danke für Deine Antwort. Kannst Du mir sagen, was ich nun in meinem Script ändern muss. Im Quell-Text?

      Habe leider nicht grosse Ahnung von PHP. Habe dieses Script von einem Informatik-Lehrer erhalten.

      1. Hallo Fabian,

        mit

        $result = mysql_query("select * from tbl_guestbook order by fld_id DESC limit $start, 4");

        und

        $result2 = mysql_query($sql);

        sollte das Buch seinen Zweck erfüllen.

        Grüße aus Würzburg
        Julian

        1. Hallo Julian

          Jetzt zeigs mir nur noch folgende Fehlermeldung an:

          Warning: Supplied argument is not a valid MySQL result resource in /home/klostifa/public_html/guesttest.php on line 118

          while($row = mysql_fetch_array($result))

          Sollte es statt $result nun $sql heissen?

          Liebe Grüsse

          Fabian

          1. Hallo Fabian,

            Sollte es statt $result nun $sql heissen?

            Nein. Du möchtest hier ja auf den Inhalt Deiner Datenbankabfrage (also $result) zugreifen.

            Dürfte mich in der ersten Korrektur vertan haben:
            $result = mysql_query("select * from tbl_guestbook order by fld_id DESC limit ".$start"., 4");

            Grüße aus Würzburg
            Julian

            1. Super, endlich keine Fehlermeldung mehr. Aber dafür erscheinen mir keine Datenbank-Einträge. Wie bringe ich das nun noch zu Stande?

              1. Hallo,

                ok, man sollte sich doch erst mal besser reindenken.

                Sicher, daß die Datenbank überhaupt erreicht wird? Fürchte, daß durch meine Korrekturen zumindest der Datenbankname auf der Strecke blieb. Demnach sollte nach dem connect (1.Zeile) noch stehen:

                mysql_select_db("klostifa_db1")
                  or die ("Die gewünschte Datenbank konnte nicht erreicht werden.<br>\n");

                Grüße aus Würzburg
                Julian