JeuWeb - Crée ton jeu par navigateur
[Résolu] Requête SQL au comportement bizarre - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Requête SQL au comportement bizarre (/showthread.php?tid=721)



[Résolu] Requête SQL au comportement bizarre - Stargate63 - 01-07-2008

Salut à tous Wink

Je vais donc attaquer directement dans le vif du sujet :

Pour mon jeu, je souhaite récuperer des données dans ma table, donc la valeur du champ "x" est comprise entre xmax et xmin (deux variables).

Voici donc ma requête actuelle :

Code PHP :
<?php 
$sql2
=mysql_query("SELECT * FROM flottes WHERE x BETWEEN $xmax and $xmin ORDER BY x DESC") or die (mysql_error());

Cette requête est suivie d'un while, qui liste les vaisseaux.

Mon problème est que cette requête se comporte bizarrement :
Lorsque je remplace $xmax et $xmin par des nombres, cela fonctionne. Lorsque j'insert ces variables dans ma requêtes, ben plus rien ne s'affiche.

J'ai essayé plusieurs choses : des ' ' autour des variables, mettre les variables sous la forme ' " . $xmax . " ' , mettre des ' ' autour du nom du champ.

Voilà, j'espère que vous pourrez m'aider,

Amicalement, Quentin.


RE: Requête SQL au comportement bizarre - Flag62 - 01-07-2008

Citation :la valeur du champ "x" est comprise
x c'est pas un champ c'est une colonne de ta table, enfin c'est peut être juste une histoire de vocabulaire...
Pense à mettre ton AND en majuscule (c'est une question de lisibilité)
Normalement le '$xmax' ou le ' ".$xmax." ' devrait marcher.
Vérifie que tes variables $xmax et $xmin sont bien remplies avant ta requête (un petit echo $xmax $xmin...)


RE: Requête SQL au comportement bizarre - Stargate63 - 02-07-2008

Pour le x, c'est pas faux, mais ce n'est qu'un problème de vocabulaire Smile
Je met les AND en majuscule d'habitude, je vois pas pourquoi en recopiant ma requête, j'ai mis ça en minuscule.
Non, le '$xmax' et ' ".$xmax." ' ne fonctionne pas.
J'ai bien fait un echo, mes variables sont remplies.

Merci de ton aide Wink


RE: Requête SQL au comportement bizarre - Kassak - 02-07-2008

Mhhh, peut être je vais dire nawak, mais quand tu recherches un chiffre dnas un intervalle, tu fais surement par exemple entre 1 et 5 ou 2 et 50, mais je pense pas que tu fasses entre 50 et 2 Wink

Essaye d'inverser '$xmax' et '$xmin', et rajoute des ' autour Wink


RE: Requête SQL au comportement bizarre - Ruz - 02-07-2008

et protéger les noms de colonnes et table avec des ``
sinon, un "die(mysql_error().'<br />requête : '.$req)" peut aider aussi... tu vois la requete envoyée... (a virer quand le jeu est en ligne ^^)
évidemment, faut changer ton appel...
un truc du genre:
$req='SELECT * FROM `flottes` WHERE `x` BETWEEN '.$xmin.' AND '.$xmax.' ORDER BY `x` DESC';
$res=mysql_query($req) or die (mysql_error().'<br />requête : '.$req);

ca aide vachement, ces petits trucs ^^


RE: Requête SQL au comportement bizarre - keke - 02-07-2008

je penche pour la simple inversion entre Xmin et Xmax dans ta requête ...

Kéké.
PS : Si ça se confirme, on pourrait dire que mysql c'est pas très évolué tout de même ...


RE: Requête SQL au comportement bizarre - Stargate63 - 02-07-2008

Merci pour tous vos conseils, l'inversion des deux variables dans la requête fonctionne parfaitemment Smile

C'est vrai que si j'avais été un peu plus logique sur ce coup, j'aurrais remarqué que chercher des nombres dans un intervalle de, par exemple, [50;2] était mois logique que dans l'intervalle [2:50].

Merci aussi à Ruz, je conaissais pas l'affichage de la requête sur la page, c'est une bonne idée Big Grin

Bref, re merci encore !

Quentin.


RE: Requête SQL au comportement bizarre - Kassak - 02-07-2008

Citation :PS : Si ça se confirme, on pourrait dire que mysql c'est pas très évolué tout de même ...

Bon c'est confirmé alors xD


(Stargate63, edit ton 1er post et met un ptit [réglé] dans ton titre Wink )