Checkbox et PHP !

Résolu/Fermé
Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017 - 19 mai 2015 à 22:03
ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 - 11 juin 2015 à 11:28
Bonjour,

Voila je fais une formulaire en PHP , et j'ai un checkbox qui est obligatoire a cocher et si il ne l'est pas alors il affiche un message d'erreur. Tout marche nickel sa détecte si ce n'est pas cocher , cependant même si il est coché , il affiche toujours le message d'erreur et n'envoi pas le formulaire donc en fait mon code PHP j'ai mis ca :

if (isset($_POST) && (empty($_POST['checkbox1'])) )


Et mon code pour vérifier qu'il n'est pas vide alors j'ai mis :

if ((!empty($_POST["checkbox1"])))


Sauf que ça ne fonctionne pas et ça m'affiche toujours le message d'erreur a la place..

Je ne comprend pas l'erreur en fait , dois-je confirmer la valeur ? Merci à ceux qui m'aideront :)
A voir également:

4 réponses

Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017 5
23 mai 2015 à 14:57
UP :) Je débute désolé si mes fautes paraisse hyper simple mais elles ne le sont pas pour moi :(
2
<input name="checkbox1"  id="checkbox1" type="checkbox" value="accept" />


vérifie tes $_POST avec
print_r($_POST);

que tu places avant
    if(isset($_POST['submit']))
0
ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
24 mai 2015 à 19:38
Bonsoir,
Dans ton script PHP, tu tentes de récupérer une valeur contenue dans $_POST['checkbox1']
if (isset($_POST) && (empty($_POST['checkbox1']))) {

Or dans ton formulaire cette valeur n'existe pas, et pour cause le champ input sensé retourné cette valeur ne possède pas l'attribut name que tu confonds avec l'id qui lui est destiné au CSS et/ou au javascript :
<input id="checkbox1" type="checkbox" value="accept" /> Accept

Je te proposes de modifier la syntaxe du champ input comme ceci :
<input type="checkbox" id="checkbox1"  name="checkbox1" value="accept" /> Accept

Tout devrait fonctionner normalement ainsi.
Cordialement.
0
Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017 5
24 mai 2015 à 19:47
Merci Beaucoup , en plus d'avoir résolu mon problème tu m'a expliqué mon erreur ! merci beaucoupppp !
0
ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57 > Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017
24 mai 2015 à 19:58
De rien!
Pense à mettre ton sujet en résolu et bonne prog.
Cordialement.
0
Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017 5
7 juin 2015 à 00:07
Je rouvre le sujet car la mes deux checkbox peuvent être coché et ca foire tout du coup , j'ai regardé partout et je me suis rappelé des Radio , donc j'ai essayé mais avec ton code ReDLoG ca ne marche pas car le name="checkbox1" doit être le même pour les deux donc si quelqu'un a la soluce :( Merci !
0
canarder Messages postés 1706 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
19 mai 2015 à 22:08
Oui, essaye, mais il manque du code pour mieux voir.
En plus, isset($_POST) est inutile, et tu utilises trop de parenthèses.

if(isset($_POST['mavar']) && $_POST['mavar']==='mavaleur') {
//
}

(=== veut dire égal et de même type)
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
19 mai 2015 à 22:11
Le triple égal est une bonne pratique, mais ici il ne diffère pas du
==
car les valeurs de
$_POST
ou
$_GET
sont soit des strings, soit indéfinies; or le 2e cas est intercepté par le
isset
, et le premier est vrai si le 2e ne l'est pas.
0
Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017 5
Modifié par Legrandfifou le 19/05/2015 à 22:31
Merci de votre réponse plus que rapide , le code n'est pas complet mais il est englobé par TOUT le reste je vais mettre le code entier :)

  <?php

$bdd = new PDO ('mysql:host=localhost;dbname=connexion', 'root');

// On vérifie que le formulaire à été complété et si les champs ne sont pas vides


if(isset($_POST['submit']))

{
if ( isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['password'])) && (!empty($_POST['email'])))
{

if(isset($_POST['checkbox1']) && $_POST['checkbox1']==='accept') {

//On met le résultat pseudo du formulaire dans $pseudo
$pseudo = addslashes($_POST["pseudo"]) ;
$email = addslashes($_POST["email"]) ;

//On sélectionne dans la table 'utilisateurs' les pseudo qui sont les mêmes que le pseudo tapé dans le formulaire
$query = $bdd->query("SELECT pseudo FROM membres WHERE pseudo = '$pseudo'");

//On compte le nombre de réponse
$count = $query->rowCount();

//Dans le cas où il y a une réponse, qu'un pseudo dans la table correspont au pseudo tapé

if($count == 1)
{
// Pseudo déjà utilisé
echo '<div class="error_pseudo"><img src="refused.png"/><div class="refused_message">Ce pseudo est déjà utilisé</div></div>';
}

else
{
// Pseudo libre, on l'insère dans la table
$pass_hache = sha1($_POST['password']);

$req = $bdd->prepare("INSERT INTO membres(pseudo, password, email) VALUES('$pseudo', '$pass_hache', '$email')");
$req->execute(array(
'pseudo' => $pseudo,
'password' => $pass_hache,
'email' => $email));

echo '<div class="message_ok"><img src="granted.png"/><div class="granted_message">Vous êtes désormais inscris sur notre site web !</div></div>';
}


}

if (isset($_POST) && (empty($_POST['pseudo'])) OR (empty($_POST['password'])) OR (empty($_POST['email'])) )
{

echo '<div class="error_message_pseudo_case"><img src="attention.png"/><div class="error_message_pseudo">Merci de renseigner un pseudo/mot de passe/email!</div></div>';

}



if (isset($_POST) && (empty($_POST['checkbox1'])) )
{

echo '<div class="error_message_pseudo_case"><img src="attention.png"/><div class="error_message_pseudo">Merci d\'accepter les CGU ! </div></div>';

}


}

}

?>
<div class="inscription_formulaire_case">
<form action="" method = "POST">
<label for="pseudo"> Pseudo (4 à 20 caractères !) : </label> </br>
<input type="texte" name = "pseudo" /> </br>

<label for="password"> Password : </label> </br>
<input type="password" name = "password" /> </br>

<label for="email"> Email : </label> </br>
<input type="email" name = "email" /> </br>

<p>Acceptez-vous les conditions d'utilisations ?</p>
<input id="checkbox1" type="checkbox" value="accept" /> Accept


</div>
<button type="submit" name="submit" class="submit">Inscription</button>
</form>


Donc il doit accepter les CGU , si il ne coche pas accept alors sa met l'erreur ( sa marche ) mais j'ai tester avec ton bout de code en donnant une value a mon checkbox et ca ne semble pas fonctionner je dois surement me tromper
0
canarder Messages postés 1706 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 mai 2018 354
Modifié par canarder le 20/05/2015 à 13:35
Sans regarder ton code en détails et répondre vraiment, tu peux déjà utiliser PDO correctement : https://www.php.net/manual/fr/pdo.prepare.php (regarde les deux exemples).
Insérer les variables dans la commande sql, même en utilisant d'autres commandes avant pour parser les variables, n'est pas une bonne idée ; avec prepare(), PDO te le fait correctement, et tu es sûr que c'est sécurisé.

___/\_canarder_/\___
~>Un fork de Firefox avec de meilleurs choix : Pale Moon<~
0
Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017 5
20 mai 2015 à 15:59
Je ne comprend pas pourquoi ce n'est pas juste , pour je ne peut pas faire comme ca ?
0
Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017 5
21 mai 2015 à 21:43
UP
0