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); ?>
Partager