2010-08-20 4 views
1

Je veux recevoir des variables $ _POST illimitées incluant un nombre supplémentaire et les transformer en tableaux comme le fait la forme paypal.

Exemple:

<form action="mysite"> 
<input name="productname" /> 
<input name="productname1" /> 
<input name="productname2" /> 
Etc.... 
</form> 

je vais le transformer en un tableau PHP après l'avoir reçu:

products(gta,twilight,flowers,chocolate,ipod) 

Alors que juste pour vous expliquer, je veux les énumérer comme une facture.

Note: S'il vous plaît ne suggère pas d'utiliser le productname [], je veux utiliser match de preg pour faire Merci

+0

Vous rencontrerez des problèmes si vous pensez que vous pouvez avoir un nombre illimité de variables $ _POST (ou $ _GET). Les serveurs avec le correctif Suhosin ont une valeur maximale par défaut de 100 variables. – stillstanding

+0

J'ai ajouté une solution que je pense que vous voulez. –

Répondre

4
<form action="mysite"> 
<input name="productname[]" /> 
<input name="productname[]" /> 
<input name="productname[]" /> 
Etc.... 
</form> 

Ensuite $_POST['productname'] sera un tableau numérique avec toutes vos valeurs.

Si vous ne pouvez pas contrôler la forme, vous pouvez construire le tableau comme ceci:

$res = array(); 
foreach ($_POST as $k => $v) { 
    if (preg_match('/^productname(\d{0,})$/', $k, $matches)) 
     $res[(int) $matches[1]] = $v; 
} 
// result in $res 
+0

Salut, je le sais déjà, je veux par programme pour le transformer en tableau en utilisant un match de preg ou quelque chose ... merci! – Ryan

+0

@David, pouvez-vous clarifier? '$ _POST ['productname']' sera déjà un tableau. Vous n'avez pas besoin d'utiliser 'preg_match'. –

+0

Je sais cela, mais je veux que le formulaire soit comme paypal, ils devraient ajouter des nombres à la fin de la variable – Ryan

0

S'ils n'ont pas fait d'avoir un nombre dans les noms, utilisez:

<form action="mysite"> 
<input name="productname[]" /> 
<input name="productname[]" /> 
<input name="productname[]" /> 
Etc.... 
</form> 

PHP va convertir productname en un tableau. Le FAQ a plus d'informations sur cette fonctionnalité.

+0

Salut, je le sais déjà, je veux par programme pour transformer cela en tableau en utilisant un match de preg ou quelque chose ... merci! – Ryan

1
<?php 
foreach($_POST as $name => $value) { 
    if(strpos($name, 'productname') === 0) { 
     // Do something with it 
    } 
} 
?> 
Questions connexes