[RESOLU] trouver une valeur avec json_decode multidimensionnel

Petit nouveau ! | 5 Messages

25 sept. 2014, 13:03

Bonjour

(php5, json_decode, mysql)

dans une base de donnees mySql champ text j'ai ces valeurs

Code : Tout sélectionner

a:2:{ i:0; O:8:"stdClass":8:{ s:25:"variant_characteristic_id"; s:1:"2"; s:18:"variant_product_id"; s:3:"516"; s:8:"ordering"; s:1:"0"; s:17:"characteristic_id"; s:1:"2"; s:24:"characteristic_parent_id"; s:1:"3"; s:20:"characteristic_value"; s:6:"13.7 m"; s:20:"characteristic_alias"; s:0:""; s:23:"characteristic_ordering"; s:1:"0"; } s:10:"7m / 13.7m"; s:6:"13.7 m"; }
je n'arrive pas avec json_decode a recuperer la characteristic_value = 13.7 m

merci pour l'aide

Eléphant du PHP | 151 Messages

25 sept. 2014, 14:18

C'est exactement ce qu'il y a dans ton champ de table mysql ou tu as mis en forme ?
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphant du PHP | 151 Messages

25 sept. 2014, 14:20

Parce que en fait, ton json est pas valide en terme de formatage donc json_decode ne peut rien faire
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Petit nouveau ! | 5 Messages

25 sept. 2014, 14:21

non c'est comme ca mais sans retour a la ligne

Code : Tout sélectionner

a:2:{i:0;O:8:"stdClass":8:{s:25:"variant_characteristic_id";s:1:"2";s:18:"variant_product_id";s:3:"516";s:8:"ordering";s:1:"0";s:17:"characteristic_id";s:1:"2";s:24:"characteristic_parent_id";s:1:"3";s:20:"characteristic_value";s:6:"13.7 m";s:20:"characteristic_alias";s:0:"";s:23:"characteristic_ordering";s:1:"0";}s:10:"7m / 13.7m";s:6:"13.7 m";}
je trouve le formatage bizarre pour du json

nos posts se sont croise

Eléphant du PHP | 151 Messages

25 sept. 2014, 14:24

Un test vite fait ici : http://json.parser.online.fr/
Erreur sur le a... Faudrait voir ce qui le génère...
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Petit nouveau ! | 5 Messages

25 sept. 2014, 14:26

Un test vite fait ici : http://json.parser.online.fr/
Erreur sur le a... Faudrait voir ce qui le génère...
c'est dans une table joomla , ca doit etre encore du fait maison

merci pour ton aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 sept. 2014, 14:37

salut,

c'est parce que ce n'est pas du json.

c'est un objet "sérialisé".
La sérialisation est un procédé courant pour la persistance d'information complexe.

ton problème ce règle simplement (j'ai découpé en plusieurs étape pour faire simple)
<?php
$x = 'a:2:{
   i:0;
   O:8:"stdClass":8:{
      s:25:"variant_characteristic_id";
      s:1:"2";
      s:18:"variant_product_id";
      s:3:"516";
      s:8:"ordering";
      s:1:"0";
      s:17:"characteristic_id";
      s:1:"2";
      s:24:"characteristic_parent_id";
      s:1:"3";
      s:20:"characteristic_value";
      s:6:"13.7 m";
      s:20:"characteristic_alias";
      s:0:"";
      s:23:"characteristic_ordering";
      s:1:"0";
   }
   s:10:"7m / 13.7m";
   s:6:"13.7 m";
}';

$a = preg_replace('/\n\s{0,}/','',$x);
echo $a.PHP_EOL.PHP_EOL;
$xx = unserialize($a);
var_dump($xx);
si les sauts de lignes, espaces du formatage ne sont pas en base seule l'utilisation de unserialize est utile :)

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

25 sept. 2014, 16:01

ha ! super
$s = unserialize ($s_text);
$s_result = $s[0]->characteristic_value;
merci beaucoup !!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 sept. 2014, 22:12

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert "Mettre le sujet en tant que Résolu" situé en haut de la page à côté du titre du sujet.
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

25 sept. 2014, 22:15

merci