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

PHP & Base de données Discussion :

Invalid argument supplied for foreach() caractères spéciaux [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Invalid argument supplied for foreach() caractères spéciaux
    Bonjour à tous,


    Je viens vers vous car je n'arrive pas à corriger une erreur.

    Voila le fameux nom de l'erreur : Invalid argument supplied for foreach()...
    J'ai cherché sur l'ami Google et je suis tombé une solution qui revenait assez souvent : rajouter un condition is_array.

    En rajoutant cette condition l'erreur de s'affiche plus mais l'enregistrement en BDD ne marche pas. En ce qui me concerne l'erreur vient obligatoire des caractères spéciaux et en l'occurence les "". Lorsqu'une chaîne de caractère contient des guillemets j'ai le droit à cette erreur.

    J'ai essayé avec un htmlentities mais rien n'y fait.

    Je pense que cela vient du json_decode qui ne sait pas comment traiter les doubles quotes. En faisant un var_dump($arr) cela me retourne NULL, l'erreur est donc bien la mais comment la gérer...

    C'est pourquoi j'ai besoin de votre aide. Merci à vous


    Voila le code de du traitement et de l'enregistrement en BDD :

    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
    	<?php urldecode($_SERVER['QUERY_STRING']) ?>
    	<?php
    		$base = mysql_connect ("***", "***", "***");
    		mysql_select_db ('***', $base) ;
    		$vider = "TRUNCATE TABLE drag";
    		mysql_query($vider);		
    		// accept JSON parameter (and Un-quote string if needed)
    		$p = stripslashes($_REQUEST['p']);
    		// decode JSON object (it shouldn't be decoded as associative array)
    		$arr = json_decode($p);
    		// open loop through each array element
    		foreach ($arr as $p){
    			// set id, row index and cell index
    			$id = $p[0];
    			$row = $p[1];
    			$cell = $p[2];
    			$date = $p[3];
    			// instead of print, you can store accepted parameteres to the database
    			$id = htmlentities($id, ENT_QUOTES, "UTF-8");
    			$date = htmlentities($date, ENT_QUOTES, "UTF-8");
    			$ajout = "INSERT INTO drag VALUES('','$id','$row','$cell','$date')";
    		    mysql_query($ajout);
    		}
    		mysql_close($base);
    	?>

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Bon et bien au final j'ai trouvé la solution.

    Pour ceux qui aurait le même problème, dans mon cas il a suffit de remplacer la fonction stripslashes par la fonction urldecode.

    Ce qui donne pour moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $p = urldecode($_REQUEST['p']);
    Désolé pour ce message mais j'espère que la solution pourra servir à d'autres

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Warning: Invalid argument supplied for foreach()
    Par billyrose dans le forum Langage
    Réponses: 1
    Dernier message: 27/02/2009, 15h36
  2. [Tableaux] Invalid argument supplied for foreach()
    Par kifouillou dans le forum Langage
    Réponses: 10
    Dernier message: 16/05/2008, 16h53
  3. [Tableaux] Invalid argument supplied for foreach
    Par Lionel57 dans le forum Langage
    Réponses: 1
    Dernier message: 20/12/2007, 13h15
  4. Invalid argument supplied for foreach()
    Par Rajhonson dans le forum Langage
    Réponses: 4
    Dernier message: 16/11/2006, 14h31
  5. Réponses: 11
    Dernier message: 19/05/2006, 11h41

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