2 boutons submits dans le même formulaire

2 boutons submits dans le même formulaire - PHP - Programmation

Marsh Posté le 14-09-2004 à 11:39:19    

salut a tous !
 
G quelques difficultés pour creer un bouton "supprimer"dans un formulaire qui contient deja un bouton submit, qui lui, me permet de recalculer le prix total d'un caddie.
en fait ce bouton"supprimer" doit me permettre de supprimer chaque article dans le caddie.
voici le code de mon formulaire actuellement :
 

Code :
  1. echo'<form action = caddy.php method = post name= form_caddy>';
  2. //bouton pour recalculer le prix total de mon caddie  
  3. echo'<A HREF="javascript:document.form_caddy.submit()">Recalculer</A>;';
  4. echo'</form>';


 
la ca marche ...
et en fait il faudrait qu'a l'interieur de ce formulaire G un bouton du genre :
 

Code :
  1. //bouton supprimer article  
  2. echo'<input type =hidden name = invisible value = 1>';
  3. if(isset($_POST['invisible']) && $_POST['invisible']==1)
  4. unset($_SESSION['caddy'][$ref]);
  5. echo'<A HREF="javascript:document.form_caddy.submit()">Supprimer</A>  ';


 
 
seulement, ca me fait deux boutons submits ...resultat ya des confusions partout avec les actions.
j'ai essayé plusieurs choses mais il ya toujours C confusion entre les 2 boutons
 
pour info j'ai un champ quantité :
 

Code :
  1. echo "quantité :<input type = text  maxlength=2 class= champs_texte name = \"$ref\" value = \"$quantite\" size = 1 align='right'><br>";


 
 
 
qui, si il est a 0 me supprime bien mon article
 

Code :
  1. foreach ($HTTP_SESSION_VARS['caddy'] as $ref => $quantite)
  2.     {
  3.       if($HTTP_POST_VARS[$ref]=='0')
  4.         unset($HTTP_SESSION_VARS['caddy'][$ref]);
  5.     }


 
 
voila j'espere avoir été clair
merci de bien vouloir m'aider .... je suis dans la detresse la + complete
 
attentio


Message édité par attentio le 24-03-2005 à 21:16:15

---------------
L'ordinateur a de la mémoire mais aucun souvenir ...
Reply

Marsh Posté le 14-09-2004 à 11:39:19   

Reply

Marsh Posté le 14-09-2004 à 11:59:18    

attentio a écrit :


seulement, ca me fait deux boutons submits ...resultat ya des confusions partout avec les actions.
j'ai essayé plusieurs choses mais il ya toujours C confusion entre les 2 boutons


 
C'est normal. Je vois 2 solutions :
- soit tu fais des "vrai" boutons submit :
  <input type="submit" value="Supprimer" name="suppr" />
  <input type="submit" value="Recalculer" name="recalc" />
et tu testes ensuite dans le PHP si tu as $_POST['suppr'] ou $_POST['recalc']
 
- soit tu passes par le javascript. Tu fais un champ caché qui sera mis à jour selon que l'utilisateur clique sur supprimer ou recalculer :
  <input type="hidden" name="action" value="recalc" />
  <a href="javascript:suppr();"> Supprimer </a>
  <a href="javascript:recalc();"> Recalc </a>
 
Avec les fonctions javascript qui seraient qqchose dans le genre (à vérifier la syntaxe, je suis pas un pro du js) :
function suppr(){
  Document.form_caddy.action.value = "suppr";
  Document.form_caddy.submit();
}
 
function recalc(){
  Document.form_caddy.action.value = "recalc";
  Document.form_caddy.submit();
}
 
:gratgrat: "Document.form_caddy.action.value" ne doit sûrement pas marcher  :D  


Message édité par pascal_ le 14-09-2004 à 12:00:38
Reply

Marsh Posté le 14-09-2004 à 12:15:28    

ok je vais essayer tout ca :gratgrat:

Reply

Marsh Posté le 14-09-2004 à 17:05:15    

Ou un peu plus simple mais dans le même esprit :
 
tu fais un champ caché nommé action :
<INPUT TYPE="HIDDEN" NAME="action" VALUE="">
 
et sur tes boutons submit, tes images ou autre objet de validation, tu modifies la valeur de action qui est supposé être dans la forme "form" :
 
<INPUT TYPE="SUBMIT" NAME="submit" VALUE="Supprimer" onClick="document.form.action.value='suppr';">

Reply

Marsh Posté le 14-09-2004 à 18:36:52    

pascal_ a écrit :

C'est normal. Je vois 2 solutions :
- soit tu fais des "vrai" boutons submit :
 <input type="submit" value="Supprimer" name="suppr" />
  <input type="submit" value="Recalculer" name="recalc" />
et tu testes ensuite dans le PHP si tu as $_POST['suppr'] ou $_POST['recalc']

 
- soit tu passes par le javascript. Tu fais un champ caché qui sera mis à jour selon que l'utilisateur clique sur supprimer ou recalculer :
  <input type="hidden" name="action" value="recalc" />
  <a href="javascript:suppr();"> Supprimer </a>
  <a href="javascript:recalc();"> Recalc </a>
 
Avec les fonctions javascript qui seraient qqchose dans le genre (à vérifier la syntaxe, je suis pas un pro du js) :
function suppr(){
  Document.form_caddy.action.value = "suppr";
  Document.form_caddy.submit();
}
 
function recalc(){
  Document.form_caddy.action.value = "recalc";
  Document.form_caddy.submit();
}
 
:gratgrat: "Document.form_caddy.action.value" ne doit sûrement pas marcher  :D


 
Et moi qu'ait toujours cru qu'on pouvait pas avoir 2 boutons submit avec un action "différent", c'etait si simple que je n'y ai pas pensé :wahoo:

Reply

Marsh Posté le 15-09-2004 à 15:55:48    

aspegic500mg a écrit :

Et moi qu'ait toujours cru qu'on pouvait pas avoir 2 boutons submit avec un action "différent", c'etait si simple que je n'y ai pas pensé :wahoo:


perso j'en gere parfois plus de 2 avec des tableaux !(boutons modifier/supprimer en colonne)
je vois pas ou est la difficulté
de préférence faites le en PHP, le javascript est à bannir pour ce genre de chose

Reply

Marsh Posté le 15-09-2004 à 21:18:16    

spike a écrit :


de préférence faites le en PHP, le javascript est à bannir pour ce genre de chose


Je ne serais pas aussi catégorique.  [:aline2003]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 15-09-2004 à 23:09:22    

facile ... facile?
mais est ce que tu pourrais me dire comment tu ferais les submits tout en php /mon code
 
ATTENTIO
debutant malgré lui

Reply

Marsh Posté le 15-09-2004 à 23:10:20    

sircam a écrit :

Je ne serais pas aussi catégorique.  [:aline2003]


 
On ne base pas des fonctionnalités nécessaires d'un site sur un truc désactivable sur le client...

Reply

Marsh Posté le 18-09-2004 à 00:27:52    

naceroth a écrit :

On ne base pas des fonctionnalités nécessaires d'un site sur un truc désactivable sur le client...


 
L'idéal étant de faire une vérif en javascript ET une vérif en php, ca allège le serveur (faut en avoir besoin), ca allège le temps d'attente pour le visiteur (mais si page légère et/ou visiteur en adsl, pas besoin), mais c'est + de temps à coder.

Reply

Marsh Posté le 18-09-2004 à 00:27:52   

Reply

Marsh Posté le 18-09-2004 à 00:36:04    

Oui oui, on l'a déjà dit et redit et ce n'était nullement mon propos :)
 
Je précisais juste qu'il ne fallait pas baser une verif sur le seul jscript. Chez moi, ton exemple plus haut en jscript planterait par exemple (et pas parce que le .value est de trop hein :D))

Reply

Marsh Posté le 18-09-2004 à 14:00:49    

j'ai fais ca en php mais ca marcha pas !!!
si quelqu'un pouvait m'aider
 

Code :
  1. //index.php?page=caddy&new=3  
  2. echo'<form method = post action = index.php?page=caddy >';
  3. foreach ($caddy as $ref => $quantite)
  4. //les articles de mon caddie  
  5. {
  6. if (!empty($_POST)) {
  7. if (isset($_POST['supp'])) {
  8. unset($_SESSION['caddy'][$ref]);
  9. }
  10. }
  11. echo'<input type=submit value=supprimer name=supp>';
  12. }
  13. //mon bouton recalculer qui actualise ma page
  14. echo '<input type=submit name=recal value=recalculer>';
  15. </form>


il ya toujours des confusions dans mes boutons... je ne trouve pas la solution pour bien rendre distinct ces deux submits
 
merci infiniment

Reply

Marsh Posté le 18-09-2004 à 17:00:03    

attentio a écrit :

j'ai fais ca en php mais ca marcha pas !!!
...
il ya toujours des confusions dans mes boutons... je ne trouve pas la solution pour bien rendre distinct ces deux submits


 
Bon, déjà, respecte les quelques réglesde l'html (juste celle là, je demande même pas l'xhtml) donc les attributs entre " :)
 
Ensuite, pourquoi pas utiliser un champ hidden plutôt qu'un index.php?page=caddy comme action, ça t'éviterait devoir jongler entre $_GET et $_POST dans le traitement ?
 
Et pour finir, dans la version php, c'est pas dans le forumulaire que tu dois faire la disctinction entre les deux submits, mais sur la page de traitement :)

Reply

Marsh Posté le 20-09-2004 à 11:48:29    

mais comment kon fait avec les hidden !!!!

Reply

Marsh Posté le 20-09-2004 à 17:30:22    

(dommage que je gagne pas un euro chaque fois qu'on pose une question sur les champs hidden :D)
 
ton formulaire :

Code :
  1. <form action="index.php" action="post">
  2. <input type="hidden" name="page" value="caddy" />
  3. <input type="text" name="kkwet" value="" />
  4. <input type="submit" value="action1" name="sender" />
  5. <input type="submit" value="action2" name="sender" />
  6. </form>


 
ton fichier index.php

Code :
  1. $page = $_POST['page'];
  2. switch ($_POST['sender']) {
  3. case 'action1':
  4. // Traitement action 1
  5. case 'action2':
  6. // Traitement action 2
  7. default :
  8. // Traitement par defaut
  9. }


 
exemple basique sans vérifications particulières

Reply

Marsh Posté le 21-09-2004 à 01:10:39    

slt!
juste une ptite question de debutant !!!!
alors a koi ressemblerai mon code si:
- ACTION1 reactualise simplement la page index.php
- et que ACTION 2 =  unset($_SESSION['caddy'][$ref]);
 
est ce que ceci suffit :

Code :
  1. case 'action1':
  2. //je ne mets rien comment action est dans la balise form
  3. case 'action2':
  4. unset($_SESSION['caddy'][$ref]);


 
ou je suis completement a coté de la plaque
 
merci infiniment de ton aide
 
 

Reply

Marsh Posté le 21-09-2004 à 01:57:45    

A mon avis, si tu n'interviens pas dans le cas où le bouton renvoit 'action1' et que tu n'as pas de traitement par défaut,  tu peux simplifier en
 

Code :
  1. if ($_POST['sender'] == 'action2') {
  2. unset($_SESSION['caddy'][$ref]);
  3. }

Reply

Marsh Posté le 21-09-2004 à 11:23:24    

z'arrive pas  ...   z'arrive pas !!!!!!!! de l'aide !!!!
 
Voila ce qui ce passe quand j'arrive sur ma page, j'ai un Notice: Undefined index sur sender mais quand je clique sur supprimer l'erreur ne s'inscrit plus mais rien ne s'est passé.mais si je clique une deuxieme fois alors mon article va se supprimer.
mais si dans mon caddy G 3 articles il va me supprimer les trois articles ... est ce que ca vient de mon unset qui n'est pas bon ou bien du bouton supprimer passé dans la boucle foreach

Code :
  1. echo'<form method = post name=form_caddy action = index.php>';
  2.   foreach ($caddy as $ref => $quantite)
  3.   {
  4. //affichage des articles dans le caddy
  5. //qui ont chacun un bouton supprimer
  6.    if ($_POST['sender'] == 'supprimer') {
  7. unset($HTTP_SESSION_VARS['caddy'][$ref]);
  8. }
  9. echo'<input type="hidden" name="page" value="caddy">';
  10. echo'<input type="submit" value="supprimer" name="supprimer" >';
  11. }
  12. //affichage du bouton qui permet de recalculer le caddie
  13. echo'<A HREF="javascript:document.form_caddy.submit()">recalculer</A>';


 
merci encore de ton aide
 
attentio
 
ps :un point positif :plus de confusion entre le bouton recalculer et supprimer

Reply

Marsh Posté le 21-09-2004 à 11:26:53    

houps, erreur de frappe

Code :
  1. echo'<input type="submit" value="supprimer" name="sender" >';

Reply

Marsh Posté le 21-09-2004 à 18:36:55    

Bah oui, forcément, si tu renommes les boutons, t'étonnes pas que mon exemple marche pas :sarcastic:
 
(ce qui est marrant, c'est que même après correction, il suit pas les normes et intègre du jscript pour faire un truc idiot, y a des fois je me demande pourquoi on aide :D)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed