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. 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
    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. 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. 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

            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. Bonjour
              Merci à vous j'ai réussi à faire ce que je souhaitais.
              Cordialement
              0