par
Ryle » 27 nov. 2006, 13:07
Affiche donc ta requête avant de l'exécuter (ne serait-ce que pour vérifier ce qu'elle contient, peut être cela ne correspond pas à ce que tu attends d'après les paramètres passés)
Tu peux ainsi également la jouer dans mysql pour vérifier les résultats qu'elle te renvoi
Affiche également un petit quelque chose dans ta plétore de if(), tu verras qu'il passe dans beaucoup d'entre eux inutilement, et comme la requête est écrasée à chaque fois, seul le dernier if() contiendra la bonne requête.
Pourquoi ne pas simplement construire ta requête dynamiquement ?
$sqlCond = array();
$sql = "SELECT ... FROM ... "; // début de la requête
if(!empty($crit1)) // critère 1 non vide
$sqlCond[] = "crit1 = $crit1";
if(!empty($crit2)) // critère 2 non vide
$sqlCond[] = "crit2 = $crit2";
...
if(count($sqlCond)>0) // s'il ya des critères non vide, les sépares par un AND et complète la requête.
$sql.= " WHERE " . implode(" AND ", $sqlCond);
Y a d'autre façon de faire bien entendu

Affiche donc ta requête avant de l'exécuter (ne serait-ce que pour vérifier ce qu'elle contient, peut être cela ne correspond pas à ce que tu attends d'après les paramètres passés)
Tu peux ainsi également la jouer dans mysql pour vérifier les résultats qu'elle te renvoi :)
Affiche également un petit quelque chose dans ta plétore de if(), tu verras qu'il passe dans beaucoup d'entre eux inutilement, et comme la requête est écrasée à chaque fois, seul le dernier if() contiendra la bonne requête.
Pourquoi ne pas simplement construire ta requête dynamiquement ?
[php]$sqlCond = array();
$sql = "SELECT ... FROM ... "; // début de la requête
if(!empty($crit1)) // critère 1 non vide
$sqlCond[] = "crit1 = $crit1";
if(!empty($crit2)) // critère 2 non vide
$sqlCond[] = "crit2 = $crit2";
...
if(count($sqlCond)>0) // s'il ya des critères non vide, les sépares par un AND et complète la requête.
$sql.= " WHERE " . implode(" AND ", $sqlCond);[/php]
Y a d'autre façon de faire bien entendu :)