Problem mit Guestbook, PHP und MYSQL

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Guestbook, PHP und MYSQL

    Also, ich sitze gerade dabei mit PHP und MYSQL ein stinknormales Gästebuch zu basteln, nur stehe ich gerade vor einem Problem: ICh weiss jetzt nicht genau, ob die DAten gespeichert werden, aber wenn ich sie auslese, dann sehe ich absolut garnichts. Hier der Quellcode::::


    //DATEI ZUM EINTRAGEN//
    <?php
    if (isset($submit))
    {
    if($name="" || $comment="")

    echo "Sie müssen zumindest einen Namen und einem Kommentar abgeben.";

    if($email="")

    $email="Nicht vorhanden";

    if($hp="")

    $hp="Nicht vorhanden";
    else
    {
    $user="extreme";
    $pw="extreme";
    $ip=$REMOTE_ADDR;
    $host="127.0.0.1";
    $verbindung=mysql_connect($host, $user, $pw);
    $database="guestbook";
    $sqlinput="INSERT INTO eintrag (datum, ip, name, email, hp, kommentar) VALUES($datum, $ip, $name, $email, $hp, $comment)";
    mysql_select_db($database, $verbindung);
    if(mysql_query($sqlinput, $verbindung))
    echo "Eintrag erfolgreich.";
    mysql_close();
    }
    }
    ?>

    <html>
    <head>
    <title>Eintrag ins G&auml;stebuch</title>
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
    </head>
    <body bgcolor="#999999" text="#CCFFCC" leftmargin="0" topmargin="0">
    <div align="center">
    <br>
    <b><font face="Geneva, Arial, Helvetica, san-serif">Eintrag in G&auml;stebuch</font></b><br>
    <form name="form1" method="post" action="<? echo $PHP_SELF ?>">
    <br>
    <table width="70%" border="0" cellspacing="0" cellpadding="1">
    <tr>
    <td width="26%"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Name:</font></b></td>
    <td width="74%">
    <input type="text" name="name">
    <input type="hidden" name="datum" value="<? $dat=date("Y-m-d H:m:s");?>";
    </td>
    </tr>
    <tr>
    <td width="26%"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">E-Mail:</font></b></td>
    <td width="74%">
    <input type="text" name="email">
    </td>
    </tr>
    <tr>
    <td width="26%"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Homepage:</font></b></td>
    <td width="74%">
    <input type="text" name="hp" value="http://">
    </td>
    </tr>
    <tr>
    <td width="26%"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Kommentar:</font></b></td>
    <td width="74%">
    <textarea name="comment" cols="40" rows="7"></textarea>
    </td>
    </tr>
    <tr>
    <td width="26%"><b></b></td>
    <td width="74%">
    <input type="submit" name="submit" value="Eintragen">
    <input type="reset" name="reset" value="L&ouml;schen">
    </td>
    </tr>
    </table>
    </form>
    </div>
    </body>
    </html>

    //DATEI ZUM AUSGEBEN//
    <html>
    <body>
    <?
    $user="extreme";
    $pw="extreme";
    $host="127.0.0.1";
    $verbindung=mysql_connect($host, $user, $pw);
    $database="guestbook";
    $sqlquery="SELECT * FROM eintrag";
    mysql_select_db($database, $verbindung);
    $eintrage_alle=mysql_query($sqlquery, $verbindung);
    while($myrow=mysql_fetch_row($eintrage_alle))
    {
    echo $myrow[0];
    echo $myrow[3];
    echo $myrow[4];
    echo $myrow[5];
    echo $myrow[1];
    echo $myrow[2];
    echo $myrow[6];
    mysql_close();
    }
    ?>
    </body>
    </html>



    www.php-tutorials.de

  • #2
    if($name="" || $comment="")
    echo "Sie müssen zumindest einen Namen und einem Kommentar abgeben.";
    if($email="")
    $email="Nicht vorhanden";
    if($hp="")
    $hp="Nicht vorhanden";
    else { ... }
    1) Vergleiche mach man mit '=='. Das einfache Gleichheitszeichen ist eine Zuweisung, und damit is $name="" schon mal false; ebenso $coment="" und die anderen beiden, du kommst also in den else-Zweig, ohne daß $name oder $comment gesetzt sein müssen.

    2) Würdest du eh in den else-Zweig kommen, es sei denn, es ist keine Homepage vorhanden. Vetausche das erste mit dem letzten if, dann hast du vermutlich das, was du beabsichtigst.

    Code:
    if($email="") 
      $email="Nicht vorhanden"; 
    if($hp="") 
      $hp="Nicht vorhanden"; 
    if($name="" || $comment="") 
      echo "Sie müssen zumindest einen Namen und einem Kommentar abgeben.";
    else { ... }
    $sqlinput="INSERT INTO eintrag (datum, ip, name, email, hp, kommentar) VALUES($datum, $ip, $name, $email, $hp, $comment)";
    mysql_select_db($database, $verbindung);
    if(mysql_query($sqlinput, $verbindung))
    echo "Eintrag erfolgreich.";
    3) Strings in eine SQL-Query müssen in 'Anführungszeichen' gesetzt werden, sonst versucht das DBMS, sie als Spaltennamen o.ä. zu interpretieren.

    4) nach einem mysql_select_db ist die Angabe der Datenbank beim mysql_query nicht mehr notwendig.

    5) Hat die Query keinen Erfolg, so solltest du dir von MySQL sagen lassen, wieso.

    Code:
      $sqlinput="INSERT INTO eintrag (datum, ip, name, email, hp, kommentar)"
        ." VALUES('$datum', '$ip', '$name', '$email', '$hp', '$comment')"; 
      mysql_select_db($database, $verbindung); 
      if(mysql_query($sqlinput))
        echo "Eintrag erfolgreich.";
      else
        echo "Fehler beim Ausführen der Query: <i>$sqlinput</i> => <b>", mysql_error(), "</b>";
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar

    Lädt...
    X