2009-05-14 12 views
0

ich hier von zwei Arrays aus dem Formular ein Beispiel habe,legen Sie zwei Arten von Array in der gleichen Tabelle

<input type="text" name="children[]" /> 
<input type="text" name="age[]" /> 

mein Problem ist, den Wert oben in der gleichen Tabelle einzufügen wie

insert into childTable(children,age) values('children[]','age[]') 

es ist in Form von Array coz ich weiß nicht, wie viele Kinder eingeben .. können Sie mir helfen, dieses zu lösen ???? alle Antworten werden sehr geschätzt ... danke !!!

Antwort

0

Ich denke, Sie brauchen eine for-Schleife.

Pseudo-Code:

for(int i = 0; i < children.Length; i++) 
{ 
    insert into childTable(child, age) values(children[i], ages[i]) 
} 
2

Die Daten aus dem Formular werden in PHP in dem $ _POST Variable zugänglich sein (oder $ _GET, aber Sie sollten wahrscheinlich $ _POST, zum Beispiel verwenden: <form method="post">).

Das erste, was ich tun, in der Regel nach einem Formular, ist es zu schreiben zurück zum Skript und fügen Sie diese Zeile:

print_r($_POST); 

Diese Sie die Struktur der Daten zeigen, mit dem Sie arbeiten. In Ihrem Fall wird es wie folgt aussehen:

array(
    "children" => array(
     0 => "Bobby", 
     1 => "Mary", 
     2 => "Janey" 
    ), 
    "age" => array(
     0 => 8, 
     1 => 12, 
     2 => 7 
    ) 
); 

(? Ich nehme an, es gibt ein entsprechendes age Feld für jeden children Feld, yeah)

Daher ist es nur eine Frage thusly durch die Anordnung von looping:

$numKids = count($_POST['children']); 
$values = array(); 

for ($i = 0; i < $numKids; ++$i) { 
    $values[] = "('" . mysql_real_escape_string($_POST['children'][$i]) . "'" 
       . ", " . intval($_POST['age'][$i]) . ")"; 
} 
$sql = "INSERT INTO `childTable` (`children`, `age`) " 
    . "VALUES " . implode(",", $values); 
0

Formularfelder mit mehreren Werten sind nicht wirklich dazu gedacht, um solche Felder zu vergleichen. Es gibt keine Garantie dafür, dass mehrere Werte $_POST['children'] und $_POST['age'] in der gleichen Reihenfolge oder sogar mit der gleichen Anzahl von Elementen übergeben werden.

Sie wären besser dran, eine Reihe von nummerierten Feldern, wie:

Child 1:  
<input name="children_1" /> 
<input name="age_1"> 
<br /> 
Child 2: 
<input name="children_2" /> 
<input name="age_2" /> 
... 

Dann Code verwenden, wie dies durch vorgelegten Werte iterieren:

$i = 1; 
while (isset($_POST['children_' . $i]) && isset($_POST['age_' . $i])) { 
    if ($_POST['children_' . $i] != '') { 
     mysql_query('insert into childTable (children, age) values (\'' 
      . mysql_real_escape_string($_POST['children_' . $i]) . '\', \'' 
      . mysql_real_escape_string($_POST['age_' . $i]) . '\')'); 
    } 
    $i++; 
} 

Natürlich in der realen Englisch: www.doc-o-matic.com/webhelp/TdlgEditEdit.html Sie sollten auch eine Validierung hinzufügen, um zu überprüfen, ob diese Werte sinnvoll sind, bevor Sie sie in Ihre Datenbank einfügen.

+1

können Sie ihren Index im HTML angeben: nickf

Verwandte Themen