2014-07-02 1 views
0

J'ai besoin d'aide avec un script qui recherche 8 champs différents dans la même table, mais je veux qu'il donne également un résultat si un ou trois paramètres ne sont pas recherchés. J'utilise PHP et MySql et j'ai essayé de faire mon chemin avec cela depuis très longtemps et maintenant je me tourne vers vous experts ici. J'utilise à la fois des boîtes de sélection et des boîtes de tic. Pouvez-vous s'il vous plaît m'aider avec cela.Besoin d'aide pour la recherche de mon sql

Select * FROM mymembers WHERE 
country = $country AND 
gender = $gender AND 
haircolor = $haircolor AND 
hairlength = $hairlength AND 

Le problème vient quand l'un de ces derniers n'a pas de résultat ..... ????? S'il vous plaît aider Carsten

+0

Vérifiez manuellement que ** select ** ou ** case à cocher ** sont tous sélectionnés, puis utilisez variable pour ajouter des conditions avec votre clause 'WHERE' – Ranjith

+0

Cette question semble être hors sujet car elle manque d'un niveau de recherche de base . – Strawberry

Répondre

0

Construisez votre SQL en utilisant PHP. Vérifiez si les variables ne sont pas vides, puis ajoutez-les.

E.g. Assurez-vous d'échapper toutes les variables que vous utilisez dans votre SQL pour éviter les injections.

+0

Est-il possible d'utiliser cette approche lors de l'utilisation de tableaux? – Carsten

0

Vous avez dit: le veulent aussi donner un résultat si ou trois paramètres ne sont pas searced pour

Dans ce cas, vous devez utiliser le OR opérateur conditionnel.

code:

$query = "SELECT * FROM mymembers WHERE 
country = '" . $country . "' OR 
gender = '" . $gender . "' OR 
haircolor = '" . $haircolor . "' OR 
hairlength = '" . $hairlength . "'"; 

À mon avis, la meilleure façon d'interroger ce tableau est d'utiliser « cases », « boutons radio » et « select déroulant » pour affiner la recherche, parce que « le plus probable "les valeurs de country, gender, haircolor et hairlength sont prédéfinies et elles ne changeront probablement pas. Si c'est un "champ de recherche", alors vous pouvez compter sur l'opérateur LIKE, mais dans votre cas, les résultats seront terribles.

Questions connexes