Pb avec imbrications de requete select SQL

Pb avec imbrications de requete select SQL - PHP - Programmation

Marsh Posté le 07-12-2007 à 18:17:37    

Bonjour,
 
je travaille sur de la cartographie en ligne, je dispose de deux tables sql
l'une est une matrice raster d'environ 40.000 enregistrements qui est lié a une table avec les 150 communes. le champs qui permet de lier les deux table est un numéro de commune.
par exemple un pixel a une paire de coordonnée (x,y) et un code de la commune qu'il occupe. dans la table commune j'ai la liste des communes (avec leur code) et un ensemble de variables telles que la population, la surface de foret ...
 
je veux coloré chaque pixel de la matrice en fonction de la variable situé dans la table commune.
 
 

Code :
  1. //la requête SQL qui va cherche la position du pixel et la commune
  2. $sql = 'SELECT * FROM raster';
  3. $req = mysql_query($sql);
  4. while($data = mysql_fetch_assoc($req))
  5.   {
  6.     $insee = $data['CODE'];
  7.     $sql2 = 'SELECT VAR1 FROM lieux WHERE ID ='.$insee;
  8.     $req2 = mysql_query($sql2);
  9.     $donnee = mysql_fetch_assoc($req2);
  10.                 if ($donnee < $long_classe)
  11.                     {
  12.                     $couleurtour = ImageColorAllocate ($im2, 255, 175, 175);
  13.                     ImageSetPixel ($im2, $data['XPOS']*2, $data['YPOS']*2, $couleurtour);
  14.                     ImageSetPixel ($im2, $data['XPOS']*2+1, $data['YPOS']*2, $couleurtour);
  15.                     ImageSetPixel ($im2, $data['XPOS']*2, $data['YPOS']*2+1, $couleurtour);
  16.                     ImageSetPixel ($im2, $data['XPOS']*2+1, $data['YPOS']*2+1, $couleurtour);
  17.                     }
  18.                 if ($donnee > $long_classe)
  19.                     {
  20.                     $couleurtour = ImageColorAllocate ($im2, 255, 100, 100);
  21.                     ImageSetPixel ($im2, $data['XPOS']*2, $data['YPOS']*2, $couleurtour);
  22.                     ImageSetPixel ($im2, $data['XPOS']*2+1, $data['YPOS']*2, $couleurtour);
  23.                     ImageSetPixel ($im2, $data['XPOS']*2, $data['YPOS']*2+1, $couleurtour);
  24.                     ImageSetPixel ($im2, $data['XPOS']*2+1, $data['YPOS']*2+1, $couleurtour);
  25.                     }
  26.   }


 
explication :  
dans la table raster
[CODE] = code commune du pixel
[XPOS] = cordonnee x du pixel
[YPOS] = cordonnee y du pixel
dans la table lieux
[ID] = code commune
[VAR1] = population
variables :
$long_classe = borne arbitraire pour séparer la série population
 
enfin le problème c'est que tous les enregistrements population sont considérés comme =0 lors de la génération de l'image. j'ai alors une belle carte toute rose alors que je devrais avoir quelques communes rouges
si ça vous interresse voila le lien de mon image
http://lesgitesdumarduel.com/graph/raster.php
 

Reply

Marsh Posté le 07-12-2007 à 18:17:37   

Reply

Marsh Posté le 07-12-2007 à 18:50:43    

$donnee est un tableau, donc tes tests ne devraient ils pas plutôt être
 

Code :
  1. if ($donnee['VAR1'] < $long_classe)
  2.   {
  3.    ...
  4.   }
  5. if ($donnee['VAR1'] > $long_classe)


 
?

Reply

Marsh Posté le 07-12-2007 à 18:58:19    

J'ai essayé cette solution mais ça ne donne rien. De plus je lui dit SELCT VAR1 donc apriori pas besoin de $donnee[...].
Mais dans le doute j'ai essayer et toujours rien

Reply

Marsh Posté le 07-12-2007 à 19:07:22    

choco1984 a écrit :

De plus je lui dit SELCT VAR1 donc apriori pas besoin de $donnee[...].

 

Ah bah si, mysql_fetch_assoc retourne un tableau ou un booléen, à priori ou pas, tu as besoin d'utiliser le résultat comme un tableau.

 

Tu as fait le debug standard (vérifier le contenu de $donnee et $long_classe avant le test via un print_r() ) ?


Message édité par naceroth le 07-12-2007 à 19:08:50
Reply

Sujets relatifs:

Leave a Replay

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