Problème avec une requête SQL

Fermé
zgaw_1987 Messages postés 15 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 12 mai 2011 - 14 déc. 2010 à 02:27
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 14 déc. 2010 à 14:57
Bonjour,



Je suis actuellement confronté à un problème avec une requête SQL. Sur une page, un utilisateur à plusieurs champs de recherches:
-type -adresse -prix....
Ces champs ne sont pas obligatoires ! Donc par exemple un utilisateur saisi juste le "type" et clique sur recherche.
On arrive sur une autre page de résultat et là, j'aimerais faire le teste seulement sur le "type".
Merci

3 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 009
14 déc. 2010 à 14:57
Bonjour,

Je te suggères de construire ta requête en concaténant des chaînes de caractères, en fonction des champs remplis.

Par exemple, pour type, adresse et prix :
function getCritere($champ, $valeur, $operateurBooleen, $premier)
{
    resultat = '';
    if ($valeur != '')
    {
        if (!$premier)
            $resultat = " $operateurBooleen ";
        $resultat .= " $champ = '$valeur'";
    }
    return $resultat;
}

$prix = (isset($_POST['prix'])) ? $_POST['prix'] : '';
$type = (isset($_POST['type'])) ? $_POST['type'] : '';
$adresse = (isset($_POST['adresse'])) ? $_POST['adresse'] : '';

$clauseWhere = getCritere('prix', $prix, 'AND', true);
$clauseWhere .= getCritere('type', $type, 'AND', ($clauseWhere == ''));
$clauseWhere .= getCritere('adresse', $adresse, 'AND', ($clauseWhere == ''));

if ($clauseWhere != '') $clauseWhere = ' WHERE'.$clauseWhere;

$sqlQuery = "SELECT * FROM table $clauseWhere";
...


Voilà :)

Xavier
1
salam,
suivant votre cas, vous aurrez besoin de plusieurs requêtes SQL; chaque cas avec sa requête (en testant la disonibilité d'info dans les champs);
@+
0
salam,
suivant votre cas, vous aurrez besoin de plusieurs requêtes SQL; mais bien sûr une (1) seulement sera executée; en testant la disponibilité d'info dans les champs à saisir, chaque cas correspond à une requête bien precise.
@+
0
zgaw_1987 Messages postés 15 Date d'inscription samedi 19 septembre 2009 Statut Membre Dernière intervention 12 mai 2011
14 déc. 2010 à 14:31
Bonjour;
merci pour votre réponse. je fait le recherche selon 5 critère et cela veut dire qu'il me faut 32 requette sql???
est ce que c'est logique?
merci
0