Dirk P.: Input Boxen (beispiel Shoutbox)

Hallo zusammen,

ich bin derzeit dabei mir das php Scripten etwas bei zubringen, ich habe der zeit eher weniger Probleme Sache auszulesen als sie hin nein zuschreiben und da ist auch mein Problem.

Ich suche ein Script das mir verdeutlicht wie es funktioniert daher wollte ich mir eine simple shoutbox zum Anfang erstellen.
Doch was mir dazu fehlt um es zu ende zubringen wären die input boxen

Wenn mir also jemand den Code dafür geben könnte, um 3 Variablen in die Datenbank zu bekommen, wäre ich Dankbar.

Mein SQL Tabelle besteht erstmal aus 3 spalten (POST_ID, POST, NICK)

Nun brauchte ich also ein input box die
a) NICK
b) POST
einliest und anschließend in die Datenbank schreibt mit der nächsten POST_ID die an der reihe wäre.

Bisher habe ich zum schreiben in die SQL nur das gefunden:
mysql_query ("INSERT INTO shoutbox (POST_ID, POST, NICK) VALUES ($POST_ID, $POST, $NICK)");

  1. Hey Dirk,

    Bisher habe ich zum schreiben in die SQL nur das gefunden:
    mysql_query ("INSERT INTO shoutbox (POST_ID, POST, NICK) VALUES ($POST_ID, $POST, $NICK)");

    das sollte aber doch funktionieren!? Mal abgesehen davon, dass Du Benutzereingaben nicht ungeprüft lassen solltest.

    Oder meinst Du etwas anderes? Dann habe ich Deine Frage nicht verstanden.

    Gruß, Dennis

  2. zervus erstmal,
    also ich bin zwar auch mehr oder weniger ein Anfänger aber das sollte hier kein Problem darstellen

    also erstmal müsste man wissen wie du deine tabelle aufgebaut hast
    post_id soll fortlaufend sein dass muss dies schonmal auf auto increment stehen und ggf ein unsigned int sein

    post ist wahrscheinlich eine nachricht also vom typ text bzw longtext

    nick ist der empfänger??? da genügt ein varchar(30)

    zum einlesen der daten brauchst du ein file sagen wir einlesen.php
    das ein formular mit den entsprechenden inputs enthält
    ich gehe mal davon aus das post ne längere nachricht werden soll also benutze ich eine Textarea, die <p> paragraphen dienen nur der übersichtlichkeit

      
    <form action="auswerten.php" method="POST>  
      <p><input type="text" name="nick" maxlenght="30" size="30" /></p>  
      <p><textarea name="post" rows="16" cols="90"></textarea></p>  
      <p><input type="submit" name="send" value="absenden"/></p>  
    </form>
    

    so da hast du schonmal ein formular mit einem input für den nick genau 30 Zeichen lang mit maximal ner eingabe von 30 zeichen
    ein textfeld für den text mit 16 Zeilen a 90 Zeichen
    und ein absendenbutton der das ganze an die in form action definierte seite
    schickt

    so jetzt das auswertefile auswerten.php, natürlich ginge das ganze auch mit nur einer datei aber so ist es verständlicher

      
    <?php  
      //wenn senden button benutzt wurde dann  
      if(isset($_POST['send'])) {  
        // wenn was in nick eingetragen wurde und es gesendet wurde  
        if(!empty($_POST['nick']) && isset($_POST['nick'])) {  
          $nick = $_POST['nick'];  
        } else {  
        // ansonsten geben wir an nick einen standardwert  
          $nick = "standard";  
        }  
        // wenn was in die textarea eingetragen wurde und es gesendet wurd  
        if(!empty($_POST['post']) && isset($_POST['post'])) {  
          $post = $_POST['post'];  
        } else {  
        // ansonsten geben wir an post einen standardtext  
          $post = "standardtext";  
        }  
      
        // so nun nur noch das ganze in die Datenbank eintragen  
        // POST_ID brauchen wir nicht einzutragen da es durch auto increment automatisch  
        // einen fortlaufenden Wert erhält  
        mysql_query("INSERT INTO shoutbox SET POST='$post', NICK='$nick'", $datenbankverbindung);  
      }  
    ?>
    

    natürlich sollten usereingaben gefiltert werden und auch eventuelle Fehler abgefangen und bearbeitet werden, aber das ist ein anderes Thema

    Um das nun alles in eine Datei zu bekommen musst du nur den code der auswerten.php über dem code der eintragen.php eintragen, in der form bei action dann eintragen.php hinschreiben
    und den form-block nach der } nach mysql_query mit else eintragen...

    mysql_query...
    } else {
    ?>
      formularcode...
    <?php
    }
    ?>
    fertig ... hoffe das hat e bissel gehölfen

    1. Hi!

      <form action="auswerten.php" method="POST>
        <p><input type="text" name="nick" maxlenght="30" size="30" /></p>
        <p><textarea name="post" rows="16" cols="90"></textarea></p>
        <p><input type="submit" name="send" value="absenden"/></p>
      </form>

        
      Wenn man gerade auf im Nick-Feld ist und Enter drückt, wurde der Submit-Button nicht aktiviert. Die Spezifikation ist in dem Fall nicht ganz eindeutig, wie dann mit diesem zu verfahren ist. Einige Browser (IE) senden dann kein name-value-Pärchen für den Submit-Button, andere senden einfach das von irgendeinen, wenn es mehrere gibt.  
        
      
      >   if(isset($\_POST['send'])) {  
        
      Deshalb ist es besser, nicht den Submit-Button auszuwerten sondern nur zu schauen, ob $\_POST nicht leer ist.  
        
      
      >     // wenn was in nick eingetragen wurde und es gesendet wurde  
      >     if(!empty($\_POST['nick']) && isset($\_POST['nick'])) {  
      >       $nick = $\_POST['nick'];  
      >     } else {  
      >     // ansonsten geben wir an nick einen standardwert  
      >       $nick = "standard";  
      >     }  
        
      Ob es sinnvoll ist, einen Nick festzulegen, sei mal dahingestellt. Das kann nur der Probleminhaber anhand seiner Anforderungen klären. Es ist aber nicht unbedingt notwendig, eine neue Variable anzulegen. Man kann den Default-Wert auch selbst in $\_POST/$\_GET-Einträge schreiben. Zudem hat die Funktion empty() quasi ein eingebautes isset(). Wenn es reicht sicherzustellen, dass ein Wert eingegeben wurde (wobei "0" für empty() auch nicht als Wert zählt), dann braucht man kein isset():  
        
          if (empty($\_POST['nick'])) {  
            $\_POST['nick'] = "standard";  
        
      
      >     mysql\_query("INSERT INTO shoutbox SET POST='$post', NICK='$nick'", $datenbankverbindung);  
        
      Und hier haben wir leider wieder einmal einen der häufigsten Programmierfehler: nicht beachteter [Kontextwechsel](http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel).  
        
      
      > natürlich sollten usereingaben gefiltert werden  
        
      Gefiltert wonach konkret und für welchen Zweck?  
        
      
      > Um das nun alles in eine Datei zu bekommen musst du nur den code der auswerten.php über dem code der eintragen.php eintragen,  
        
      Du meinst also eine Technik namens Affenformular. Mit diesem Stichwort findet man viele konkrete Beispiele.  
        
        
      Lo!
      
  3. Hi,

    Ich suche ein Script das mir verdeutlicht wie es funktioniert daher wollte ich mir eine simple shoutbox zum Anfang erstellen.
    Doch was mir dazu fehlt um es zu ende zubringen wären die input boxen

    Wenn mir also jemand den Code dafür geben könnte, um 3 Variablen in die Datenbank zu bekommen, wäre ich Dankbar.

    Foren sind nicht der Erklärbär für die absoluten Grundlagen.

    Warum arbeitest du nicht erst mal ein Tutorial durch?

    http://tut.php-q.net/de/ oder http://www.php-einfach.de/ sind schon mal recht informativ.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?