Page 1 sur 1

CheckBox PHP

Posté : 09 avr. 2015, 20:49
par Hellowz
Bonsoir tout le monde,
Je souhaite faire un truc simple, mais je ne sais pas pourquoi... je galère :D

J'ai une checkbox comme y s'en suite :

Code : Tout sélectionner

<input type="checkbox" name="valeur" id=valeur" class="css-checkbox" checked="checked"/>
Je voudrais que si la case est cochée, la valeur soit de 1, sinon de 0.
J'envoie tout ça en bdd.

Merci de votre aide,
Hellowz

Re: CheckBox PHP

Posté : 09 avr. 2015, 21:38
par Saian
Salut Hellowz,

En fait le principe de la case à cocher est que si elle est cochée le champ est transmis avec sa valeur et si elle n'est pas cochée le champ n'est pas transmis.

Re: CheckBox PHP

Posté : 09 avr. 2015, 23:06
par Hellowz
Pourtant ça ne marche pas.
Quelqu'un aurait un exemple de code ou autres :)

Re: CheckBox PHP

Posté : 09 avr. 2015, 23:10
par tof73
qu'est-ce qui ne marche pas ?
isset($_POST['valeur']) va marcher si c'est bien une méthode post

Re: CheckBox PHP

Posté : 09 avr. 2015, 23:31
par Hellowz
Je vais essayer de vous expliquer plus en détails.

J'ai un formulaire avec un champs "Checkbox".
Il doit retourner 0 ou 1. Le problème, c'est que cliqué ou pas, il me retourne "on" tout le temps.

Aussi, pour l'insertion je passe par du js

Code : Tout sélectionner

<script> $(document).ready( function () { $("#forma").submit( function() { $.ajax({ type: "POST", url: "send.php", data: { lastname: $('#lastname').val(), firstname: $('#firstname').val(), optin : $('#optin').val(), }, success: function(msg) { if(msg == 'Validation') { $("#Ajout").html(msg); } else { $("#Ajout").html(msg); } } }); return false; }); }); </script>
Puis ensuite, j'utilise un autre fichier php pour le transfert. ( Ce qui n'est pas le problème )
Et voila ma ligne pour la checkbox

Code : Tout sélectionner

<input type="checkbox" name="optin" id="optin" />
Merci,
Hellowz

Re: CheckBox PHP

Posté : 09 avr. 2015, 23:45
par tof73
$('#optin').attr('checked');
pour recuperer l'etat d'une checkbox

Re: CheckBox PHP

Posté : 10 avr. 2015, 09:58
par sirakawa
Comme expliqué ici entre autres:
http://www.w3.org/TR/html-markup/input.checkbox.html
et un exempe:
<form method = "post" action = "index.php" >
	<fieldset>
		<legend>Etes-vous pisciculteur?</legend>
			<label>Oui</label><input type = "checkbox"  name = "pisci" value ="1" />
			<label>Non</label><input type = "checkbox"  name = "pisci" value ="0" />

	</fieldset>
	<button type = "submit">Envoyer</button>
</form>
et index.php:
<?PHP
	var_dump ($_POST);

?>
Rien n'empêche de cocher les deux options avec comme résultat UNE seule des valeurs. C'est pourquoi on emploie plutôt la notation tableau.
Mais si c'est du oui/Non, il vaudrait mieux employer le type radio où les réponses sont exclusives l'une de l'autre

Re: CheckBox PHP

Posté : 11 avr. 2015, 10:28
par Ryle
En complément :

Lorsque une case à cocher est cochée, le formulaire transmet celle-ci avec pour valeur l'information contenue dans le champ "value" de l'input. S'il n'y a pas d'attribut value, alors le formulaire transmet la valeur "on".
Si la case n'est pas cochée, celle-ci n'est pas envoyée par le formulaire et elle ne sera donc pas présente dans les variables $_POST ou $_GET.

Pour tester si une case a été cochée, il suffit donc de vérifier si celle-ci est présente ou non (quelle que soit sa valeur, 1, 0 ou "on")

Dans la mesure où tu envois ces données en javascript via ajax, tu vas chercher la valeur de la case, mais cette case n'a pas d'attribut value. Il faut donc en définir un. Cependant cet attribut sera toujours présent, que la case soit cochée ou non. Il te faut donc faire le test toi même pour savoir quelle valeur transmettre dans ta requête ajax.
optin : $('#optin').prop('checked') ? 1 : 0 // si la case dont l'id est optin est cochée, transmet 1 sinon transmet 0