Formulaire avec plusieurs submit -> Récupération

Formulaire avec plusieurs submit -> Récupération - PHP - Programmation

Marsh Posté le 29-03-2006 à 10:32:09    

Bonjour.
Dans mon application je réalise un tableau.
Il est constitué comme ceci
 

Code :
  1. <table>
  2. <tr>
  3. <td>info1 </td>
  4. <td>info2 </td>
  5. bouton submit
  6. </tr>
  7. <tr>
  8. <td>info3 </td>
  9. <td>info4 </td>
  10. bouton submit
  11. </tr>
  12. </table>


 
Voici la construction de mes boutons submit

Code :
  1. <input name="action[valider]" type="submit" value="Valider" />


 

Code :
  1. <input name="action[sous_valider]" type="submit" value="Valider" />


 
Gràce a ce code je peux différencier l'action à éxécuter par rapport au bouton cliquer
 
Cependant quand je clic sur un des deux boutons dans mon lien (j'ai mis un GET pour bien voir) il récupère les deux lignes à chaque fois.
 
Cela crée un problème car quand je remplie la première ligne (<tr> ) il envoie aussi les données de la seconde ligne et donc en resultat j'aurais que des resultats nuls car il va prendre les resultats de la deuxième ligne.
 
COmment s'y prendre?
 
Merci

Reply

Marsh Posté le 29-03-2006 à 10:32:09   

Reply

Marsh Posté le 29-03-2006 à 10:47:10    

Sans le code c'est pas facile...

Reply

Marsh Posté le 29-03-2006 à 10:53:31    

Ma form est comme ceci.

Code :
  1. <form  action="inserer.php" method="GET">


 
Dans insérer.php.
 

Code :
  1. if (isset($_GET['action'])) {
  2. reset($_GET['action']);
  3. list($action,$valeur) = each($_GET['action']);
  4. switch($action) {
  5. case 'valider' :
  6. echo $id_projet,$id_utilisateur,$date,$ligne,$mataprem,$nb_heure,$nature,$code_projet;
  7. break;
  8. case 'sous_valider' :
  9. echo $id_projet,$id_utilisateur,$date,$ligne,$mataprem,$nb_heure,$nature,$code_projet;
  10. // modifier ce qu'il faut pour réafficher le formulaire avec une ligne en plus
  11. break;
  12. }
  13. }


 
Comme tu le vois je peux différencier l'action à faire selon le bouton cliqué.
 
Pour le moment j'affiche simplement les infos.
 
Quand je clic sur mon premeir bouton cela renvoie ceci
 

Code :
  1. /inserer.php?date=27-03-2006&jour=lundi&mataprem=matin&code=1&nb_heure=5&nature=Developpement&action%5Bvalider%5D=Valider&ligne=0&code=1&nb_heure=0&nature=DT


 
Les deux lignes sont donc passées dans l'url et donc quand je veux les afficher il prends les dernières infos qui correspondent à la seconde ligne qui n'a pas été remplie donc cela renvoie des resultats faux.
 
Par contre si je remplie la deuxième ligne ca marchote car il va chercher la deuxième partie qui cette fois sera bien remplie
 
 

Code :
  1. /inserer.php?date=27-03-2006&jour=lundi&mataprem=matin&code=1&nb_heure=5&nature=Developpement&ligne=0&code=1&nb_heure=4.5&nature=Developpement&action%5Bsous_valider%5D=Valider


 
 
Merci ^^

Reply

Marsh Posté le 29-03-2006 à 11:56:15    

Premiere remarque, ce serait plus "logique" d'envoyer tes valeurs en POST
 
Sinon, sans rentrer dans les details tu peux faire les choses de 2 facons differentes pour regler ton pb :
 
- tu places tes champs dans des formulaires differents. Comme ca lorsque tu postes ta page tu n'envoies que les valeurs des champs d'une "ligne"
 
- tu donnes aux champs de tes differentes ligne des noms diffrents ce qui te permet de les diffrencier apres ton post.

Reply

Marsh Posté le 29-03-2006 à 17:03:21    

Ok merci.
Y a pas d'autre solution.
Je vais donc opter pour la première.
Sinon pour le POST je suis d'accord mais en phase de développement je préfère au moins je vois tout ce qui se apsse dans l'URL

Reply

Marsh Posté le 29-03-2006 à 17:34:15    

masseur a écrit :


Sinon pour le POST je suis d'accord mais en phase de développement je préfère au moins je vois tout ce qui se apsse dans l'URL


 
Tu peux toujours faire un print_r($_POST); en debut de page ou alors utiliser cette petite extension FireFox :
 
http://urlparams.blogwart.com/share/index.php

Reply

Marsh Posté le 29-03-2006 à 21:37:56    

Merci bien ca peux aider.

Reply

Sujets relatifs:

Leave a Replay

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