IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

probleme warning avec foreach()


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Par défaut probleme warning avec foreach()
    Bonjour,
    alors mon soucis du jour lol

    en fait quand j'ajoute un PREMIER article dans mon panier je tombe sur cette erreur:

    Warning: Invalid argument supplied for foreach() in C:\wamp\www\site_RMG\panier2.php on line 41



    ensuite aucun soucis je n'ai pas cet affichage d'erreur, il ne pose aucun problème pour les fonctionnalités du site mais ca fait pas terrible y a t'il moyen de cacher ca? ou de faire quelque chose pour ne pas que ca s'affiche quoi.


    voici la partie de mon code où ca merdouille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    //on récupère les informations depuis le catalogue posté par methode "POST"
    if(isset($_POST['reference'],$_POST['nom'],$_POST['prix'],$_POST['quantite']))
    {			
    	$ref=$_POST['reference'];
    	$cadd=$monpanier->getBasket();
    	$trouve=false;	
    	foreach ($cadd as $art) 
    	{		
    		if (in_array($ref,$art)) // si la référence existe deja dans le panier
    		{
    			$trouve=true;  
    			break;// des qu'un enregistrement equivalent est trouvé on arrete la boucle
    		}
     
    	}
    	if ($trouve)// si un enregistrement est trouvé on interdit l'ajout
    	{
    		echo'<center><br/>votre article existe deja, veuillez utiliser les bouttons <img src="images/plus.jpg" alt="plus" title="plus"/> et <img src="images/moins.jpg" alt="moins" title="moins"/> pour ajuster la quantité désirée</center>';
    	}
    	else // sinon on ajoute l'article
    	{
    		$monpanier->addArticle(array('code'=>$_POST['reference'],'nom'=>$_POST['nom'],'prix'=>$_POST['prix'],'quantite'=>$_POST['quantite']));// on insere les valeurs dans le tableau "monpanier"
    	}
    }
    Merci d'avance

  2. #2
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Le problème est que ta variable $cart n'est pas un tableau avant l'ajout d'un produit.

    Rajoute un test autour de ton foreach avec un is_array

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 17
    Par défaut
    ca marche nikel merci!!!!

    pour les prochains qui auront un soucis dans le même style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    if(is_array($cadd))
    	{
    	foreach ($cadd as $art) 
    	{		
    		if (in_array($ref,$art)) // si la référence existe deja dans le panier
    		{
    			$trouve=true;  
    			break;// des qu'un enregistrement equivalent est trouvé on arrete la boucle
    		}		
    	}
    	}
    	else
    	{
    		$cadd=array();
    		foreach ($cadd as $art) 
    	{		
    		if (in_array($ref,$art)) // si la référence existe deja dans le panier
    		{
    			$trouve=true;  
    			break;// des qu'un enregistrement equivalent est trouvé on arrete la boucle
    		}		
    	}
    	}

  4. #4
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Tu peux enlever le foreach dans ton else, il ne sert à rien, vu que tu viens créer le tableau vide, le foreach ne bouclera meme pas.

Discussions similaires

  1. [CakePHP] Probleme récupération données avec foreach
    Par kiradeus dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 25/04/2012, 10h39
  2. Réponses: 4
    Dernier message: 27/11/2008, 18h59
  3. [MySQL] probleme avec foreach
    Par hellosct1 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 20/07/2007, 14h07
  4. [DOM] Warning avec foreach
    Par nico9135 dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 03/09/2006, 20h50
  5. probleme GRAVE avec directx 9
    Par l'arbre en plastique dans le forum DirectX
    Réponses: 3
    Dernier message: 02/09/2003, 23h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo