Comment sortire les valeur de id et children dans ce tableau ?

Par Maxime Richard, il y a 10 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Jai fait un jquery pour modifier la position de mes menu et j'envoie en json les info, un coup décripter en tableau php je ne sais plus comment accéder a ces valeur

array(12) { [0]=> object(stdClass)#2 (1) { ["id"]=> int(1) } [1]=> object(stdClass)#3 (1) { ["id"]=> int(2) } [2]=> object(stdClass)#4 (1) { ["id"]=> int(3) } [3]=> object(stdClass)#5 (1) { ["id"]=> int(4) } [4]=> object(stdClass)#6 (1) { ["id"]=> int(5) } [5]=> object(stdClass)#7 (1) { ["id"]=> int(6) } [6]=> object(stdClass)#8 (1) { ["id"]=> int(7) } [7]=> object(stdClass)#9 (1) { ["id"]=> int(8) } [8]=> object(stdClass)#10 (1) { ["id"]=> int(9) } [9]=> object(stdClass)#11 (1) { ["id"]=> int(10) } [10]=> object(stdClass)#12 (1) { ["id"]=> int(11) } [11]=> object(stdClass)#13 (1) { ["id"]=> int(12) } }

Ce que je veux

J'aimerais pouvoir utiliser le tableau pour updater ma base de donnée j'ai fait un code qui le fait pour le menu principale et il me reste a le faire pour les sous menu mais je doit etre capable d'avoir accés au donnée pour cela ...voici le code de mon update menu a titre de démonstration ....

$data = '[{"id":1},{"id":2},{"id":3},{"id":4},{"id":5},{"id":6},{"id":7},{"id":8},{"id":9},{"id":10},{"id":11},{"id":12}]'; $json =json_decode($data); var_dump($json); for($i = 0; $i< count($json); $i++) { $id = $json[$i][id]; $mysqli->query("UPDATE mp SET position_mp = $i+1 WHERE id_mp = '$id' ") or die ($mysqli->error); }

merci en avance

4 réponses

Lartak, il y a 10 ans

Bonsoir.
Utilises plutôt une boucle foreach, par exemple :

foreach ($json as $k => $v) { $mysqli->query("UPDATE mp SET position_mp = $k + 1 WHERE id_mp = '$v->id' ") or die ($mysqli->error); }
Maxime Richard, il y a 10 ans

La façon d'avoir acces a children dans un foreach est t-il

[{"id":1,"children":[{"id":2}]}] . . . $valeur2 = $v->children; foreach($valeur2 as $q => $i){ ...

merci en avance

Lartak, il y a 10 ans

Oui, mais tu peux directement le mettre ldans la déclaration du foreach, par exemple :

foreach ($json as $k => $v) { /* .... accès via $v->{key} ($v->id) */ if(isset($v->parent)) { foreach ($v->parent as $q => $child) { /* ... accès via $child->{key} ($child->id) */ } } }
Maxime Richard, il y a 10 ans

Merci de ton aide :)