Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/01/2011, 18h32   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2008
Messages : 81
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 81
Points : 10
Points : 10
Par défaut Rechercher dans tous les mots d'une table

Bonsoir !

J'aurais besoin d'aide pour une fonction de recherche ! Voici actuellement mon code :

Code :
1
2
3
4
5
6
7
8
9
FUNCTION rechercher_tests() {
IF (isset($_POST['rechercher']))
{
$reponse = mysql_query("SELECT * FROM testsv2 WHERE titre like '%".filtrer($_POST['recherche_jeux'])."%' ORDER BY titre");
while ($donnees = mysql_fetch_array($reponse) ) {
echo '<a href="tests.php?article='.$donnees['article'].'" >'.$donnees['titre'].'<br />'; 
                      }
}
RETURN;}
Comme vous pouvez le constater, je ne cherche que dans un champ précis (titre), or ce que je souhaite c'est que le mot cherché dans le formulaire serve aussi dans les autres champs, comme par exemple quelqu'un qui veut rechercher un développeur, il tape au hasard Insomniac et donc le jeu qui est développé par Insomniac Games s'affiche... Et si un jeu s'appelle Insomniac, ben qu'il apparaisse aussi, bref j'aimerais éviter une recherche trop centrée.

Comment modifier ce code ?

Merci !
Romanodi13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2011, 19h39   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 443
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 443
Points : 7 525
Points : 7 525
Il y a deux manières de résoudre ton problème :
Code :
1
2
3
4
5
6
SELECT	* 
FROM 	testsv2 
WHERE 	titre LIKE '%' || :recherche_jeux || '%'
	OR	developpeur LIKE '%' || :recherche_jeux || '%'
	OR	...
ORDER BY titre
Code :
1
2
3
4
SELECT	* 
FROM 	testsv2 
WHERE 	titre || '§' || developpeur || '§' || ... LIKE '%' || :recherche_jeux || '%'
ORDER BY titre
A toi de tester laquelle est la plus efficace.
Dans les deux cas, comme tu recherches une sous-chaine au milieu d'une colonne, aucun index ne sera utilisé par ton SGBD pour optimiser la recherche.
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2011, 21h30   #3
Candidat au titre de Membre du Club
 
Inscription : novembre 2008
Messages : 81
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 81
Points : 10
Points : 10
Ca marche ! Merci de ton aide !

PS : Je n'ai réussi à faire marcher que ta première méthode :p
Romanodi13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h47.


 
 
 
 
Partenaires

Hébergement Web