PHP: Dynamische $_POST Variablen verifizieren und zurückgeben
Frage von Beatfaeh | 17.11.2021 um 08:38
Hallo und guten Tag
Aus einer Datenbank erstelle ich ein dynamisches Formular:
# preis_id echo "<td><input type='hidden' name='feld[".$field['preis_id']."]' value='".$field['preis_id']."'>".$field['preis_id']."</td>\n"; # raum echo "<td>".$field['raum']."</td>\n"; # beschreibung echo "<td>".nl2br($field['beschreibung'])."</td>\n"; # tech_attribut echo "<td>".$field['tech_attribut']."</td>\n"; # preis echo "<td>".sprintf("%.2f",$field['preis'])."</td>\n"; # tech_attribut_j_n echo "<td><select name='feld[".$field['tech_attribut']."]'>\n"; echo "<option value=''>Bitte wählen</option>\n"; $selectedValue = htmlentities($_POST['$tech_attribut']); $myArray = array("JA","NEIN"); foreach($myArray AS $element) { if($selectedValue == $element) { echo "<option value=".$element." selected>".$element."</option>\n"; } else { echo "<option value=".$element.">".$element."</option>\n"; } } echo "</select>\n"; echo "</tr>\n";
Nun möchte ich die JA/NEIN Antworten verifizieren und zurückgeben, falls es leere Werte hat oder Werte, die bereits mit JA oder NEIN beantwortet wurden im Formular anzeigen.
if(isset($_POST['submit_insert'])) { # alle Daten in einem Array empfangen $felder = $_POST['feld']; # alle Daten ausgeben und verarbeiten foreach ($felder as $mietobjekt => $mietobjekt_j_n) { // echo "<br>Value = ".$mietobjekt." - ".$mietobjekt_j_n; if ($mietobjekt_j_n=="JA") { # SQL INSERT INTO tbl_mietobjekt echo "<br>SELECT PREIS FROM TBL_PREIS WHERE TECH_ATTRIBUT = '$mietobjekt';"; } } }
Bei meiner Lösung werden die Werte alle wieder auf "Bitte wählen" zurückgesetzt.
Ähnliche Themen
PHP: Formular-Eingaben als Array an PHP Skript schicken
Tipp | 0 Kommentare
HTML Formular: Weiterleitung abhängig von Radiobutton oder Checkbox
Tutorial | 0 Kommentare
Bild vor dem Upload im Browser verkleinern
Tutorial | 5 Kommentare
PHP: Array in Einzelvariablen schreiben
Tutorial | 0 Kommentare
PHP: Dynamische POST Variablen von Formular empfangen
Frage | 2 Antworten
HTML5 Canvas als Bild an Server senden und speichern
Tutorial | 0 Kommentare
MySQL: Zeilenumbrüche in MySQL
Tipp | 0 Kommentare
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.
Schreib mal da vor das "if($selectedValue == $element) { " ein
in die foreach Schleife und dann schau mal auf welchen Werten die beiden Variablen stehen.
Und dann solltest du dir mal über den Schutz vor SQL Injections Gedanken machen.
17.11.2021 um 17:40
Herzlichsten Dank für deinen Hinweis!
der Wert selectedValue, siehe weiter unten bei den Mietobjekten, ist leider leer:
$selectedValue = htmlentities($_POST['$tech_attribut']);
bei der Combobox Land wählte ich Deutschland:
<td><select name='land' value=''>
<option value=''>Bitte wählen </option>
<option value=Schweiz>Schweiz</option>
<br>selectedValue = Deutschland
<br>element = Schweiz
<option value=Deutschland selected>Deutschland</option>
<br>selectedValue = Deutschland
<br>element = Deutschland
<option value=Frankreich>Frankreich</option>
<br>selectedValue = Deutschland
<br>element = Frankreich
<option value=übrige>übrige</option>
<br>selectedValue =
<br>element = übrige
</select></td></tr>
bei der Combobox der Mietobjekte:
<td><select name='feld[kirche]'>
<option value=''>Bitte wählen</option>
<option value=JA>JA</option> JA
<br>selectedValue =
<br>element = JA
<option value=NEIN>NEIN</option>
NEIN
<br>selectedValue =
<br>element = NEIN
</select>
20.11.2021 um 13:13
Wieso schreibst du denn eigentlich name='feld[".$field['tech_attribut']."]'?
Versuche es einmal mit:
Dann kannst du den ausgewählten Wert empfangen mit:
Mit den eckigen Klammern erzeugst du einen Array, das macht nur bei einer Mehrfachauswahl Sinn, nicht bei einem einfach Auswahlfeld.
22.11.2021 um 15:32