2010-12-13 6 views
0

J'ai un formulaire et je répète les mêmes champs parce que je ne suis pas l'utilisateur s'il a plus d'un élément pour envoyer le premier élément et il agin et agin je le veux de la première fois d'ajouter tous les éléments qu'il a, donc j'ai mis les mêmes champs obligatoires plus d'une fois.Comment obtenir les multi-champs multi-champs

<form> 
    <select name="items[]"> 
    <option value="clothes">Clothes</option> 
    <option value="shoes">Shoes</option> 
    </select> 
    <input type="text" name="color[]" /> 

    <select name="items[]"> 
    <option value="clothes">Clothes</option> 
    <option value="shoes">Shoes</option> 
    </select> 
    <input type="text" name="color[]" /> 
</form> 

et je sais comment obtenir un seul champ comme ceci: name = « color [] » Je peux obtenir le résultat avec:

while(list($key,$value) = each($_POST['color'])){ 

if(!empty($value)){ 

echo $_POST['color'][$key]; 
echo "<br />" ; 

}} 

mais maintenant je veux obtenir toutes les valeurs « , sélectionnez articles et couleur "

j'ai fait ce code ici et j'ai obtenu tous les résultats Mais ce n'est pas lié les uns aux autres !!!

comme ceci: vêtements chaussures rouge bleu

je veux comme ceci: vêtements-rouge chaussures bleu-

c'est le code que je fait mais je ne suis pas satisfait

while(list($key,$value) = each($_POST['input'])){ 

if(!empty($value)){ 

echo $_POST['input'][$key]; 
echo "<br />" ; 

}} 

while(list($key,$value) = each($_POST['items'])){ 

if(!empty($value)){ 

echo $_POST['items'][$key]; 
echo "<br />" ; 

}} 

quelqu'un peut me aider :) s'il vous plaît

merci,

Répondre

1

Changer vos noms de sélection et d'entrée pour être comme ça

<select name="items[0][type]"> 
<input name="items[0][color]"> 

<select name="items[1][type]"> 
<input name="items[1][color]"> 

Ensuite, vous pouvez itérer chaque paire ensemble à l'aide

foreach ($_POST['items'] as $item) { 
    $type = $item['type']; 
    $color = $item['color']; 
} 

Modifier oublié d'ajouter un index chaque paire pour les regrouper

+0

+1 Sidesteps la question, mais l'approche globale mieux bien sûr. :) – deceze

+0

Merci pour votre solution, j'apprécie vraiment que – Swell

1

Vous avez deux matrices:En bouclant successivement les deux réseaux, vous obtiendrez des «vêtements, des chaussures, du bleu, du rouge». Étant donné que l'indice 0 de $items correspond à l'indice 0 de $color, vous aurez besoin d'accéder à l'index correspondant dans les deux tableaux à la fois:

for ($i = 0; $i < count($items); $i++) { 
    echo $items[$i] . ' - ' . $color[$i]; 
} 
+0

Juste besoin d'être prudent avec cette méthode. Les zones de texte sont correctes mais certains éléments n'enregistreront pas une valeur de message si elle est laissée vide (cases à cocher et boutons radio). Dans ce cas, vous allez vous retrouver avec des tableaux de tailles différentes – Phil

+0

Merci deceze je n'ai pas essayé votre solution, Phil solution a travaillé merci quand même – Swell

Questions connexes