Bonjour,
aujourd'hui j'ai fait un module de recherche plus au moins approfondi, j'ai fait ma requete SQL tous ce passe plus au moins bien lorsque je rempli tous les champs, mais quand je ne rempli pas un champ sa bloque sa me renvoie rien, j'aimerai effectuer une recherche avec ou sans critéres, voici le module:

Voici mon code (image):

Voici mon code (texte):

    public function search($name, $age, $taille, $poid, $ville, $sexe, $boobs, $couple, $ethnic, $orientation) {
        $db = $this::getInstance();
        $p_age = explode('-', $age);
        $p_taille = explode('-', $taille);
        $p_poid = explode('-', $poid);

        $age_1 = $p_age[0];
        $age_2 = $p_age[1];

        $taille_1 = $p_taille[0];
        $taille_2 = $p_taille[1];

        $poid_1 = $p_poid[0];
        $poid_2 = $p_poid[1];

        $sql = $db->query(
            "SELECT * FROM users_escort INNER JOIN users 
            WHERE users.couple = '".$couple."'
            AND users.lastname LIKE '%$name%'
            AND users_escort.age BETWEEN $age_1 AND $age_2
            AND users_escort.size BETWEEN $taille_1 AND $taille_2
            AND users_escort.weight BETWEEN $poid_1 AND $poid_2
            AND users_escort.gender = '".$sexe."'
            AND users_escort.boobs_size = '".$boobs."'
            AND users_escort.ethnic = $ethnic
            AND users_escort.city = $ville
            AND users_escort.sexual_orientation = '".$orientation."'
            AND users_escort.user_id = users.id
            "
        );
        while($data = $sql->fetch(PDO::FETCH_OBJ)) {
            $search[] = $data;
        }
        return $search;
    }

Merci de bien vouloir m'aider.

5 réponses


Grafikart
Réponse acceptée

Il faut rajouter des conditions et construire ta requête en fonction car sinon tu va avoir des

AND users_escort.city = AND users_escort.ethnic = 

Ce qui n'est pas valide

MehdiWEB
Auteur

Si le champ et vide, je devrais mettre quoi aprés le égal?

Dans ce cas, ne mettez pas la conditions si le champ est vide.

Grafikart te parle de faire ce genre de chose

$sql = "SELECT * FROM table WHERE ";
if condition
    $sql.= .....
elseif
    $sql.=...
 else 
    $sql.=....

Tu check quelle critères sont demandés et en fonction de ça tu construis ta requête SQL