Erreur Warning

[Résolu/Fermé]
Signaler
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
-
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
-
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

Messages postés
2582
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
22 octobre 2021
464
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
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
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
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
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;
Messages postés
2582
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
22 octobre 2021
464
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 ?
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
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
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
5
Bonjour
Merci à vous j'ai réussi à faire ce que je souhaitais.
Cordialement