[PHP] Plusieurs boutons, un seul formulaire !

Résolu/Fermé
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 - 3 oct. 2006 à 09:47
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 - 4 oct. 2006 à 11:15
Bonjour,

Je crée à l'aide de deux boucles for un tableau contenant les valeurs des 10 premières instances d'une des tables de ma base de données ...

En fin de chaque ligne, j'insère un bouton où type='submit'.

Mon formulaire est en method='post'.

Quand je clique sur un bouton et que ça m'ouvre le formulaire que je lui demande. Ensuite, je veux récupérer le nom du bouton cliqué (il correspond au numéro de l'instance que je veux afficher). Je regarde donc la matrice $_POST, mais elle est vide !! Je ne peux pas savoir quel bouton a été cliqué et donc, JE SUIS BLOQUEE !!

Si quelqu'un peut m'apporter de l'aide, jele remercie d'avance de me débloquer !
A voir également:

7 réponses

oberion Messages postés 1253 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 29 septembre 2007 248
4 oct. 2006 à 10:55
Hello,
Pas très clean tout ca. :)

Dans tes formulaires, tu ajoutes une ligne cachée:
echo "<form name='form".$i."' action='modifier.php' method='post'>";
echo "<input type=\"hidden\" value=\"".$i."\" name=\"mon_champ_cache\">";
echo "<button type='submit' action='modifier.php' name=\"bouton\" value=".$row_array[$i]."'>";
echo "<img src='../images/modifier.png'>";
echo "</button>";
echo "</form>";

Dans ta page de récuperation:

echo "Ceci est le formulaire numero: ".$_POST['mon_champ_cache'];

Voili voilou ma bonne dame.
9
oberion Messages postés 1253 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 29 septembre 2007 248
3 oct. 2006 à 11:06
Bonjour Elsa,

Pourquoi ne pas faire un formulaire par ligne ?
4
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 14
3 oct. 2006 à 11:20
Ben en fait on m'avait déconseillé ça ... mais comme je ne suis pas objective sur les conseils que je reçois vu que je suis novice, je les suis !!

Et sinon, j'ai déjà vu ça mais je ne sais pas le faire et surtout à quoi ça sert : une page avec une url du style http://www.exemple.exemple.php?id=3

Bref, peut-être que ce serait ma solution, mais que je ne le sais pas encore !

Merci ;-)
4
oberion Messages postés 1253 Date d'inscription mardi 26 septembre 2006 Statut Membre Dernière intervention 29 septembre 2007 248
3 oct. 2006 à 14:49
Il y a plusieurs manières de faire effectivement.
Personnellement, je me contenterais de faire plusieurs formulaires, c'est plus simple à faire, et à maintenir.
Maintenant, on peut utiliser aussi du javascript pour gerer l'action des boutons (évenement onClick), mais personnellement, je ne trouve pas cela très propre.

Pour ce qui est de l'id dans l'url, il va falloir potasser tes cours de Web ! :)

Il existe plusieurs manieres de passer des variables de page en page:
- par l'url (on appelle cela GET)
- par formulaire (POST par défaut, mais on peut passer aussi en GET)
- par session.

Ce que tu me montres dans ton exemple est un passage de valeur par URL que tu récupereras dans ton script sous la forme:
$id = $_GET['id'];
ou $id prend, dans ton exemple, la valeur de 3.

3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 14
4 oct. 2006 à 10:12
Bonjour ...

Je suis désespérée ... ça ne marche pas !! J'ai fait un formulaire par ligne, mes boutons portent tous un nom différent, ont des valeurs qui leur sont propres ...

Je vous montre mon code, peut-être que c'est tout bête et que ce sera évident pour vous ...

J'ai deux fichiers : consulter.php et modifier.php. Dans consulter.php, on a un tableau, chaque ligne correspond à un enregistrement dans ma base de données et en fin de chacune d'elles, un bouton sur lequel on doit cliquer pour modifier certaines informations de l'enregistrement. Dans modifier.php, je récupére, ou plutôt je voudrais bienn récupérer, l'id de l'enregistrement (c'est la value de mes boutons) se trouvant sur la ligne du bouton cliqué.

Je veux pouvoir récupérer la valeur du bouton mais c'est impossible ou du moins je n'y arrive pas !

Voilà ce que j'ai dans consulter.php :
echo"<form name='form".$i."' action='modifier.php' method='post'>";
echo"<button type='submit' action='modifier.php' name=bouton".$i." value=".$row_array[$i]."'>";
echo"<img src='../images/modifier.png'>";
echo"</button>";
echo("</form>");

A chaque tour de boucle, je crée un formulaire. Je les name tous différemment : form1, form2, form3 ... et dans chacun de ces formulaires se trouve le bouton portant le même indicie : bouton1 dans form1, bouton2 dans form2, bouton3 dans form3 ...

Et maintenant ce que j'ai dans consulter.php :
for ($i=0;$i<10;$i++){
	if (isset($_POST["bouton'.$i.'"])){
		echo"yes le bouton '.$i.' !!";
	}
	else{
		echo"non le bouton !!";
	}
}


Aidez-moi s'il vous plait, je ne sais vraiment pas quoi faire !!

Merci d'avance ...
3
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 14
3 oct. 2006 à 14:58
Mes cours de WEB !? Hein quoi ? Ca existe !? J'en n'ai jamais eu et j'ai pourtant un stage en PHP/MySQL ... ça m'apprendra !

Maintenant que je sais que je peux faire plusieurs formulaires dans une page alors je vais pouvoir me faire plaisir je pense !

Merci pour ce conseil ...

L'id dans l'url je trouvais ça sympa mais juste pour le style, si ça ne m'apporte rien de plus, je ne pense pas le faire ... peut-être plus tard !

Encore merci !!
2
elsadelatoundra Messages postés 126 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 3 juillet 2008 14
4 oct. 2006 à 11:15
FOR-MI-DA-BLE
Hey, mais ça marche !! En même temps, je ne suis pas trop surprise, 'fallait juste y penser !! Alors un grand merci à toi oberion d'y avoir pensé pour moi ;-)
0