Vérifier si checkbox dynamique est coché

Résolu
tortue60 Messages postés 250 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
// 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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   145
 
$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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention  
 
* Fournit la valeur d'une donnée transmise par la méthode post
0
tortue60 Messages postés 250 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   894
 
donnes nous le code de cette fonction
0
tortue60 Messages postés 250 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai trouvé:
$checkbox = lireDonneePost("souhait", NULL);

j'ai remplacer le N par Null
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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