00 Stimmen

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.

AntwortenPositivNegativDatumStimmen
00 Stimmen

Schreib mal da vor das "if($selectedValue == $element) { " ein

echo "$selectedValue $element";

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

AntwortenPositiv Negativ
00 Stimmen

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&nbsp;&nbsp;</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

AntwortenPositiv Negativ
00 Stimmen

Wieso schreibst du denn eigentlich name='feld[".$field['tech_attribut']."]'?

Versuche es einmal mit:

<select name="tech_attribut">

Dann kannst du den ausgewählten Wert empfangen mit:

$selectedValue = htmlentities($_POST['tech_attribut']);

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

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

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.