Page 1 sur 1
Récupérer la valeur d'une checkbox en dehors d'un formulaire
Posté : 26 juil. 2017, 10:01
par street51
Bonjour,
J'ai un petit souci avec l'attribut "form" introduit par HTML5.
J'ai plusieurs formulaires sur une même page, et je souhaite avoir en dehors de ces formulaires une checkbox qui puisse être récupérée lors de la validation d'un des formulaires. J'ai donc attribué un id aux formulaires (chaque formulaire a le même id : "hebdo") :
Code : Tout sélectionner
<form id="hebdo" action="creation_hebdo.php" method="post">
<select name="id_med" onchange="this.form.submit();">
<option></option>
</select>
<input type="hidden" name="type" value ="consultations_matin">
</form>
Et, avant ces formulaires, j'ai inséré une checkbox comme ceci :
Code : Tout sélectionner
<input type="checkbox" name="info" value="oui" form="hebdo">
Au moment de validation, $_POST['info'] ne renvoie aucune donnée, que la case soit cochée ou non.
Une idée d'où peut venir le problème ?
Merci !

Re: Récupérer la valeur d'une checkbox en dehors d'un formulaire
Posté : 26 juil. 2017, 10:44
par @rthur
Bonjour,
Cela est normal vu que seuls les éléments contenus dans un <form> seront envoyés quand on soumet le formulaire concerné.
Si tu mets un élément en dehors du formulaire alors il ne sera pas traité.
3 solutions :
- soit tu rajoute ta checkbox dans ton formulaire (mais j'imagine que c'est compliqué/pas possible dans l'interface que tu veux réaliser)
- soit tu fais un <form> plus grand qui englobe ta checkbox.
- soit tu utilise du javascript qui à chaque changement de ta checkbox va répliquer le changement dans un input hidden qui sera lui dans ton formulaire à envoyer.
Important, même si c'est rare, certains utilisateurs n'ont pas le javascript activé, donc il faut que tu gère ce cas là
Re: Récupérer la valeur d'une checkbox en dehors d'un formulaire
Posté : 26 juil. 2017, 10:58
par street51
Merci pour la réponse rapide.
Je pensais justement que l'attribut "form" permettait de récupérer un champ situé en dehors d'un formulaire.
C'est compliqué d'ajouter la checkbox dans chaque formulaire (qui correspond à une case de tableau, en fait). Faire un <form> plus grand est impossible aussi.
Par contre, l'idée du Javascript peut fonctionner, en effet ! Je vais voir ce qu'il est possible de faire, car je ne maîtrise pas trop le JS. Etant donné que je suis le seul à utiliser ce formulaire, ce n'est pas un souci.
Re: Récupérer la valeur d'une checkbox en dehors d'un formulaire
Posté : 26 juil. 2017, 15:09
par @rthur
Pardon effectivement, je ne connaissais pas l'attribut form sur les input... et d'après la doc il est sensé fonctionner comme tu l'indiques...
Je vais faire des tests pour voir ce qu'il en est.
Re: Récupérer la valeur d'une checkbox en dehors d'un formulaire
Posté : 26 juil. 2017, 15:16
par @rthur
Chez moi ça fonctionne correctement, voici mon code complet :
<?php
if ($_POST) {
var_dump($_POST);
echo "<hr />";
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Test formulaire PHPfrance</title>
</head>
<body>
<form method="POST" id="form1">
<h2>Dans form</h2>
<label for="champ_texte1">Texte 1 : </label>
<input type="text" id="champ_texte1" name="champ_texte1" />
<button type="submit">Envoyer</button>
</form>
<hr />
<h2>Hors form</h2>
<label for="champ_texte1">info : </label>
<input type="checkbox" name="info" value="oui" form="form1">
</body>
</html>
A noter que si la case n'est pas cochée alors c'est normal que tu ne vois pas le champ info, c'est le fonctionnement classique des checkbox
Re: Récupérer la valeur d'une checkbox en dehors d'un formulaire
Posté : 26 juil. 2017, 16:18
par street51
Après une nouvelle tentative, cela fonctionne, mais uniquement pour le premier formulaire. Tous les autres ont en effet le même id, et au moment de leur validation, la valeur de la checkbox n'est pas récupérée.
Re: Récupérer la valeur d'une checkbox en dehors d'un formulaire
Posté : 26 juil. 2017, 17:27
par @rthur
C'est interdit d'avoir le même id pour plusieurs éléments, donc je crois qu'il va falloir que tu te penches sur la solution en javascript.