[débutant] Récupérer un vecteur avec une seule requête.

Récupérer un vecteur avec une seule requête. [débutant] - SQL/NoSQL - Programmation

Marsh Posté le 19-11-2013 à 17:24:11    

Hello,
 
Je rencontre un problème, et je ne sais pas si ça vient de mon code ou du serveur qui interprète mal ma requête.
 
En php je lance ça:
 

Code :
  1. $polyX = mysql_query("SELECT X FROM polygone WHERE ID_poly = '$i'" );

 
 
La requête fonctionne mais elle me sort une seule valeur:
 
Alors que par exemple pour $i = 1 il y a 5 valeurs X.  
 
Donc $poly devrait être un vecteur de 5 valeurs.... mais ce n'est pas le cas.
 
merci =)
 
 
le code en détail:

Code :
  1. <!DOCTYPE html>
  2. <html>
  3.   <head>
  4.     <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
  5.     <meta charset="utf-8">
  6.     <title>Simple Polygon</title>
  7.     <style>
  8.       html, body, #map-canvas {
  9.         height: 100%;
  10.         margin: 0px;
  11.         padding: 0px
  12.       }
  13.     </style>
  14.     <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
  15. <?php
  16. include 'include/mysqlconnect.php';
  17. echo"<script>
  18. function initialize() {
  19.   var mapOptions = {
  20.     zoom: 5,
  21.     center: new google.maps.LatLng(24.886436490787712, -70.2685546875),
  22.     mapTypeId: google.maps.MapTypeId.TERRAIN
  23.   };
  24.   var bermudaTriangle;
  25.   var map = new google.maps.Map(document.getElementById('map-canvas'),
  26.       mapOptions);
  27. ";
  28. $max = mysql_query("SELECT MAX(ID_poly) FROM polygone" );
  29. $max = mysql_fetch_array($max);
  30. for ($i = 1; $i <= $max; $i++){
  31. echo "var triangleCoords = [
  32. ";
  33. $polyX = mysql_query("SELECT X FROM polygone WHERE ID_poly = '$i'" );
  34. $polyX = mysql_fetch_array($polyX);
  35. print_r ($polyX);
  36. $polyY = mysql_query("SELECT Y FROM polygone WHERE ID_poly = '$i'" );
  37. $polyY = mysql_fetch_array($polyY);
  38. $polyleng = count($polyX);
  39. for ($j = 0; $j <= $polyleng-1 ; $j++) {
  40. echo "new google.maps.LatLng($polyX[$j],$polyY[$j]),
  41. ";
  42. }
  43. echo " ];";
  44. echo" // Construct the polygon.
  45. ";
  46.   echo "polygon$i= new google.maps.Polygon({
  47.     paths: triangleCoords,
  48.     strokeColor: '#FF0000',
  49.     strokeOpacity: 0.8,
  50.     strokeWeight: 2,
  51.     fillColor: '#FF0000',
  52.     fillOpacity: 0.35
  53.   });
  54.   polygon$i.setMap(map);
  55. }
  56. ";
  57. }
  58. echo "google.maps.event.addDomListener(window, 'load', initialize);
  59.     </script>";
  60. ?>
  61.   </head>
  62.   <body>
  63.     <div id="map-canvas"></div>
  64.   </body>
  65. </html>


Message édité par popotitagluck le 19-11-2013 à 17:28:10
Reply

Marsh Posté le 19-11-2013 à 17:24:11   

Reply

Marsh Posté le 19-11-2013 à 17:49:50    

Déjà, j'écrirai la requête comme ça :
"SELECT X FROM polygone WHERE ID_poly = $i" (sans les quotes).
 
Le print_r, il t'affiche quoi ?
 
Tu pourrais poster plutôt le code HTML/JS générée, résultant de ton script php. Ca permettrait de voir si ton pb vient côté PHP ou Javascript.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-11-2013 à 17:58:34    

Alors j'ai enlevé les quotes, je précise aussi que j'ai lancer un print_r pour voir ce qu'il se passe quand le code est lancé.
 
le résultat de la partie qui nous intéresse (code source):
 

Code :
  1. <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
  2. <script>
  3. // This example creates a simple polygon representing the  polygone.
  4. function initialize() {
  5.   var mapOptions = {
  6.     zoom: 5,
  7.     center: new google.maps.LatLng(24.886436490787712, -70.2685546875),
  8.     mapTypeId: google.maps.MapTypeId.TERRAIN
  9.   };
  10.   var map = new google.maps.Map(document.getElementById('map-canvas'),
  11.       mapOptions);
  12.   // Define the LatLng coordinates for the polygon's path.
  13. var triangleCoords = [
  14. Array
  15. (
  16.     [0] => 34.731
  17.     [X] => 34.731
  18. )
  19. new google.maps.LatLng(34.731,36.72),
  20. new google.maps.LatLng(,),
  21. ];
  22. var polygon1 // Construct the polygon.
  23. polygon1= new google.maps.Polygon({
  24.     paths: triangleCoords,
  25.     strokeColor: '#FF0000',
  26.     strokeOpacity: 0.8,
  27.     strokeWeight: 2,
  28.     fillColor: '#FF0000',
  29.     fillOpacity: 0.35
  30.   });
  31.   polygon1.setMap(map);
  32. }
  33. var triangleCoords = [
  34. Array
  35. (
  36.     [0] => 40.939
  37.     [X] => 40.939
  38. )
  39. new google.maps.LatLng(40.939,-74.1365),
  40. new google.maps.LatLng(,),
  41. ];
  42. var polygon2 // Construct the polygon.
  43. polygon2= new google.maps.Polygon({
  44.     paths: triangleCoords,
  45.     strokeColor: '#FF0000',
  46.     strokeOpacity: 0.8,
  47.     strokeWeight: 2,
  48.     fillColor: '#FF0000',
  49.     fillOpacity: 0.35
  50.   });
  51.   polygon2.setMap(map);


 
Il y a bien qu'une seule valeur par PolyX, PolyY :(
 
est ce possible que le serveur soit mal configuré ? Car quand je lance la même requête sur phpmyadmin => j'obtiens bien un vecteur !


Message édité par popotitagluck le 19-11-2013 à 18:02:27
Reply

Marsh Posté le 20-11-2013 à 10:26:10    

Je vois déjà un pb, ton tableau (affiché par print_r) a 2 clés : l'une est 0 et l'autre X. Ca devrait aps plutôt être 0 et 1 comme clés :??:
 
Autre problème par rapport au faut que tu récupère qu'un seul point. En lisant l'aide en ligne concernant la fonction mysql_fetch_array ( http://www.php.net/mysql_fetch_array ), je pense que tu vas trouver rapidement ce qui cloche avec ton code php ;)...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-11-2013 à 15:02:04    

Yep le problème venait bien de mysql fetch array merci beaucoup

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed