2010-11-12 11 views
0

J'ai un formulaire POST avec plusieurs boutons d'envoi. Je comprends pour que cela fonctionne, je dois les avoir avec un nom différent.bouton de soumission multiple

Cependant, je veux garder le nom pour être le même parce que je veux gérer le POST en utilisant un seul script. Je ne sais pas s'il y a un autre moyen, mais je sais que javascript peut être utilisé. cependant, comment puis-je obtenir la valeur de la valeur cachée associée au bouton puisque maintenant ils n'ont qu'un seul?

mon exemple est la suivante:

<form method="Post" action="file.php"> 

<input type="hidden" name="removeid" value="1" /> 
<input type="submit" id="btnremove" name="btnremove" value="Remove" inputbutton/> 

<input type="hidden" name="removeid" value="2" /> 
<input type="submit" id="btnremove" name="btnremove" value="Remove" inputbutton/> 

<input type="hidden" name="removeid" value="2" /> 
<input type="submit" id="btnremove" name="btnremove" value="Remove" inputbutton/> 

</form> 
+0

Vous ne pouvez pas utiliser la même valeur "id" pour plusieurs éléments. – Pointy

+0

salut, j'ai vu des pages web en utilisant javascript qui acceptent removeid comme paramètres. je voudrais savoir comment créer un javascript qui accepte la valeur et le poster au php ?? – nuttynibbles

Répondre

3

Vos valeurs masquées ne sont pas associées aux boutons. De plus, vous ne pouvez pas utiliser la même valeur pour l'attribut ID sur plusieurs éléments.

Ce que je fais habituellement dans cette situation est de vérifier les variables POST. Nommez-les quelque chose comme remove_1, remove_2, etc Ensuite, vous pouvez rechercher à travers vos vars POST, les trouver tous commençant par remove_ (ou quel que soit le format que vous choisissez ... ne l'utilisez pas pour d'autres choses), puis vous pouvez analyser l'ID de ce que vous essayez de supprimer.

+0

salut j'ai décidé d'aller avec cette idée. Je pense que c'est le plus réalisable et le plus facile =). – nuttynibbles

+0

hey Brad, comment puis-je vérifier les vars POST ?? – nuttynibbles

+1

** $ remove_vars = preg_grep ('/^supprimer _. * /', $ _POST); ** Cela vous donnera un tableau de tous les éléments de formulaire que vous avez soumis qui commencent par "remove_". – Jake

-1

Vous ne pouvez pas parce qu'il n'y a aucun moyen de distingushing les différents domaines.

+0

Il y a un moyen, en utilisant leur valeur. –

+0

qui est actuellement tous les mêmes. – Femaref

2

Vous pouvez toujours utiliser 3 formes différentes, toutes avec la même action. Aucun JavaScript requis.

<form method="Post" action="file.php"> 
<input type="hidden" name="removeid" value="1" /> 
<input type="submit" value="Remove" inputbutton/> 
</form> 

<form method="Post" action="file.php"> 
<input type="hidden" name="removeid" value="2" /> 
<input type="submit" value="Remove" inputbutton/> 
</form> 

<form method="Post" action="file.php"> 
<input type="hidden" name="removeid" value="2" /> 
<input type="submit" value="Remove" inputbutton/> 
</form> 
+0

Salut, je l'ai effectivement utilisé mais ces formes multiples réside en fait dans une forme principale – nuttynibbles

+1

Je ne suis pas sûr de ce que votre objectif est, mais HTML ne supporte pas l'imbrication

tags. – Jake

+0

mais il prend en charge plusieurs éléments de formulaire avec le même nom dans le même formulaire, alors pourquoi avoir 3 formes différentes? –

0

Il est possible en utilisant deux méthodes différentes:

  1. Si vous devez absolument montrer 3 boutons différents, utilisez un emballage <forme> distincte pour chacun. Mettez chaque élément "removeid" sous une forme différente.
  2. Sinon, il suffit d'un seul bouton et, une fois soumis, utilisez JavaScript pour définir la valeur d'un seul élément d'entrée masqué avant de publier le formulaire. Vous pouvez trouver facilement un exemple de code avec une requête Google pour "javascript + form + post".
0

Vous peut avoir une forme avec plus d'un bouton d'envoi partageant le même nom, votre hypothèse initiale était erronée.

Le code suivant est parfaitement valide, et la valeur du cliqué le bouton d'envoi sera passé avec son nom:

<form action="TestZone.html" method="GET"> 
<input type="submit" name="MySubmit" value="First" /><input type="submit" name="MySubmit" value="Second" /><input type="submit" name="MySubmit" value="Third" /> 
</form> 

Vous ne pouvez pas avoir plusieurs éléments avec la même ID, mais même nom pour les éléments de formulaire est commun et valide.

0

Salut, j'ai résolu mes questions en suivant la solution de Brad. pour obtenir le var POST, je l'ai fait:

//Check if Remove btn is clicked 
    $isClickRemove = false; 
    $cid = ""; 
    foreach($_POST as $k=>$v){ 
    $pos = strpos($k,"btnremovecart_"); 

    if($pos !== false){ 
     $pos2 = strpos($k,"_"); //2nd pos to get cartID 
     $cid = substr($k,$pos2+1); 
     $isClickRemove = true; 
     break; 
    } 
    } 

mon html ressemble à ceci:

<input type="submit" id="btnremovecart_11" name="btnremovecart_11" value="Remove" /> 

espérons que cette aide =)

Questions connexes