Erreur Warning

Résolu
Bonjour,

J'ai des cases à cocher lorsque je coche tout fonctionne super, mais losque je ne sélectionne aucune case cela me retourne cette erreur.
Je ne comprend pas, pouvez vous m'expliquer ce que ça veut dire, je vous met mon code.
En vous remerciant beaucoup.
Merci

Warning: Invalid argument supplied for foreach() in....

Avec ce code je récupére les valeurs des checkbox

	$resultats2 = $bdd->query("SELECT * FROM tb_categorie_statut");
		foreach ($resultats2 as $donnees)
		{
			echo"<tr>";
			echo"<td width='25%'>".$donnees['categorie_statut']."</td>";
			echo"<td width='25%'><input type='checkbox' name='categorie_statut[]' value='".$donnees['id_categorie_statut']."'></td>";
		}
	$resultats2->closeCursor();


$adherent_insert = $bdd->lastInsertId();

foreach($PARAM['CATEGORIE_STATUT'] as $categorie_statut){
				$sql = "INSERT INTO tb_gestion_admin (rid_adherent, rid_categorie_statut)
				VALUES (:rid_adherent, :rid_categorie_statut)";

			$requete = $bdd->prepare($sql);
			$requete->bindParam(':rid_adherent',			$adherent_insert);
			$requete->bindParam(':rid_categorie_statut',	$categorie_statut);			
			$requete->execute();
}


6 réponses

  1. Bonjour
    Merci à vous j'ai réussi à faire ce que je souhaitais.
    Cordialement
    0
    1. Bonjour

      En fait j'ai créé un tableau
      $PARAM = array
      (
      .......
      'CATEGORIE_STATUT'=> isset($_POST['categorie_statut']) ? $_POST['categorie_statut'] : '',
      ...........
      );
      

      Après avoir fait un var_dump ça me retourne ceux ci a priori ça me retourne un tableau tu peux m'en dire un peu plus s'il te plait. Merci
      array
        0 => string '2' (length=1)
      

      Je n'ai aucun autre message d'erreur
      0
      1. As tu des messages d'erreurs ? (affichage des erreurs php et des erreurs pdo)

        Utilise var_dump() pour vérifier ce que contient tes variables tout au long de ton code.
        Comment est construite ta variable $PARAM ?
        Tu vérifies que $_POST['categorie_statut'] existe mais tu ne l'utilises pas, est-ce normal ?
        0
        1. Bonjour
          Excusez moi mais j'aurai vraiment besoin d'un coup de main pour mes chekbox.

          Alors voilà où j'en suis exactement...
          J'ai créé mes cases à cocher avec le contenu d'une table
           $sql = "SELECT * FROM tb_categorie_statut";
           $resultat1 = $bdd->prepare($sql);       
           $resultat1->execute();
            while ($donnees = $resultat1->fetch(PDO::FETCH_ASSOC))
            {
             echo"<tr>";
             echo"<td width='25%'>".$donnees['categorie_statut']."</td>";
             echo"<td width='25%'><input type='checkbox' name='categorie_statut[]' value='".$donnees['id_categorie_statut']."'></td>";
            }
           $resultat1->closeCursor();
          

          Ensuite je souhaite faire un INSERT pour récupérer mes cases à cocher dans ma BDD mais dans ma table tb_gestion_admin l'INSERT ne joue pas son role et je suis bloqué sans savoir d'où viens le problème.
          Merci de votre aide.
          $adherent_insert = $bdd->lastInsertId();
          
           if (isset($_POST['categorie_statut'])){
            foreach($PARAM['CATEGORIE_STATUT'] as $categorie_statut){
            
              $sql = 'INSERT INTO tb_gestion_admin (rid_adherent, rid_categorie_statut)
              VALUES (:rid_adherent, :rid_adherent)';
          
             $requete = $bdd->prepare($sql);
             $requete->bindParam(':rid_adherent',             $adherent_insert);
             $requete->bindParam(':rid_categorie_statut', $categorie_statut);   
             $requete->execute();
           
              $sql = "INSERT INTO tb_gestion_membre(rid_adherent, actif, non_actif, sortant, annee_admission, annee_demission)
              VALUES (:rid_adherent, :actif, :non_actif, :sortant, :annee_admission, :annee_demission)";
             
             $requete = $bdd->prepare($sql);
             $requete->bindParam(':rid_adherent',           $adherent_insert);
             $requete->bindParam(':actif',                         $PARAM['ACTIF']);
             $requete->bindParam(':non_actif',                 $PARAM['NON_ACTIF']);
             $requete->bindParam(':sortant',                    $PARAM['SORTANT']);
             $requete->bindParam(':annee_admission',    $PARAM['ANNEE_ADMISSION']);
             $requete->bindParam(':annee_demission',    $PARAM['ANNEE_DEMISSION']);
             $requete->execute();
            }
           }
             break;
          
          0
          1. Bonjour

            Merci de ton retour
            C'est cette ligne qui est concernée
            foreach($PARAM['CATEGORIE_STATUT'] as $categorie_statut){
            

            Tu peux me dire comment je peux faire une boucle avec mon exemple pourtant les valeurs sont bonne je ne comprend pas.
            Merci si tu peux me donner un coup de pouce
            0
            1. Salut,

              Il faudrait préciser le numéro de ligne à la fin de ton message d'erreur.

              Ton problème vient soit de la variable $resultats2 ou de $PARAM['CATEGORIE_STATUT'] qui ne sont pas sous la forme d'un tableau : donc impossible de les parcourir avec foreach.

              Bonne journée
              0