Page 1 sur 1

[between sql] Une valeur NULL ?

Posté : 14 févr. 2008, 12:38
par agité
Bonjour,

je souhaterais faire une requete sql, comportant du PHP :
$Prix_min  = $_POST['Prix_min'];
$Prix_max = $_POST['Prix_max'];
et ces valeurs si post n'est pas envoyer sont :
$Prix_min = '%';
$Prix_max = '%';
Voila ensuite je veux faire ma requete :
SELECT machin FROM truc WHERE Id = 'machin' AND Prix_recherche BETWEEN '".$Prix_min."' AND '".$Prix_max."'
Voila mais il ne veux pas de mes joker :/

comment faire passer des valeurs NULL dans between ?
:?

Posté : 14 févr. 2008, 13:30
par Sékiltoyai
A part ne pas utiliser BETWEEN… :-/
Sinon, tu peux fixer min à 0 (tu as des prix négatifs ?…) et max au maximum de ta colonne, de toute façon aucun prix ne pourra dépasser les capacités de la colonne…

Posté : 14 févr. 2008, 15:09
par mere-teresa
Si tes POST ne sont pas envoyés, tu ne mets pas le BETWEEN, tout simplement ?
$sq l = "SELECT machin FROM truc WHERE Id = 'machin' ";
if($_POST['min'] != "")
{

    $sql .= "AND Prix_recherche BETWEEN '".$Prix_min."' AND '".$Prix_max;
}


Re: [between sql] Une valeur NULL ?

Posté : 14 févr. 2008, 16:44
par Truc
et ces valeurs si post n'est pas envoyer sont :
$Prix_min = '%';
$Prix_max = '%';
Pas sûr que les jokers fonctionnent avec BETWEEN non plus.

Posté : 19 févr. 2008, 11:03
par agité
Non en effet les Joker ne marchent pas avec le BETWEEN par contre mère théresa tu as trouvé la bonne méthode je pense j'ai fais une requête que concaténé avec plusieurs morceaux de php.

La méthode :
$Req1 = "SELECT * FROM machine WHERE Bidule = 'biduletruc'"
$Req2 = "BETWEEN 'prix1' AND 'prix2'


if($_POST)
{
$Req_Prix = mysql_query($Req1.$Req2);
}else{
$Req_Prix = mysql_query($Req1);
}

$Array_Prix = mysql_fetch_array($Req_Prix);

vala c vraiment basique pensait qu'il y'avait une autre méthode.

Merci je met [Résolu]

Posté : 19 févr. 2008, 12:32
par mere-teresa
Attention à ton test, $_POST est une super-globale, elle existe tout le temps !!!

if(!empty($_POST)) serait plus correct, et la manière que j'ai indiquée (tester chaque champ) est encore meilleure.

$Req1 = "SELECT * FROM machine WHERE Bidule = 'biduletruc'"
$Req2 = "BETWEEN 'prix1' AND 'prix2'


if($_POST)
{
$Req_Prix = mysql_query($Req1.$Req2);
}else{
$Req_Prix = mysql_query($Req1);
}

$Array_Prix = mysql_fetch_array($Req_Prix);