[between sql] Une valeur NULL ?

Mammouth du PHP | 965 Messages

14 févr. 2008, 12:38

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 ?
:?

ViPHP
ViPHP | 5924 Messages

14 févr. 2008, 13:30

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…

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

14 févr. 2008, 15:09

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;
}

Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

14 févr. 2008, 16:44

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 965 Messages

19 févr. 2008, 11:03

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]

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

19 févr. 2008, 12:32

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);