Vérifier si checkbox dynamique est coché

Résolu/Fermé
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013 - 25 mai 2013 à 19:33
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 27 mai 2013 à 18:18
Bonjour,

Je réalise une petit appli web et je voudrai vérifier en php si j'ai au moins une checkbox dynamique qui est coché et si c pas le cas, on retourne un message. Je pense que je doit faire un foreach mais je c pas trop ou le mettre. Voici mes différents scripts:

case à cosé dynmaique:

<?php

$requete = "select * from souhaiteobtenir";
$result = $db->query($requete);

$ligne = $result->fetch_object();

while($ligne != false)
{
$cle = $ligne->id;
$valeur = $ligne->libel;
echo "<input type ='checkbox' class = 'caseACocher' id = 'souhait$cle' name = 'souhait[]' value = '$cle' />$valeur<br />";

$ligne = $result->fetch_object();
}
echo "<input type ='hidden' name = 'nbCheckbox' value = '$cle' ";
?>


fonction qui vérifie les champs de mon formulaire:
function verifierDemande($nomAVerifier, $emailAVerifier, $telephAVerifier, $origineAVerifier, $rencontreAVerifier, $tabCaseACocher, &$tabErreurs){
if(empty($nomAVerifier)){
ajouterErreur($tabErreurs, "Le nom doit être renseigné");
}

if(empty($emailAVerifier)){
ajouterErreur($tabErreurs, "Le mail doit être renseigné");
}
else
{
if(verifierAdresseMail($emailAVerifier)==false)
{
ajouterErreur($tabErreurs, "Le mail est incorrect");
}
}

if (empty($telephAVerifier)){
ajouterErreur($tabErreurs, "Le numéro de téléphone doit être renseigné");
}
else
{
if(estEntierPositif($telephAVerifier) == false)
{
ajouterErreur($tabErreurs, "Le téléphone n\'est pas numérique");
}
}

if($origineAVerifier < 1){
ajouterErreur($tabErreurs, "Veuillez indiquer comment vous avec connu notre site");
}

if($rencontreAVerifier == " "){
ajouterErreur($tabErreurs, "Veuillez indiquer si vous souhaitez être rencontré");
}

if(verifCocher($tabCaseACocher) == false){
ajouterErreur($tabErreurs, "Veuillez indiquer ce que vous souhaitez obtenir");
}
}

fonction qui vérifie les case à cocher
function verifCocher($tabEle)
{
$trouve = false;
$nb = count($tabEle);
$i=0;
while($trouve == false && $i< $nb)
{
if (empty($_POST[$tabEle[$i]])== false)
{
$trouve = true;
}
else
{
$i = $i+1;
}
}
return $trouve;
}

début de mon script d'ajout des valeurs des champs de mon formulaire dans ma bdd:
// fonctions de contrôle
include("includes/utilitaires.php");

// appel de la fonction qui supprime les espaces en début et en fin de chaine de chacun des éléments du tableau passé en paramètre
supEspaceDebutFin($_POST);

extract ($_POST);

$rencontre = lireDonneePost("rencontre");
$checkbox = lireDonneePost("souhait", "N");

// création du tableau qui va contenir les erreurs trouvées
$tableauErreurs = array();

// création du tableau qui va contenir le nom des case à cocher
$caseACocher = array($checkbox); // faire une boucle

// appel de ma méthode verifierDemande qui va vérifier les données saisies. les erreurs seton placées dans tableauErreurs
$retVerif = verifierDemande($nom, $email, $teleph, $origine, $rencontre, $caseACocher, $tableauErreurs);

// si des erreurs ont été detectées dans le formulaire, on les affichent
if (nbErreurs($tableauErreurs)>0)
{
$lstErr = chaineErreurs($tableauErreurs);
Echo "<script language='Javascript'>";
Echo "<!--\n"; // le "\n" permet de passer une ligne en Javascript
Echo "alert('$lstErr ');\n";
Echo "// -->\n";
Echo "</script\n>";
include("demandeInfoForm.php");
}
...

Pouvez-vous m'aidez?


A voir également:

7 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 25/05/2013 à 20:43
name = 'souhait[]' de ton formulaire fait ce que tu reçoit $_POST['souhait'] est un array essayes en vérifiant la taille de cet arrya

sizeof($_POST['souhait']) >0 ou si ça marche pas en parcourant cet array par une boucle et vérifiant si pas vide
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
25 mai 2013 à 20:54
Pour la boucle je vois pas trop comment faire et cette ligne je c pas trop si elle est bonne:
// création du tableau qui va contenir le nom des case à cocher
$caseACocher = array($checkbox); // faire une boucle
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
25 mai 2013 à 21:26
// création du tableau qui va contenir le nom des case à cocher
$caseACocher = array($checkbox); // faire une boucle


non, tout simplement du fait que plus haut tu as fait extract($_POST)

$souhait est l'array qui contient les case cochées

mais attention si aucune case cochée l'array n'existe pas donc il suffit de tester si il existe pour savoir si au moins une case cochée

if(isset($souhait)) {
//au moins une case est cochée
}
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
25 mai 2013 à 21:29
Je doit mettre quoi aussi dans le if. J'ai jamais fait un truc comme et j'ai rien trouvé sur le net. Moi on m'a jsute dit de fair eune boucle foreach
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
25 mai 2013 à 21:34
if(isset($souhait)) {
//au moins une case est cochée
foreach($souhait as $index=>$value){
    echo $value; //qui correspond a la valeur de $cle de chaque case cochée
}
}
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
25 mai 2013 à 21:43
sa fonctionne toujours pas:
// création du tableau qui va contenir les erreurs trouvées
$tableauErreurs = array();

if (isset($souhait)){
foreach($souhait as $index =>$value){
echo $value;
}
}

// appel de ma méthode verifierDemande qui va vérifier les données saisies. les erreurs seton placées dans tableauErreurs
$retVerif = verifierDemande($nom, $email, $teleph, $origine, $rencontre, $souahait, $tableauErreurs);


on me dit une erreur dans la fonction VerifCocher
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 26/05/2013 à 10:22
regardes de plus près comme tu as ecrit souhait

$retVerif = verifierDemande($nom, $email, $teleph, $origine, $rencontre, $souahait, $tableauErreurs); 


et tu dois modifier:
if(verifCocher($tabCaseACocher) == false){
ajouterErreur($tabErreurs, "Veuillez indiquer ce que vous souhaitez obtenir");
}
}


if(verifCocher($souhait) == false){
ajouterErreur($tabErreurs, "Veuillez indiquer ce que vous souhaitez obtenir");
}
} 
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
26 mai 2013 à 11:08
fonctionne toujours pas :


$rencontre = lireDonneePost("rencontre");
$checkbox = lireDonneePost("souhait", "N");

// création du tableau qui va contenir les erreurs trouvées
$tableauErreurs = array();

if(isset($souhait)){
foreach($souhait as $index =>$value){
}
}
// appel de ma méthode verifierDemande qui va vérifier les données saisies. les erreurs seton placées dans tableauErreurs
$retVerif = verifierDemande($nom, $email, $teleph, $origine, $rencontre, $souhait, $tableauErreurs);


( ! ) Notice: Undefined variable: souhait in C:\wamp\www\site\demandeInfoAjout.php on line 35:
cette ligne:
$retVerif = verifierDemande($nom, $email, $teleph, $origine, $rencontre, $souhait, $tableauErreurs);
0
Autumn`Tears Messages postés 1054 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 23 octobre 2013 145
Modifié par Autumn`Tears le 26/05/2013 à 20:36
$souhait n'existe pas parce que c'est $_POST['souhait']... Essaie de faire $souhait = $_POST['souhait'] après avoir vérifié if(sizeof($_POST['souhait'] => 0)

Également, rien ne s'exécute dans ton foreach
if(isset($souhait)){
foreach($souhait as $index =>$value){
}
// appel de ma méthode verifierDemande qui va vérifier les données saisies. les erreurs seton placées dans tableauErreurs
$retVerif = verifierDemande($nom, $email, $teleph, $origine, $rencontre, $souhait, $tableauErreurs);
}

Peut-être était-ce l'idée de départ.
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
26 mai 2013 à 20:38
Se se trouve ou sa if(sizeof($_POST['souhait'] => 0)?

Sinon j'ai encor bosser dessus mais sa foctnionne toujours: mon message apparait pas pour les case à coché quand j'ai 0, 1 ou plusieurs case cochés alors qu'il devrait aparaitre quand j'en ai 0

les cases à cocher dynamique:
<?php

$requete = "select * from souhaiteobtenir";
$result = $db->query($requete);

$ligne = $result->fetch_object();

while($ligne != false)
{
$cle = $ligne->id;
$valeur = $ligne->libel;
echo "<input type ='checkbox' class = 'caseACocher' id = 'souhait$cle' name = 'souhait[]' value = '$cle' />$valeur<br />";

$ligne = $result->fetch_object();
}
echo "<input type ='hidden' name = 'nbCheckbox' value = '$cle' ";
?>

extrait du script insert:
extract ($_POST);

$rencontre = lireDonneePost("rencontre");
$checkbox = lireDonneePost("souhait", "N");

// création du tableau qui va contenir les erreurs trouvées
$tableauErreurs = array();

// appel de ma méthode verifierDemande qui va vérifier les données saisies. les erreurs seton placées dans tableauErreurs
$retVerif = verifierDemande($nom, $email, $teleph, $origine, $rencontre, $checkbox, $tableauErreurs);


fonction qui vérifie les champs:
function verifierDemande($nomAVerifier, $emailAVerifier, $telephAVerifier, $origineAVerifier, $rencontreAVerifier, $souhait, &$tabErreurs){
if(empty($nomAVerifier)){
ajouterErreur($tabErreurs, "Le nom doit être renseigné");
}

if(empty($emailAVerifier)){
ajouterErreur($tabErreurs, "Le mail doit être renseigné");
}
else
{
if(verifierAdresseMail($emailAVerifier)==false)
{
ajouterErreur($tabErreurs, "Le mail est incorrect");
}
}

if (empty($telephAVerifier)){
ajouterErreur($tabErreurs, "Le numéro de téléphone doit être renseigné");
}
else
{
if(estEntierPositif($telephAVerifier) == false)
{
ajouterErreur($tabErreurs, "Le téléphone n\'est pas numérique");
}
}

if($origineAVerifier < 1){
ajouterErreur($tabErreurs, "Veuillez indiquer comment vous avec connu notre site");
}

if($rencontreAVerifier == " "){
ajouterErreur($tabErreurs, "Veuillez indiquer si vous souhaitez être rencontré");
}

if(verifCocher($souhait) == false){
ajouterErreur($tabErreurs, "Veuillez indiquer ce que vous souhaitez obtenir");
}
}

fonction verifCocher:
function verifCocher($tabEle)
{
return (count($tabEle)>0);
}

En espérant que sa vous aide
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 mai 2013 à 20:57
pour Autumn Tears
extract ($_POST) transforme entre autre $_POST['souhait'] en $souhait

pour toi:

que fait cette fonction ?
$checkbox = lireDonneePost("souhait", "N");
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
26 mai 2013 à 21:02
* Fournit la valeur d'une donnée transmise par la méthode post
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
26 mai 2013 à 21:07
j'ai repris cet exmple quand j'avais les case à coché en dur:
$appel = lireDonneePost("appel", "N");
$newslet = lireDonneePost("newslet", "N");
$rdv = lireDonneePost("rdv", "N");
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 mai 2013 à 23:06
donnes nous le code de cette fonction
0
tortue60 Messages postés 250 Date d'inscription jeudi 21 mars 2013 Statut Membre Dernière intervention 1 septembre 2013
26 mai 2013 à 23:17
j'ai trouvé:
$checkbox = lireDonneePost("souhait", NULL);

j'ai remplacer le N par Null
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
27 mai 2013 à 18:18
il y avait plus simple:
extrait du script insert:
<?php
extract ($_POST);

$rencontre = lireDonneePost("rencontre");
//on n'utilise pas la fonction lireDonnees
//$checkbox = lireDonneePost("souhait", "N");
if(!isset($souhait)) $souhait=array(); //si aucune case cochée, $_POST['souhait'] n'est pa tansmis donc $souhait n'eiste pas, laors on cree un array vide pour l'utiliser par la suite
// création du tableau qui va contenir les erreurs trouvées
$tableauErreurs = array();

// appel de ma méthode verifierDemande qui va vérifier les données saisies. les erreurs seton placées dans tableauErreurs
$retVerif = verifierDemande($nom, $email, $teleph, $origine, $rencontre, $checkbox, $tableauErreurs);


fonction qui vérifie les champs:
function verifierDemande($nomAVerifier, $emailAVerifier, $telephAVerifier, $origineAVerifier, $rencontreAVerifier, $souhait, &$tabErreurs){
if(empty($nomAVerifier)){
ajouterErreur($tabErreurs, "Le nom doit être renseigné");
}

if(empty($emailAVerifier)){
ajouterErreur($tabErreurs, "Le mail doit être renseigné");
}
else
{
if(verifierAdresseMail($emailAVerifier)==false)
{
ajouterErreur($tabErreurs, "Le mail est incorrect");
}
}

if (empty($telephAVerifier)){
ajouterErreur($tabErreurs, "Le numéro de téléphone doit être renseigné");
}
else
{
if(estEntierPositif($telephAVerifier) == false)
{
ajouterErreur($tabErreurs, "Le téléphone n\'est pas numérique");
}
}

if($origineAVerifier < 1){
ajouterErreur($tabErreurs, "Veuillez indiquer comment vous avec connu notre site");
}

if($rencontreAVerifier == " "){
ajouterErreur($tabErreurs, "Veuillez indiquer si vous souhaitez être rencontré");
}

if(sizeof($souhait) == 0){
ajouterErreur($tabErreurs, "Veuillez indiquer ce que vous souhaitez obtenir");
}
}
//et on n'utilise plus la fonction verifCocher
fonction verifCocher:
function verifCocher($tabEle)
{
return (count($tabEle)>0);
} 
0