kostenloser Webspace werbefrei: lima-city


Gästebuch Script PHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    Hi !

    Ich habe einige Probleme mit PHP.

    Das hier ist mein Gästebuch:

    <?php 
    
    require('../admin/sql.php');
    
    $name = mysql_real_escape_string($_POST['name']); 
    $email = mysql_real_escape_string($_POST['email']); 
    $inhalt = mysql_real_escape_string($_POST['text']); 
    
    $datum = time(); 
    $aktiv = 1; //1: Einträge werden aktiviert gespeichert, 2: Einträge werden deaktiviert gespeichert 
    // eintragen
    
    //Wurden die benötigten Felder ausgefüllt? 
    if($name == "" OR $inhalt == "") 
        { 
       echo "<font face=\"Arial\">Bitte die Felder \"Name\" und \"Inhalt\" ausfüllen<br></font>"; 
       exit; //Script Ablauf wird unterbrochen, Eintrag wird nicht gespeichert 
       } 
    $eintrag = "INSERT INTO guestbook (datum, name, email, inhalt, aktiv) VALUES ('".htmlentities($datum)."', '".htmlentities($name)."', '".htmlentities($email)."', '".htmlentities($inhalt)."', '".htmlentities($aktiv)."')"; 
    $eintragen = mysql_query($eintrag); 
    
    //Wurde der Eintrag erfolgreich gespeichert? 
    if($eintragen == true) 
       { 
       echo "<p align=\"center\"><font face=\"Arial\">Dein Beitrag wurde erfolgreich gespeichert.<br><br><a href=\"index.php\">Zur&uuml;ck zum G&auml;stebuch</a></font></p> "; 
       header('index.php?neu=1');
       } 
    else 
       { 
       echo "<font face=\"Arial\">Fehler beim Speichern.<br></font>"; 
       } 
    }
    ?>
    
    <form action="" method="post">
    ...
          <font size="2">Wenn sie das hier lesen können, lassen 
          sie das nachfolgende Feld bitte leer:<br>
          <br>
          </font>
          <font face="Arial"><input type="text" name="url" size="20"></font><font size="2"> </font>
    ...


    Wenn ich auf den Submit Button vom Formular klicke, passiert garnichts. Es sollte aber das obige PHP Script dann aufgerufen werden und der Eintrag sollte gespeichert werden.

    Auch will ich noch, dass wenn das Input Feld "url" einen Inhalt hat, soll ein Fehler kommen. Also der Eintrag soll nur gespeichert werden, wenn das Feld leer bleibt.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m****r

    Baue mal bitte folgendes ein:
    if(isset($_POST['name']))


    und erst dann dem mysql_real_escape_string.

    Außerdem solltest du solche Sachen wie exit; lassen und das lieber in einem if else Konstrukt umbauen.

    Also ungefähr so:

    if($name = "" OR $inhalt = "")
    echo "Sie haben nichts eingetragen";
    else
    // dein SQL Code
    echo "Erfolgreich eingetragen";
  4. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    midwar schrieb:
    Baue mal bitte folgendes ein:
    if(isset($_POST['name']))


    und erst dann dem mysql_real_escape_string.

    Außerdem solltest du solche Sachen wie exit; lassen und das lieber in einem if else Konstrukt umbauen.

    Also ungefähr so:

    if($name = "" OR $inhalt = "")
    echo "Sie haben nichts eingetragen";
    else
    // dein SQL Code
    echo "Erfolgreich eingetragen";


    Was bewirkt

    if(isset($_POST['name']))
    ??
  5. m****r

    davy schrieb:
    midwar schrieb:
    Baue mal bitte folgendes ein:
    if(isset($_POST['name']))


    und erst dann dem mysql_real_escape_string.

    Außerdem solltest du solche Sachen wie exit; lassen und das lieber in einem if else Konstrukt umbauen.

    Also ungefähr so:

    if($name = "" OR $inhalt = "")
    echo "Sie haben nichts eingetragen";
    else
    // dein SQL Code
    echo "Erfolgreich eingetragen";


    Was bewirkt

    if(isset($_POST['name']))
    ??


    Das bedeutet soviel wie "Wenn $_POST['name'] überhaupt existier" - d.h. wenn da überhaupt was eingegeben wurde. ;)
  6. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    OK.

    Jetzt habe ich noch ein Problem.

    Mein aktuelles Script:

    ...
    <script type="text/javascript" language="JavaScript">
    <!--
    function seticon(Zeichen) {
        document.form.text.value = document.form.text.value + Zeichen;
    }
    //-->
    </script> 
    	</head>
    ...
    
    <?php 
    
    if(!isset($_POST['submit'])) {
    
    require('../admin/sql.php');
    
    $name = mysql_real_escape_string($_POST['name']); 
    $email = mysql_real_escape_string($_POST['email']); 
    $inhalt = mysql_real_escape_string($_POST['text']); 
    
    $datum = time(); 
    $aktiv = 1; //1: Einträge werden aktiviert gespeichert, 2: Einträge werden deaktiviert gespeichert 
    
    if($name == "" OR $inhalt == "") { 
       echo "Bitte die Felder \"Name\" und \"Inhalt\" ausfüllen<br>"; 
       } else {
    $eintrag = "INSERT INTO guestbook (datum, name, email, inhalt, aktiv) VALUES ('".htmlentities($datum)."', '".htmlentities($name)."', '".htmlentities($email)."', '".htmlentities($inhalt)."', '".htmlentities($aktiv)."')"; 
    $eintragen = mysql_query($eintrag); 
    }
    
    if($eintragen == true) 
       { 
       echo "<p align=\"center\"><font face=\"Arial\">Dein Beitrag wurde erfolgreich gespeichert.<br><br><a href=\"index.php\">Zur&uuml;ck zum G&auml;stebuch</a></font></p> "; 
       } 
    else 
       { 
       echo "Fehler beim Speichern.<br>"; 
       } 
    }
    ?>
    
    <form method="POST" action="eintragen.php">
    <div align="center">
        <center>
        <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="73%" height="492">
          <tr>
            <td width="21%" height="22"><b>Ihr Name:</b></td>
            <td width="79%" height="22"><input type="text" name="name" size="20"></td>
          </tr>
          <tr>
            <td width="21%" height="1"><b>Ihre Email-Adresse:</b></td>
            <td width="79%" height="1"><input type="text" name="email" size="20"></td>
          </tr>
          <tr>
            <td width="21%" height="30">&nbsp;</td>
            <td width="79%" height="30"><font size="2">Dies ist eine freiwillige 
            Angabe. Wenn sie ihre Email-Adresse nicht angeben möchten, lassen sie 
            das Feld einfach leer.</font></td>
          </tr>
          <tr>
            <td width="21%" height="22"><b>Ihre Homepage:</b></td>
            <td width="79%" height="22">
            <input type="text" name="homepage" size="20" value="http://"></td>
          </tr>
          <tr>
            <td width="21%" height="30">&nbsp;</td>
            <td width="79%" height="30"><font size="2">Dies ist eine freiwillige 
            Angabe. Wenn sie ihre Homepage nicht angeben möchten, lassen sie das 
            Feld einfach leer.</font></td>
          </tr>
          <tr>
            <td width="21%" height="332" valign="top"><b>Ihr Eintrag:</b></td>
            <td width="79%" height="332"><textarea rows="16" name="text" cols="38"></textarea><p>
            <font size="2">Für den Eintrag stehen ihnen maximal <b>600 Zeichen zur 
            Verfügung</b>.</font></p>
            <p>
            
    <a href="javascript:seticon(':)')"><img src="images\smilies\1.gif" border="0"><a>
    <a href="javascript:seticon(':(')"><img src='images\smilies\2.gif' border='0'><a>
    <a href="javascript:seticon(':D')"><img src='images\smilies\3.gif' border='0'><a>					
    <a href="javascript:seticon(':P')"><img src='images\smilies\4.gif' border='0'><a>
    <a href="javascript:seticon(':o')"><img src='images\smilies\5.gif' border='0'><a>
    <a href="javascript:seticon(';-)')"><img src='images\smilies\6.gif' border='0'><a>
    <a href="javascript:seticon(':8')"><img src='images\smilies\7.gif' border='0'><a>
    <a href="javascript:seticon(':-(')"><img src='images\smilies\8.gif' border='0'><a>
    <a href="javascript:seticon(':-o')"><img src='images\smilies\9.gif' border='0'><a>
    <a href="javascript:seticon(':love:')"><img src='images\smilies\10.gif' border='0'><a>
    <a href="javascript:seticon(':kiss:')"><img src='images\smilies\11.gif' border='0'><a>
    <a href="javascript:seticon(':-D')"><img src='images\smilies\12.gif' border='0'><a>
    
    </td>
          </tr>
          <tr>
            <td width="21%" height="19">&nbsp;</td>
        <td colspan="2">
        <div class="some_body">
          Wenn sie das hier lesen können, lassen 
          sie das nachfolgende Feld bitte leer:<br>
          <br>
          <input type="text" name="url" size="20">
          </div>
        </td>
          </tr>
          <tr>
            <td width="21%" height="19">&nbsp;</td>
            <td width="79%" height="19">&nbsp;</td>
          </tr>
          <tr>
            <td width="21%" height="26">
            <input type="submit" name="submit" value="Eintrag absenden"></td>
            <td width="79%" height="26">&nbsp;</td>
          </tr>
        </table>
        </center>
      </div>
    </form>
    <p align="center"><font size="2"><br>
    <a href="index.php">Zurück zum Gästebuch</a><br>
    <br>
    </p>
    </font>
    
    <br>


    Hier zum Testen: http://davidlohmann.de/guestbook/eintragen.php

    1. Die Smilies werden nicht angezeigt, obwohl der Pfad stimmt.
    2. Wenn ich auf die Smilies klicke, wird der Code nicht in die Textarea eingefügt.
    3. Oben steht schon beim Aufruf, dass die Felder leer sind, es soll aber erst da stehen, wenn man wirklich gesendet hat.
  7. m****r

    Verwende mal anstatt

    document.form.text.value = document.form.text.value + Zeichen;

    einfach

    document.getElementById("text").value += Zeichen;

    Was das anzeigen angeht, dass obwohl man noch nicht abgeschickt hat, da schon steht die Felder seien leer, achte bitte dringend darauf, in welchem If oder Else block das auch steht. Du musst einfach aufpassen, dass das echo "ist nicht ausgefüllt" (oder wie auch immer) nur dann ausgeführt wird, wenn auch wirklich abgeschickt wurde. In deinem Fall also if(isset($_POST['submit'])). Deinen Code sich durchzulesen macht nicht wirklich Spaß, da du komplett auf einrückungen verzichtest. Änder das dann schau ich mal genauer. Wenn nicht such alleine nach, ob das auch wirklich im richtigen if Block steht.
  8. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    midwar schrieb:
    Verwende mal anstatt

    document.form.text.value = document.form.text.value + Zeichen;

    einfach

    document.getElementById("text").value += Zeichen;

    Was das anzeigen angeht, dass obwohl man noch nicht abgeschickt hat, da schon steht die Felder seien leer, achte bitte dringend darauf, in welchem If oder Else block das auch steht. Du musst einfach aufpassen, dass das echo "ist nicht ausgefüllt" (oder wie auch immer) nur dann ausgeführt wird, wenn auch wirklich abgeschickt wurde. In deinem Fall also if(isset($_POST['submit'])). Deinen Code sich durchzulesen macht nicht wirklich Spaß, da du komplett auf einrückungen verzichtest. Änder das dann schau ich mal genauer. Wenn nicht such alleine nach, ob das auch wirklich im richtigen if Block steht.


    Das der Fehlertext nicht mehr nach dem Aufruf angezeigt wird, hab ich geschafft.

    Das Javascript funktioniert noch nicht, und die Bilder (Smilies) werden auch noch nicht angezeigt.

    EDIT: Das mit dem Anzeigen habe ich nun auch geschafft. Nur das Javascript geht noch nicht. Ihr könnt es auch mal testen auf meiner Seite http://davidlohmann.de/guestbook/eintragen.php

    Beitrag zuletzt geändert: 8.5.2010 17:48:15 von davy
  9. Zum Javascript-Problem:
    document.form.text.value

    gibt es in deinem Quelltext nicht.
    Entweder du gibst dem form-Tag das Attribut name="form" oder du musst
    document.forms[0].text.value

    nutzen.

    Gruß,
    dex
  10. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    qap2 schrieb:
    Zum Javascript-Problem:
    document.form.text.value

    gibt es in deinem Quelltext nicht.
    Entweder du gibst dem form-Tag das Attribut name="form" oder du musst
    document.forms[0].text.value

    nutzen.

    Gruß,
    dex


    Danke, das geht nun auch !
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!