Dropdown mit PHP auslesen
Transporteur
- php
0 Karin0 Transporteur0 Karin
0 Joachim0 suit0 Der Martin
0 dedlfix
0 Transporteur1 ChrisB
Hallo,
ich habe da ein kleines Problem mit nem kleinen Script.
Und zwar habe ich ein Textfeld, welches Text in eine Datenbank einträgt.
Durch ein Dropdown Menü soll entschieden werden, in welche Table der Datenbank der Text des Textfeldes eingetragen wird.
Hier erstmal der Quelltext des Dropdowns;
<form name="auswahl" method="POST">
<div>
<select name="myform">
<option value="klaus">Text2</option>
<option value="peter">Text1</option>
</select>
</div>
</form>
Jetzt das Script, welches entscheiden soll, wo der Text gespeichert werden soll;
if($_POST[auswahl]=='klaus') {
if($_POST[Text]!='') {
$sql="INSERT INTO home (text) VALUES ('$_POST[Text]');";
mysql_query($sql) OR die("QUERY-ERROR: ".mysql_error());}
else {}
}
else {
if($_POST[Text]!='') {
$sql="INSERT INTO impressum (text) VALUES ('$_POST[Text]');";
mysql_query($sql) OR die("QUERY-ERROR: ".mysql_error());}
else {}
}
Nun zu meinem Problem.
Ich komme immer nur in den Else Zweig, die darin enthaltene Anweisung wird auch ausgeführt.
Ich komme nur nicht in das erste If.
Woran kann das liegen?
Vielen Dank!
Hi,
Dein Auswahlfeld heißt "myform". "auswahl" heißt das Formular... ;)
LG
Hallo,
das habe ich schon geändert, aber auch das ändert leider nichts daran, dass ich nur in den Else Zweig komme.
Ich verstehe nur nicht warum.
Hi,
Folgendes funktioniert bei mir tadellos:
<form name="auswahl" method="POST" action="selectbox.php">
<div>
<select name="myform">
<option value="klaus">Text2</option>
<option value="peter">Text1</option>
</select>
</div>
<input type="submit" value="absenden">
</form>
if(isset($_POST['myform'])) {
if($_POST['myform'] == 'klaus') {
echo "<p>Klaus gewählt.</p>";
} else {
echo "<p>Klaus nicht gewählt.</p>";
}
}
Und beherzige Joachims Hinweis. Stichwort SQL-Injection.
LG
Hi,
if($_POST[Text]!='') {
$sql="INSERT INTO impressum (text) VALUES ('$_POST[Text]');";
Ups. Ich hoffe, Du validierst Dein $_POST[Text]noch an anderer Stelle. Andernfalls musst Du mit bösen Dingen rechnen.
Gruesse, Joachim
<select name="myform">
if($_POST[auswahl]=='klaus') {
Woran kann das liegen?
daran dass die bedingung niemals zutreffen kann
Hi,
ich habe da ein kleines Problem mit nem kleinen Script.
ja, und einen Teil der Probleme sollten dir die PHP-Warnings schon aufzeigen, die das Script auswerfen müsste.
if($_POST[auswahl]=='klaus') {
if($_POST[Text]!='') {
Hast du Konstanten mit den Namen auswahl und Text definiert? Nein?
Dann müsste der PHP-Interpreter an diesen zwei Stellen eine Warnung schmeißen, bevor er sich widerwillig entschließt, die vermeintliche Konstante klaus als String "klaus" zu interpretieren.
Allerdings sehe ich in deinem Formular kein Element mit dem Namen "Text".
else {
if($_POST[Text]!='') {
$sql="INSERT INTO impressum (text) VALUES ('$_POST[Text]');";
Dito.
else {}
Einen leeren else-Zweig kannst du natürlich auch ganz weglassen.
Nun zu meinem Problem.
Ich komme immer nur in den Else Zweig, die darin enthaltene Anweisung wird auch ausgeführt.
Dazu hast du ja nun schon reichlich Hinweise bekommen.
So long,
Martin
echo $begrüßung;
Hast du Konstanten mit den Namen auswahl und Text definiert? Nein?
Dann müsste der PHP-Interpreter an diesen zwei Stellen eine Warnung schmeißen, bevor er sich widerwillig entschließt, die vermeintliche Konstante klaus als String "klaus" zu interpretieren.
Nein, er schmeißt keine Warnung sondern nur eine Notiz, und auch das nur, wenn man ihn mit auf E_ALL gestelltem error_reporting darum bittet. Standardmäßig sind Notice-Meldungen ausgeschaltet.
Ich komme immer nur in den Else Zweig, die darin enthaltene Anweisung wird auch ausgeführt.
Dazu hast du ja nun schon reichlich Hinweise bekommen.
Der wichtigste fehlte: Kontrollausgaben der Variableninhalte! Wunsch und Wirklichkeit lassen sich mit var_dump() gut vergleichen.
echo "$verabschiedung $name";
Hallo,
[...] müsste der PHP-Interpreter an diesen zwei Stellen eine Warnung schmeißen, bevor er sich widerwillig entschließt, die vermeintliche Konstante klaus als String "klaus" zu interpretieren.
Nein, er schmeißt keine Warnung sondern nur eine Notiz
das hatte ich eigentlich auch gemeint, sorry. Ich bin aus dem Bereich der C-Compiler nur die Unterscheidung zwischen Error und Warning gewöhnt. Zumal PHP auch bei meiner Ansicht nach schwerwiegenden Fehlern (uninitialisierte Variablen, vermeintlich benannte Konstanten anstatt String-Literale) nur eine Notice wirft, während ich das eher als Error einstufen würde. Die Unterscheidung zwischen Warning und Notice ist in meinen Augen aber unerheblich, denn ...
und auch das nur, wenn man ihn mit auf E_ALL gestelltem error_reporting darum bittet.
... das halte ich (jedenfalls während der Entwicklungsphase) für eine Selbstverständlichkeit, und das ...
Standardmäßig sind Notice-Meldungen ausgeschaltet.
... für fahrlässig - vor allem als Defaulteinstellung in Paketen wie XAMPP, die ja ausdrücklich nicht für den Produktiveinsatz empfohlen werden.
Der wichtigste fehlte: Kontrollausgaben der Variableninhalte! Wunsch und Wirklichkeit lassen sich mit var_dump() gut vergleichen.
ACK.
So long,
Martin
echo $begrüßung;
und auch das nur, wenn man ihn mit auf E_ALL gestelltem error_reporting darum bittet.
... das halte ich (jedenfalls während der Entwicklungsphase) für eine Selbstverständlichkeit, und das ...
Kontrollausgaben zähle ich auch zur Selbstverständlichkeit, dem ist aber leider nicht so.
Standardmäßig sind Notice-Meldungen ausgeschaltet.
... für fahrlässig - vor allem als Defaulteinstellung in Paketen wie XAMPP, die ja ausdrücklich nicht für den Produktiveinsatz empfohlen werden.
Das wissen wir beide, aber ändern werden wir es nicht. Das Gejammer, wenn plötzlich viele, auch populäre Scripte jede Menge Notice-Meldungen werfen, will man sich ungern antun. Normalerweise gehören diese Meldungen den Autoren um die Ohren geworfen, aber der gemeine DAU "belästigt" stattdessen damit gern Foren und andere Unschuldige ...
echo "$verabschiedung $name";
Hallo.
aber der gemeine DAU "belästigt" stattdessen damit gern Foren und andere Unschuldige ...
Sonst wäre er ja auch nicht gemein, der DAU.
MfG, at
Hast du Konstanten mit den Namen auswahl und Text definiert? Nein?
Dann müsste der PHP-Interpreter an diesen zwei Stellen eine Warnung schmeißen, bevor er sich widerwillig entschließt, die vermeintliche Konstante klaus als String "klaus" zu interpretieren.
Allerdings sehe ich in deinem Formular kein Element mit dem Namen "Text".
Ein Element mit dem Namen "Text" ist vorhanden, allerdings an anderer Stelle, sprich nicht in diesem Form Tag.
Habe ich hier nicht aufgeführt, da ich es für überflüssig ansah, denn wie gesagt, die Anweisungen innerhalb der Verzweigungen funktionieren einwandfrei, nur komme ich eben nur in den Else Zweig.
Einen leeren else-Zweig kannst du natürlich auch ganz weglassen.
In der Tat, das könnte ich machen.
BTW: Konnte ich das Problem noch nicht lösen. Es wird nach wie vor der Else Zweig ausgeführt.
An dieser Stelle schonmal ein Dankeschön an Joachim für den Hinweis bezüglich der SQL-Injection.
Hi,
Allerdings sehe ich in deinem Formular kein Element mit dem Namen "Text".
Ein Element mit dem Namen "Text" ist vorhanden, allerdings an anderer Stelle, sprich nicht in diesem Form Tag.
Dann wird es beim Abschicken des *anderen* Formulars, in dem es *nicht* enthalten ist, natuerlich auch nicht mit uebermittelt.
Habe ich hier nicht aufgeführt, da ich es für überflüssig ansah, denn wie gesagt, die Anweisungen innerhalb der Verzweigungen funktionieren einwandfrei, nur komme ich eben nur in den Else Zweig.
D'oh, siehe oben.
MfG ChrisB
Dann wird es beim Abschicken des *anderen* Formulars, in dem es *nicht* enthalten ist, natuerlich auch nicht mit uebermittelt.
Ah ok, das hatte ich nicht bedacht.
Habe jetzt alles in eine Form gepackt und jetzt geht es auch.
Vielen Dank für deinen Hinweis ChrisB!