Input Boxen (beispiel Shoutbox)
Dirk P.
- php
0 Der-Dennis0 Ahnungsloser0 dedlfix
0 ChrisB
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)");
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
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
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!
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 boxenWenn 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