Codage de requête en fonction du nombre de variables

Répondre
i M@N
le 03/03/2004 à 11:08
i M@N
Hello !

Je fais un site de commande en ligne et j'ai un p'tit souci avec une requête.

A la base la requête c'est ça :
<?php 
$sql = 'SELECT * FROM catalogue WHERE format LIKE "%'.$format.'%" AND label LIKE "%'.$label.'%" AND artiste LIKE "%'.$artiste.'%" AND riddim LIKE "%'.$riddim.'%" AND type LIKE "%'.$type.'%" ORDER BY format,label,riddim,artiste LIMIT '.$debut.','.$nb_affichage_par_page.'';
?>

Ce qui donne une url comme ça si on choisit juste le type :

index.php?page=35&format=&label=&artiste=LUCiANO&riddim=&type=DANCE+HALL

En fait j'ai un formulaire avec 5 champs en méthode GET et je voudrais que selon le nombre de champs renseignés, la requête change et ne select que la où les champs sont renseignés. Ainsi l'url ne comporterait que ces variables :

index.php?page=35&artiste=LUCiANO&type=DANCE+HALL

J'ai commencé à faire ça :
<?php 
$sql = 'SELECT * FROM catalogue WHERE ';
if ($format != "") {
$sql = $sql.'format LIKE "%'.$format.'%" ';
}
if ($label != "") {
$sql = $sql.'label LIKE "%'.$label.'%" ';
}
if ($artiste != "") {
$sql = $sql.'artiste LIKE "%'.$artiste.'%" ';
}
if ($riddim != "") {
$sql = $sql.'riddim LIKE "%'.$riddim.'%" ';
}
if ($type != "") {
$sql = $sql.'type LIKE "%'.$type.'%" ';
}

$sql = $sql.'ORDER BY format,label,riddim,artiste LIMIT '.$debut.','.$nb_affichage_par_page.'';
?>

Mais j'arrive pas à faire en sorte que le AND disparaisse si il n'y a qu'une seule variable ou si elle est la première dans l'url.

Doit y avoir une solution mais j'avoue que je cale.

Si quelqu'un a une idée, ce serait bien aimable de m'inspirer ...

@+...
One Love, One Heart, One Unity.
LA GLOBULE
le 03/03/2004 à 11:32
LA GLOBULE
Suffit d'insérer un compteur pour voir ou tu en es.

Si le ocmpteur vaut 0, tu ne mets pas de AND, et sinon, ben tu mets un AND.
i M@N
le 04/03/2004 à 10:06
i M@N
Hello !

Bon bah je sais pas où le mettre ce compteur ... pis je lui fait compter quoi aussi ?

Au secours LA_GLOBULE !!

@+...
One Love, One Heart, One Unity.
LA GLOBULE
le 04/03/2004 à 12:32
LA GLOBULE
Ben faut compter le nombre de conditions que tu as dans ton WHERE (si tu es à la premiere condition, tu mets pas de AND, et sinon, ben tu mets un AND).

(Le code posté par ce membre étant trop long, il a été automatiquement inséré dans le wall. Pour le voir, veuiller clicker sur [lien=http://www.lephpfacile.com/wall/lire_wall.php?wall=1194]ce lien[/lien])
4sky
le 10/03/2004 à 15:05
4sky
Arf, je capte pas tout ton codes :/
$i est défini ou, à la base ? il est = a quoi ? (j'ai vu qu'il était défini au début, mais dans le cadre d'un code utiliser concretemnt.)
i M@N
le 10/03/2004 à 16:12
i M@N
Hello !

Tiens ... je l'avais oublié ce post ...

En fait j'ai essayé mais ça n'a rien donné, puisque dans l'url je voyais toujours toutes les variables même les vides. :-/

@+...
One Love, One Heart, One Unity.
LA GLOBULE
le 10/03/2004 à 16:18
LA GLOBULE
Si tu as un formulaire get, c'est normal.

Des que tu soumets un formulaire, les variables sont initialisées.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours