Fusionner 2 requetes sql


sff
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 336
Inscription: 2 Fév 2005

Fusionner 2 requetes sql

Message le Mer Fév 03, 2010 17:17

Bonjour,

Je suis actuellement en train de coder une petite map (carte) pour un jeu en ligne, mais j'ai un petit soucis. En effet dans mon code je me retrouve avec 2 requetes ( $mapquery et $elementsquery) . Mon but est d'utiliser le moins de ressouce possible. J'aimerais donc fusionner ces 2 requetes soit avec une jonction ou d'une autre mannière. Mais je ne sais vraiment pas comment faire. Voici le code :
Code: Tout sélectionner
$mapquery = mysql_query(sprintf("SELECT id, size_x, size_y  FROM %s_map WHERE id='%d' LIMIT 1", $mysql->pref, mysql_real_escape_string($select_map)));
      $maprow = mysql_fetch_assoc($mapquery);

      $x_start = -$maprow['size_x'];
      $x_end = +$maprow['size_x'];
      $y_start = -$maprow['size_y'];
      $y_end = +$maprow['size_y'];

      $debutx = $x_start;

      while($y_end >= $y_start) {
         
         $page .='<div style="height: 32px">';
         
         while($x_start <= $x_end) {
            
            if($x_start==$playerrow['longitude'] && $y_end==$playerrow['latitude'] AND $maprow['id'] == $playerrow['map']){

            $player ='<img src="images/avatars/carte/'.$playerrow['avatar'].'.gif" alt="">';

                }else{
            
$elementsquery = mysql_query(sprintf("SELECT type FROM %s_map_elements WHERE latitude='%d' AND longitude='%d' AND map='%d' LIMIT 1", $mysql->pref, mysql_real_escape_string($y_end), mysql_real_escape_string($x_start), mysql_real_escape_string($maprow['id'])));
                 $elementsrow = mysql_fetch_assoc($elementsquery);
            
            $player = (mysql_num_rows($elementsquery) != 0 AND $elementsrow['type'] == 0) ? null : '<input style="position: relative; top: 6px" type="radio" name="radio" value="'.$x_start.','.$y_end.'" onchange="submit(this.form)">';
            
            }
            
            $page .='<div style="width: 32px; height: 32px; float: left">'.$player.'</div>';   
            
            $x_start++;
         }
         
         $page .='</div>';

         $x_start = $debutx;
         $y_end--;
      }


Merci à ceux qui pourront m'aider.

zbug
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 30 Aoû 2009

Re: Fusionner 2 requetes sql

Message le Mer Fév 03, 2010 21:56

Si la table map_elements ne contient que les cases nécéesaires, cette requête devrait fonctionner :

Code: Tout sélectionner
SELECT type FROM map_elements AS me
JOIN map m ON m.id = me.map
WHERE m.id = $select_map
ORDER BY me.latitude, me.longitude


Sinon, si les cases peuvent dépasser size_x et size_y, il faut rajouter des conditions :

Code: Tout sélectionner
SELECT type FROM map_elements AS me
JOIN map m ON m.id = me.map
WHERE m.id = $select_map AND me.latitude < m.size_y AND me.latitude > -m.size_y  AND me.longitude < m.size_x AND me.longitude > -m.size_x
ORDER BY me.latitude, me.longitude


sff
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 336
Inscription: 2 Fév 2005

Re: Fusionner 2 requetes sql

Message le Jeu Fév 04, 2010 10:18

Je viens d'utiliser ta deuxième solution, mais je me retrouve avec une requete invalide : mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource

Voici la requete :

Code: Tout sélectionner
$mapquery = mysql_query("SELECT type FROM rpg_map_elements AS me JOIN rpg_map m ON m.id = me.rpg_map WHERE m.id = $select_map AND me.latitude < m.size_y AND me.latitude > -m.size_y  AND me.longitude < m.size_x AND me.longitude > -m.size_x ORDER BY me.latitude, me.longitude");
      $maprow = mysql_fetch_assoc($mapquery);

zbug
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 30 Aoû 2009

Re: Fusionner 2 requetes sql

Message le Jeu Fév 04, 2010 21:36

Je pense qu'il y a un erreur dans la requête SQL.

Pour debuguer et afficher l'erreur :

Code: Tout sélectionner
$mapquery = mysql_query("...") or die(mysql_error());


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités