Actualisation Json

Résolu
Bonjour, j'ai un tableau Json de cette forme:
[{"id":"16","x":"1","y":"1"},{"id":"17","x":"3","y":"6"},{"id":"18","x":"1","y":"1"},{"id":"19","x":"1","y":"1"},{"id":"20","x":"1","y":"1"},{"id":"21","x":"1","y":"1"},{"id":"22","x":"1","y":"1"},{"id":"23","x":"1","y":"1"},{"id":"24","x":"1","y":"1"},{"id":"25","x":"1","y":"1"},{"id":"26","x":"1","y":"1"},{"id":"27","x":"1","y":"1"},{"id":"28","x":"1","y":"1"},{"id":"29","x":"1","y":"1"},{"id":"30","x":"1","y":"1"},{"id":"31","x":"1","y":"1"},{"id":"32","x":"1","y":"1"},{"id":"33","x":"1","y":"1"},{"id":"34","x":"1","y":"1"},{"id":"35","x":"1","y":"1"},{"id":"36","x":"1","y":"1"},{"id":"37","x":"1","y":"1"},{"id":"38","x":"1","y":"1"},{"id":"39","x":"1","y":"1"},{"id":"40","x":"1","y":"1"},{"id":"41","x":"1","y":"1"}]

Les valeurs se modifie et j'ai un code pour récupérer les valeurs modifier

var refresh12 = function() {
$.ajax({
url: "bougeperso.php",
dataType: "JSON",
success:
function(retour){
var json = retour;
console.log(retour);
$('.bougeperso').html(ppmap.moveObject(json.id, json.x, json.y, true, 500)) }
});

}
setInterval(refresh12, 1500);

Donc tout fonctionne mon console.log affiche bien les valeurs du tableau!
la page bougeperso.php :

<?php
header('Content-type: application/json');
session_start();
include('include_co.php');

$reponse = mysql_query('SELECT id, x, y FROM membre WHERE connecte="1" AND login <> "'.$_SESSION['login'].'";');
$array = array();
while ($donnees = mysql_fetch_assoc($reponse) ) {
$array[] = $donnees;
}

echo json_encode($array);

?>

Comment ca se fait que le code fonctionne quand je met juste une entrée de tableau mais quand il y a toutes les entrées la fonction ppmap.moveobject ne fonctionne pas.
En gros si je met id:17 x:4 y:4 ça va fonctionner mais quand il y a plusieurs entrées ca ne fonctionne plus :/

2 réponses

  1. Car la fonction json_encode de PHP quand elle n'a qu'une entrée (donc un tableau à une seule dimension) forme un objet JSON de cette forme

    {"id":16,"x":1,"y":1}

    Du coup ci tu fais maVar.id oui ça te retourne 16, mais quand tu as plusieurs entrées, donc un tableau à 2 dimensions, là le JSON retournée est sous forme de tableau contenant chaque objet JSON avec un index différent dans le tableau principal.

    Comme ceci

    [{"id":16,"x":1,"y":1},{"id":17,"x":2,"y":1}]

    Du coup si par exemple tu veux l'id 16 tu dois faire maVar[0].id, pour le suivant c'est maVar[1].id (donc 17)

    J'espère que tu as compris la différence entre un objet et un tableau, tu appelles pas les infos de la même façon.
    1. D'acc oui j'ai compris, mais comment faire pour que la ligne
      $('.bougeperso').html(ppmap.moveObject(json.id, json.x, json.y, true, 500)) }
      soit raffraichis pour CHAQUE ID toutes les 1.5sec!
      Donc en gros que ça retourne tous X et Y pour chaque ID ? :)
      1. En gros tu veux le dernier à chaque fois?

        Tu peux toujours extraire le dernier objet dans le tableau avant.

        Essaye ça:

        var json = retour.pop(); à la place de var json = retour;

        Après tu peux aussi le faire du côté PHP, en mettant dans ta requête que tu veux que le dernier élément.
      2. merci, mais j'ai trouvé la solution :)