Erreur Warning

Résolu/Fermé
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - 13 mars 2014 à 19:43
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - 18 mars 2014 à 21:31
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

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
14 mars 2014 à 09:45
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
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
14 mars 2014 à 23:17
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
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
Modifié par labourette le 16/03/2014 à 23:50
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
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
17 mars 2014 à 11:09
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

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

Posez votre question
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
Modifié par labourette le 17/03/2014 à 23:11
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
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
18 mars 2014 à 21:31
Bonjour
Merci à vous j'ai réussi à faire ce que je souhaitais.
Cordialement
0