Problem mit forms und array
Zwack
- php
Hallo!
Als Newbie scheitere ich bei einem Denkansatz mehrere Texteingabefelder in mehreren Spalten einer Tabelle mit (logisch) mehreren Zeilen paralell zu verarbeiten.
Innerhalb der Form in der Tabelle definiere ich die Eingabefelder wie folgt:
<?php
//Funktion innerhalb des forms
$int_ID=$reihe_tabelle['id'];
print '<input name="frm_gb['.$int_ID.']" type="text" size="10" maxlength="10">';
$int_ID2=$reihe_tabelle['id'];
print '<input name="frm_gb2['.$int_ID2.']" type="text" size="15" maxlength="15">';
?>
Die Verarbeitung für eine der beiden Spalten funktioniert so:
<?php
// Funktion nach absenden des Forms
if(isset($_POST['frm_gb']))
{
foreach($_POST['frm_gb'] as $int_EintragID => $arr_Actions)
{
$sql= "UPDATE tabelle SET feld1='$arr_Actions' WHERE id ='$int_EintragID'";
}
}
?>
Beide Spalten nacheinander zu verarbeiten, also in diesem Fall auch noch eine nachfolgende Abfrage ala
if(isset($_POST['frm_gb2']))
{
...
}
zu setzen geht ja schon nur jetzt bekomme ich es aber nicht hin, dass beide Spalten nach Absenden des Forms innerhalb EINER Schleife verarbeitet werden, was besonders wichtig ist, weil ich diese Funktion nicht nur für sql-Update-Kommandos sondern auch für Insert-Anweisung verwenden möchte. Arrays sind für mich da immer noch ein Rätsel...
Ist der Ansatz im Formular schon falsch, oder muss die Verarbeitung anders erfolgen?
Hello,
man kann auch gleich mehrdimensionale Arrays benutzen
print '<input name="frm_gb[$zeile][$spalte]" type="text" size="10" maxlength="10">';
Und vergiss nicht, das SQL-Statement gegen SQL-Injection abzusichern
http://de.wikipedia.org/wiki/SQL-Injection
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo!
Tut mir leid, aber ich werde nicht schlau daraus, vor allem, wie ich das nach Absenden des Formulars verarbeiten soll.
Hello,
man kann auch gleich mehrdimensionale Arrays benutzen
print '<input name="frm_gb[$zeile][$spalte]" type="text" size="10" maxlength="10">';
Und vergiss nicht, das SQL-Statement gegen SQL-Injection abzusichern
http://de.wikipedia.org/wiki/SQL-InjectionLiebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Hallo!
Tut mir leid, aber ich werde nicht schlau daraus, vor allem, wie ich das nach Absenden des Formulars verarbeiten soll.
Hast Du es denn wenigstens schon mal probiert?
<?php ### grid.php ###
$form = '<form method="post" enctype="multipart/form-data" action="'.$_SERVER['SCRIPT_NAME']."">\r\n";
for ($zeile = 1; $zeile <= 10 ; $zeile++)
{
$form .= "<p>\r\n";
for ($spalte = 1; $spalte <=5; $spalte++)
{
$form .= "<input name="frm_gb[$zeile][$spalte]" type="text" size="10" maxlength="10">\r\n";
}
$form .= "</p>\r\n";
}
$form .= '<input type="submit" name="btn[insert]" value="hinzufügen">'."\r\n";
$form .= '<input type="submit" name="btn[update]" value="ändern">'."\r\n";
$form .= "</form>\r\n";
if (isset($_POST['btn']))
{
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_POST,1));
echo "</pre>\r\n";
echo '<a href ="'.$_SERVER['SCRIPT_NAME'].">Zum Formular</a>\r\n";
}
else
{
echo $form;
}
?>
Von hier aus solltest Du aber alleine weiter kommen.
Anstelle des print_r() kannst Du die Daten dann verarbeiten.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg