[RESOLU] problème de requête dans un WHILE

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] problème de requête dans un WHILE

Re: problème de requête dans un WHILE

par davleo » 01 déc. 2013, 18:27

J'ai trouvé la solution, j'avais deux requêtes qui portaient le même nom :? soit $query en changeant l'une des deux tout fonctionne.

Merci

Re: problème de requête dans un WHILE

par davleo » 01 déc. 2013, 18:13

OUi biensur j'ai fin à dump à chaque requête.
Pour MySQLi je vais voir cela.
Ma problématique est que si je supprime les deux dernières requêtes , le ECHO $data2; m'affiche bien toutes les entrées.
Pourquoi lorsque je fait une autre requête je n'ai plus que la première entrée ?
J'ai pensez à faire un nom de variable qui change à chque passe du WHILE ex:
${"gps".$i}= $data2;
$i = $i+1;
echo $gps1 .<br/>;
echo $gps2 .<br/>;
echo $gps3 .<br/>;
puis je fait mes nouvelles requêtes sur les variable $gps
mais je n'arrive pas à l'imbriquer

Merci

Re: problème de requête dans un WHILE

par sirakawa » 30 nov. 2013, 10:30

avant tout, il faut passer de mysql à mysqli ou pdo (mysql est obsolète et sera abandonné).
As-tu tenté d'afficher la requête, de la copier et de la coller dans phpmyadmin ou équivalent? Souvent, ça aide à comprendre...

problème de requête dans un WHILE

par davleo » 30 nov. 2013, 05:00

Bonsoir à tous,
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{ } } ?>