Dennis: Formulare mit mehreren radio-Button-Auswahlfeldern

Beitrag lesen

Hi David,

Ich mache deinen Code mal etwas übersichlticher:

while ($praef = mysql_fetch_array($praef_abfr))  
{  
  echo "<tr>\n";  
  echo "<td>" . wochentag ($praef[datum]) . "</td>\n";  
  echo "<td>" . schoenes_datum ($praef[datum]) . "</td>\n";  
  // echo "<td><input type=\"radio\" name=\"$praef[id]\" value=\"1\">Ja"  
  //                                        Hier hast du immer noch eine Nummer als Namen!  
  // Wir werden das mit den Namen jetzt etwas anders machen, wir werden das  
  // als ein Array aufbauen - damit das auch wieder als Array reinkommt, das macht  
  // das ganze beim Verarbeiten leichter!  
  echo "<td><input type=\"radio\" name=\"antwort[" . $praef['id'] . "]\" value=\"1\">Ja\n";  
  echo "    <input type=\"radio\" name=\"antwort[" . $praef['id'] . "]\" value=\"2\">Nein\n";  
  echo "    <input type=\"radio\" name=\"antwort[" . $praef['id'] . "]\" value=\"3\">Vielleicht\n";  
  //                                              ^^^^ Das ist besserer Stil!  
  //                                         Alternativ könntest du auch im String {$praef['id']}  
  //                                         schreiben, aber $praef[id] ist Murks!!  
  echo "</td>\n";  
  // für den Browser sähe das dann z.B. so aus:  
  //   <input type="radio" name="antwort[5]" value="1">Ja  
  // nachfolgendes brauchen wir nicht  
  // <td>$praef[kommentar] <input type=\"hidden\" name=\"idselektor\" value=\"$praef[id]\"></td>  
  echo "</tr>\n";  
}

Dieses Formular will ich also in die Datenbank eintragen.

Und genau das machen wir jetzt:

// Schau dir ruhig mal an, wie das $_POST Array aussieht:  
echo "<pre>";  
print_r($_POST);  
echo "</pre>";  
  
if(isset($_POST['verfuegbarkeit_etr']))  
//               ^^^^^ Name des Submit Buttons  
{  
  foreach($_POST['antwort'] as $id => $wert)  
  // Wir durchlaufen alle Einträge in $_POST['antwort'], der Key enspricht dabei $praef['id'], hier $id  
  // und der Wert ist das was der Besucher angeklickt hat, 1, 2 oder 3  
  {  
    // es ist guten Stil den MySQL Query erst in eine Variable zu schreiben (weil der dann beim  
    // Debuggen leichter auszugeben ist) und außerdem über mehrere Zeilen zu schreiben (weil dann  
    // die Zeilenummer von mysql_error() hilft einen Fehler einzugrenzen)  
    $sql = "INSERT into datenbank (  
              user,  
              verfuegbar,  
              kommentar  
            )  
            VALUES (  
              '" . mysql_real_escape_string($_SESSION['name']) . "',  
              '" . mysql_real_escape_string($wert) . "',  
              '" . mysql_real_escape_string($kommentar) . "'  
            )";  
    // $_SESSION['name'] kann zwar eigentlich nicht von einem Besucher gefälscht werden, aber zur  
    // Sicherheit jagen wir es auch durch mysql_real_escape_string(), für $wert ist dies besonders  
    // wichtig, da dies ja unmittelbar vom User kommt!! Ich weiß nicht, woher deine Variable  
    // $kommentar kommt - zur Sicherheit habe ich auch die durch mysql_real_escape_string() geschickt.  
  
    // nun wird der erstelle MySQL-Query verschickt:  
    mysql_query($sql) OR die(mysql_error());  
  }  
}

MfG, Dennis.

--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Patch zur Verwendung von PATHINFO in JLog
Krieg ist Gottes Art, den Amerikanern Geographie beizubringen. (Aus dem Häfft)