2010-07-13 4 views
0

que je dois faire un moteur de recherche où un utilisateur peut effectuer une recherche par nom, année, membre, année (champ texte)mysql et ou requête ensemble

recherche sera avec tout un champ ou recherche sera avec tout le champ ou recherche sera avec plus d'un champ -Comment il est possible en utilisant une seule requête ?? maintenant mon code est

$query="select * from fsb_profile where profile_name = '".$_REQUEST['name']."' and 
    profile_member= '".$_REQUEST['type']."' and profile_year= '".$_REQUEST['year']."' 
    and profile_course='".$_REQUEST['course']."' or profile_name = '".$_REQUEST['name']."' 
    or profile_member= '".$_REQUEST['type']."' or profile_year= '".$_REQUEST['year']."' 
    or profile_course='".$_REQUEST['course']."'"; 

-mais il ne fonctionne pas?

+1

Combien de ces questions allez-vous poser? – BoltClock

+0

duplication possible de [mysql et ou requête exécutée ensemble] (http://stackoverflow.com/questions/3237397/mysql-and-or-query-run-together) –

Répondre

3

Vous pouvez utiliser quelque chose comme ceci:

SELECT ... 
FROM ... 
WHERE (profile_name = '$profile_name' OR '$profile_name' = '') 
    AND (profile_member = '$profile_member' OR '$profile_member' = '') 
    AND ... 

Sinon, vous pouvez créer la requête dynamiquement en fonction des champs que vous avez. Dans tous les cas, vous devez éviter de placer directement les données de l'utilisateur dans une requête sans l'avoir d'abord échappée. Jetez un oeil à mysql_real_escape_string ou utilisez des paramètres de liaison.

0

Cela devrait faire l'affaire:

$query="select * from fsb_profile where (profile_name = '".$_REQUEST['name']."' and profile_member= '".$_REQUEST['type']."' and profile_year= '".$_REQUEST['year']."' and profile_course='".$_REQUEST['course']."') or (profile_name = '".$_REQUEST['name']."' or profile_member= '".$_REQUEST['type']."' or profile_year= '".$_REQUEST['year']."' or profile_course='".$_REQUEST['course']."'"); 

Ce vérifie si tous les champs sont définis et si oui, il retournera ce résultat, sinon si une combinaison des champs sont définis.