2009-06-14 6 views
1

Hey, je suis en train de programmer un formulaire de feedback sur un site web pour un client, cependant, il y a plus de 100 entrées (toutes nommées de façon unique). Je me demandais s'il y avait une boucle je pouvais courir pour obtenir toutes les variables, avez-vous les appeler comme ceci:Y at-il une fonction PHP pour appeler toutes les variables d'un formulaire?

$variable = $_REQUEST['variable']; 

EDIT:

Je vais avec $ _POST comme recommandé par tout le monde ici - merci pour la contribution! Je vais juste passer manuellement et écrire une ligne pour chaque $ _POST que j'ai.

+1

Ne pas utiliser DEMANDE, utilisez POST s'ils sont affichés et GET si elles sont de l'URL. Sérieusement. Vous ne devriez jamais, jamais, utiliser la demande. –

+1

Qu'est-ce que vous faites spécifiquement pour cela? Pourquoi une forme a-t-elle même 100 entrées uniques? Il pourrait y avoir une meilleure solution. J'ai tendance à toujours gérer les champs de formulaire individuellement parce que j'ai besoin de différents contrôles de santé mentale pour chaque domaine, mais je ne sais pas ce que vous essayez d'atteindre. –

Répondre

3

Vous boucle peut sur tous les veriables dans le tableau _PREQUEST $:

foreach($_REQUEST as $key=>$value){ 
    //doStuff 
} 

Cependant, cela comprendra tous envoyer des paramètres, pas seulement l'entrée. Aussi, vous ne devriez pas utiliser $ _REQUEST mais $ _POST ou $ _GET

0

Les variables de tableau $_GET et $_POST contiennent tous les paramètres transmis via la méthode URL ou POST respectivement. Vous devriez plutôt utiliser ces variables au lieu d'extraire tous les éléments comme register_globals option ou extract function. Voir Using Register Globals pour les raisons.

+0

Vous pourriez vouloir préciser que les globals de registre est * JAMAIS * une bonne idée. Pour * toute * raison. Les gens qui pensent que c'est une bonne idée finissent par écrire des failles de sécurité sous le couvert d'un site web. –

0

Comme dans mon commentaire ci-dessus, n'utilisez pas REQUEST, utilisez POST. J'écrirais probablement une ligne pour chacun afin que je sois au courant de ce qui se passait. Vous ne voulez pas que les utilisateurs affichent des variables supplémentaires qui sont toujours analysées.

0

Vous pouvez écrire un code simple pour obtenir de manière algorithmique toutes les entrées d'un formulaire affiché, mais il s'agit d'une activité dangereuse, qui est prête à être exploitée.

1
echo "<pre>"; 
print_r($_POST); // or $_GET 
echo "</pre>"; 

Si vous faites affaire avec des éléments que vous ne saurez peut-être le nom, mais ont besoin les valeurs alors que vous traitez avec un problème beaucoup plus que vous le pensez.

Mais l'extrait ci-dessus devrait vous montrer toutes les variables définies et leurs valeurs lorsque vous soumettez le formulaire

+0

Utile à savoir pour l'OP, mais ne vous aidera pas à faire quoi que ce soit avec eux. –

3

Si vous ne voulez pas avoir des centaines de variables nommées de façon unique et que vous voulez avoir des tableaux de données, placez le côté client, il y a une astuce pratique vouloir essayer.

<form> 
    <input name="foo[a]" type="text" /> 
    <input name="foo[b]" type="text" /> 
    <input name="bar[]" type="text" /> 
    <input name="bar[]" type="text" /> 

côté client:

<?php 
    $_POST['foo']['a']; 
    $_POST['foo']['b']; 
    $_POST['bar'][0]; 
    $_POST['bar'][1]; 
?> 
1

Je pense que vous devriez commencer avec une liste de toutes les variables que vous attendez, et la boucle que sur ceux-ci. Si vous ne le faites pas, les pirates peuvent injecter n'importe quel nom de variable ... En fait, vous réemployez l'ancienne, terriblement mauvaise idée de Register Globals. Donc, ne faites pas ça ...

En fait, pourquoi ne pas conserver l'entrée dans un tableau associatif, tout comme $ _POST? Vous pouvez toujours vouloir supprimer les valeurs auxquelles vous ne vous attendiez pas.

0

Je ne peux pas ajouter un commentaire sur le post de Pim Jager, mais voici un exemple de code:

foreach($_POST as $key=>$value) { 
    echo($key.' > '.$value.'<br />'); 
} 
0

Utilisez un tableau avec les champs que vous voulez copier de POST et stocker les données dans un tableau. C'est beaucoup plus facile à maintenir.

$fields = array("name","email","addr","bla","bla2"); 
$form = array(); 
foreach($fields as $field){ 
    $form[$field] = $_POST[$field]; 
} 

Maintenant, vous avez toutes les données à l'intérieur $form.
Vous pouvez également faire une chose similaire lors de la création du formulaire. (Bien que ce soit plus difficile ..)

Cheers!

0
foreach($_POST as $key=>$value) { 
      ${$key} = $value; 
    } 

mais cela fait la même chose que l'extrait()

Questions connexes