Moteur de recherche interne!

Eléphant du PHP | 148 Messages

11 oct. 2008, 19:29

Bonsoir,

Actuellement je suis en train de coder un moteur de recherche pour les membres d'un de mes sites internet.

Le moteur de recherche comporte donc plusieurs éléments de recherche comme par exemple la ville de la personne ou encore son sexe...
if (!empty($_GET['login']) && !empty($_GET['age']) && !empty($_GET['sexe']) && !empty($_GET['ville'])) {
$query = "SELECT login FROM membre WHERE
login='".mysql_real_escape_string($_GET['login'])."' AND
datedenaiss <='".mysql_real_escape_string($AnnDeb)."' AND
datedenaiss >='".mysql_real_escape_string($AnnFin)."' AND
sexe ='".mysql_real_escape_string($_GET['sexe'])."' AND
ville ='".mysql_real_escape_string($_GET['ville'])."'";
}
else if (!empty($_GET['login']) && !empty($_GET['age']) && !empty($_GET['sexe'])) {
$query = "SELECT login FROM membre WHERE
login='".mysql_real_escape_string($_GET['login'])."' AND
datedenaiss <='".mysql_real_escape_string($AnnDeb)."' AND
datedenaiss >='".mysql_real_escape_string($AnnFin)."' AND
sexe ='".mysql_real_escape_string($_GET['sexe'])."'";
}
else if (!empty($_GET['login']) && !empty($_GET['age'])) {
$query = "SELECT login FROM membre WHERE
login='".mysql_real_escape_string($_GET['login'])."' AND
datedenaiss <='".mysql_real_escape_string($AnnDeb)."' AND
datedenaiss >='".mysql_real_escape_string($AnnFin)."'";
}
etc.....

Je suis pas sur que mon moteur de recherche soit vraiment bien codé, le script en lui même fonctionne parfaitement.

Alors j'aurai savoir comment les pro du PHP aurai codé ça.
J'ai juste besoin d'idée(quelques petits mots) le reste je le code moi même :D

Dans mon cas je teste si les champs son vide et j'utilise la bonne requête en fonction mais quand le moteur de recherche va être plus important qu'il y aura plein d'options j'ai peur que ça devienne un peu dur.
Modifié en dernier par Mathieu68 le 12 oct. 2008, 09:05, modifié 1 fois.

ViPHP
ViPHP | 4039 Messages

11 oct. 2008, 19:51

Tu te répètes beaucoup dans ton code. Dans un cas comme celui-ci, je regarde les données qui sont fournies, puis j'insère au cas par cas des conditions dans un tableau, dont je fais un implode pour générer la requête finale.

De plus, ce n'est pas un moteur de recherche, plutôt simplement de la consultation.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 148 Messages

11 oct. 2008, 23:08

J'ai un peu du mal à voir ou tu veux en venir! Aurais tu un bout de code que je puisse voir ça^^

ViPHP
ViPHP | 4039 Messages

11 oct. 2008, 23:44

Tout de suite la facilité.. :wink:

Quelque chose du style:
$query = "SELECT login FROM bOO_membre WHERE ";
$q_table = array();

if (!empty($_GET['login']))
   {
   $q_table[] = "login='".mysql_real_escape_string($_GET['login'])."'";
   }

/* etc.. */

$query .= implode(" and ", $q_table);
environ comme ça.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 148 Messages

12 oct. 2008, 00:03

Je vois merci beaucoup !

Tu viens de raccourcir mon code source de 200 lignes :D