Récupérer la valeur d'une checkbox en dehors d'un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Récupérer la valeur d'une checkbox en dehors d'un formulaire

Re: Récupérer la valeur d'une checkbox en dehors d'un formulaire

par @rthur » 26 juil. 2017, 17:27

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.

Re: Récupérer la valeur d'une checkbox en dehors d'un formulaire

par street51 » 26 juil. 2017, 16:18

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

par @rthur » 26 juil. 2017, 15:16

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

par @rthur » 26 juil. 2017, 15:09

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

par street51 » 26 juil. 2017, 10:58

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

par @rthur » 26 juil. 2017, 10:44

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à

Récupérer la valeur d'une checkbox en dehors d'un formulaire

par street51 » 26 juil. 2017, 10:01

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 ! :wink: