Bouton submit

Signaler
Messages postés
3
Date d'inscription
jeudi 13 janvier 2005
Statut
Membre
Dernière intervention
27 février 2005
-
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
-
J'ai un formulaire avec plusieurs boutons. Je voudrais savoir s'il est possible de passer en paramètre (méthode POST) le nom du bouton sur lequel on a cliqué pour poster le formulaire uniquement en PHP.


voici un bout de mon script PHP :





<?php
mysql_select_db($Base_Nom,$Base_connection);
$Quest = mysql_query($MaRequete, $Base_connection) or die (mysql_error());
$MonTableau= mysql_fetch_assoc($Quest);


j'ai un formulaire avec plusieurs boutons. Je voudrais savoir s'il est possible de passer en paramètre (méthode POST) le nom du bouton sur lequel on a cliqué pour poster le formulaire uniquement en PHP.


voici un bout de mon script PHP :


$i=1;
$max=6;
for($i;$i<=$max;$i++)
{
if(isset($_POST[$MonTableau['quest_numero'].$i]))
{
$Recuperation= $_POST[$MonTableau['quest_numero'].$i];
echo $Recuperation;
}
}
?>



<html>


<head>
</head>




<form name="bib" action="" method="POST">


<?php


do
{
echo $MonTableau['quest_libel']. "
";
}
while($MonTableau= mysql_fetch_assoc($Quest));
?>


Merci d'avance

7 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



si tu veux récupérer le nom du bouton que l'internaute a cliqué, tu peux faire ceci :







lorsque l'internaute enverra le formulaire tu auras un champ $_POST['bouton1'] de valeur 'Envoyer'



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
3
Date d'inscription
jeudi 13 janvier 2005
Statut
Membre
Dernière intervention
27 février 2005

Tous dabords merci de m'avoir répondu, ça me fait très plaisir.


Alors voila ce que je désire faire.


En fait dans une étape ultérieur, je saisie des question. Ceux-ci sont numeroté de façon unique. Elle contienne également un libel qui est l'énnoncé de la question, et enfin la réponse a celle-ci.


Maintenant, je voudrait utiliser ces questions, mais de façon dynamique.
Donc je fait une requete qui utilise la table qui contient tous les enegistrement cocernant les questions. Et je les met dans un tableau.


Maintenant je crée une boucle qui va afficher tous les libels. Puis toujours dans cette boucle juste après les libels, je place un bouton submit. Il peut donc y avoir 6 questions avec 6 bouton submit, voire plus...
C'est maintenant que vient le probleme:
Je souhaite que ce nom soit dynamique, donc j'utilise mon tableau et utilise les numero.
Ainsi chaque bouton est unique.
Jusque la j'arrive la faire. En regardant le source de la page j'obtient bien tous cela.


Le but est maintenant de récuperer le bouton submit, mais seulement le nom, du submit, car il est unique.


Ensuite je n'aurait plus qu'a utiliser cela dans une requete avec un where pour afficher la réponse qui correspond a la question.


J'espère avoir été un pas trop confu.


Donc mon seul probleme est de récuperer le nom du submit.
Après de très nombreuses tentatives, je ne récupère toujours que le premier enregistrement.
J'ai également utiliser dèriere le submit un hidden, mais cela ne marche toujours pas.


Je vais mieux commanter mon script:


<?php
mysql_select_db($Base_Nom,$Base_connection); //j'utlise un autre fichier qui contient mes connections que j'utilise avec require_once
$Quest = mysql_query($MaRequete, $Base_connection) or die (mysql_error());
$MonTableau= mysql_fetch_assoc($Quest);//Je stocke ma requete dans un tableau.


//--------------Cette partie est utiliser que quand je clique sur le submit.


$i=1;
$max=6;//nombre de question maxi
for($i;$i<=$max;$i++)
{
if(isset($_POST[$MonTableau['quest_numero'].$i]))
{
$Recuperation= $_POST[$MonTableau['quest_numero'].$i];
echo $Recuperation;//Ici donc cela devrait afficher le nom du bouton, different pour chaque submit.
}
}
?>
//-----------------------------------------
<html>


<head>
</head>




<form name="bib" action="" method="POST">


<?php


do //Boucle pour afficher le libel de la question, le bouton submit et le hidden. Ainsi j'affiche en dynamique mes questions.
Il faut donc que je récupère le submit ou le hidden.
J'obtient un résultat, mais cela n'affiche que le premier enregistrement. Il faudrait par exemple si le nom du submit est deux que je récupère et affiche 2, pour le nom du submit si c'est 3...
{
echo $MonTableau['quest_libel']. "
";
}
while($MonTableau= mysql_fetch_assoc($Quest));
?>

Voila, si vous pouvez m'aider, car je bloque depuis 3 jour dessus.


Merci d'avance.
Et merci d'avoir prit la peine de vouloir m'aider.
Messages postés
3
Date d'inscription
jeudi 13 janvier 2005
Statut
Membre
Dernière intervention
27 février 2005

C'est vrai que c'est un peu trop long mon explication, donc je vais condencer.
Donc pour résumer:


J'utilise et stocke des informations sur des questions par le biais d'une requete et d'un mysql_fetch_assoc.
Ensuite je cré une boucle qui affiche ces information, notamment le libel de la question. Toujours dans cette boucle et donc juste après ce libel je place un bouton submit. La particlarité de ce bouton submit est qu'il n'a pas un nom écris en "dur" mais en dynamique. C'est a dire qu'il fait référence a la base de donnée. Ce sont des chiffre donc unique pour bien les différencier.
Al'affichage tous vas bien, j'ai tous mes libel, et a chaque fois deriere un bouton submit ayant un nom différent.


Donc le hic:
Et bien quand je clique sur le bouton, il faudrait que je récupère ce fameux nom du bouton. Et non son value qui n'a que très peu d'inportance.
Si je pouvais le récupérer cela me servirais ensuite a faire une requete, dont ce nombre serais utilisé dans une requete avec un where pour afficher les réponse a cette questions.


Donc j'ai créé dans la récupération en method POST une boucle for, avec incrémentation, mais rien n'y fait. J'arrive tout au plus a récupérer le numero du premier bouton, en fait du premier enregistrement si ces bouton son très par un order by.


Je sais mon projet est un peu bizare, mais il me permet de n'écrire en fait très peu en "dur" dans le programme est donc de laisser la plus grande fléxibilité, quand au nombre de question de réponse.....


Voila, merci d'avance
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Bonjour,

la seul facon que je connais c'est le foreach :

<?php

foreach($_POST as $key=>$val) {

$name = array('nom1', 'nom2', 'nom3', '...');

if(in_array($key, $name)) {

$name_submit = $key;

}

}

?>



<hr>

<object id="animation" style="width: 550px; height: 75px;" codebase="http://active.macromedia.com/flash4/cabs/swflash.cab#version=6,0,47,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"></object>
Messages postés
363
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 janvier 2007
1
J'ai pas très bien compris ton code JoJo738 (je comprend jamais rien au "foreach($_POST as key=>$val)" ).



Ca te dérangerait de m'explique à quoi sert ton bout de code s'il-te-plaît? Parce que j'ai le même problème que guguin.



Merci
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



la variable $name est inutile dans ton foreach, place-là au dessus pour
éviter de la déclarer à chaque boucle et optimiser ton script.



<?php


$name = array('nom1', 'nom2', 'nom3', '...');


foreach($_POST as $key=>$val) {

if(in_array($key, $name)) {

$name_submit = $key;

}

}

?>

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Oups, c'était une mauvaise manipulation

<hr style="width: 100%; height: 2px;">Si ma reponse te convient, merci de l'accepter !