2009-05-14 6 views
0

j'ai un exemple ici de deux tableaux de la forme,insérer deux types de tableau dans la même table

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

mon problème est d'insérer la valeur ci-dessus dans la même table comme

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

c'est sous la forme de tableau coz je ne sais pas combien d'enfants à l'entrée .. pouvez-vous m'aider à résoudre ce ???? toutes les réponses seront très appréciées ... merci !!!

Répondre

0

Je pense que vous avez besoin d'une boucle for.

Code Pseudo:

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

Les données de votre formulaire seront accessibles en PHP dans la variable $ _POST (ou $ _GET, mais vous devriez probablement utiliser $ _POST, par exemple: <form method="post">).

La première chose que je fais habituellement après la conception d'un formulaire, est de l'afficher au script et ajoutez cette ligne:

print_r($_POST); 

Cela va vous montrer la structure des données que vous travaillez avec. Dans votre cas, il ressemblera à quelque chose comme ceci:

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

(? Je suppose qu'il ya un champ age correspondant pour chaque champ children, ouais)

Par conséquent, il est juste une question de boucle à travers le réseau ainsi:

$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

Les champs de formulaire à valeurs multiples ne sont pas vraiment destinés à être utilisés pour des champs correspondants. Il n'y a aucune garantie à condition que plusieurs valeurs $_POST['children'] et $_POST['age'] soient envoyées dans le même ordre, ou même avec le même nombre d'éléments.

Vous seriez mieux d'utiliser une série de champs numérotés, comme:

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

Ensuite, utilisez le code tel que celui-itérer valeurs soumises:

$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++; 
} 

Bien sûr dans le réel Dans le monde entier, vous devrez également ajouter une validation pour vérifier que ces valeurs ont du sens avant de les insérer dans votre base de données.

+1

vous pouvez spécifier leur index dans le code HTML: nickf

Questions connexes