j'ai un souci avec un WHILE,
En effet dans le code ci-bas je n’obtiens que la première ligne de data, si je fait juste un echo j'ai bien toute les lignes.
De ce que je comprend la procédure envoie toutes les réponses en même temps mais le reuqête ne prend en compte que la première ligne pourtant elle est bien à l'intérieur du WHILE.
Je pense que ma requête renvoi toutes les données en une fois mais comment faire pour que la requête se fasse sur chaque $key?
Merci pour votre aide
Code : Tout sélectionner
<?php
error_reporting(E_ALL);
@session_start();
require_once($_SESSION['fip']);
$query = "SELECT * FROM `$GLOBALS[mysql_prefix]responder` "; // recherche la clé pour chaque responder
$result = mysql_query($query) or do_error($query, 'mysql query failed', mysql_error(), basename( __FILE__), __LINE__);
while ($row = mysql_fetch_array($result)) {
$key = $row['callsign']; // on affecte à la variable $Key la clé dur responder dans la boucle
if (!empty($key)) { // si clé vide on saute
$url = "http://www.insta-mapper.com/api/api_single.php?device_id={$key}";
$data="";
if (function_exists("curl_init")) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec ($ch);
curl_close ($ch);
}
else {
if ($fp = @fopen($url, "r")) {
while (!feof($fp) && (strlen($data)<9000)) $data .= fgets($fp, 128);
fclose($fp);
}
else {
//
return FALSE;
}
}
$nombre_debut=1;
$nombre_fin=2;
$longueur_chaine=strlen($data);
$json = substr($data, $nombre_debut, $longueur_chaine-$nombre_fin);
$obj = json_decode($json);
$device = $obj->{'device_id'};
$nom = $obj->{'friendly_name'};
$updated = $obj->{'datetime'};
$timestamp = strtotime($updated);
$lat = $obj->{'lat'};
$lng = $obj->{'lng'};
$speed = $obj->{'speed'};
$alt = $obj->{'altitude'};
$course = $obj->{'kph'};
$data2 = $device . "," . $nom. "," .$timestamp. "," .$lat. "," .$lng. "," .$speed. "," .$alt. ",".$course;
echo $data2; // juste pour tester le resultat
//******************************** morceau qui ne fonctionne pas
$query = "INSERT INTO `$GLOBALS[mysql_prefix]tracks_hh` (`source`,`latitude`,`longitude`,`course`,`speed`,`altitude`,`utc_stamp`,`updated`,`from`)
VALUES ('$device','$lat','$lng','$course','$speed','$alt','$timestamp','$updated','$course')";
$result = mysql_query($query) or do_error($query, 'mysql_query() failed', mysql_error(),basename( __FILE__), __LINE__);
$the_time = ($timestamp - date("Z") - (get_variable('delta_mins')*60));
$now = mysql_format_date($the_time);
$query2 = "UPDATE `$GLOBALS[mysql_prefix]responder` SET `lat`= '$lat' , `lng`= '$lng', `updated` = '$updated'
WHERE `callsign`= '$device' LIMIT 1 ";
$result2 = mysql_query($query2) or do_error($query2, 'mysql_query() failed', mysql_error(),basename( __FILE__), __LINE__);
//******************************** fin du morceau qui ne fonctionne pas *******************
}
else{
}
}
?>