Rechercher nb d'occurences ds un champs SQL [Résolu/Fermé]

Signaler
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
-
 hibout -
Bonjour,

Je cherche actuellement à créer une fonction de recherche, qui irait chercher un mot dans un champs d'une table SQL.

J'ai vu qu'on pouvait effectuer une recherche du nombre de champs qui contient la requete, mais je n'arrive pas à trouver le nombre de mots occurrents dans un champs donné ... Faut il faire une requete récursive pour cela, ou existe t il bien une fonction php pour cela ?

	$nb_resultats = mysql_query("SELECT COUNT(*) FROM sites WHERE valid='0' AND description LIKE '%$search%' ORDER BY id DESC");
	
		if (mysql_result($nb_resultats,0)) {
		echo '<br><span class="texte">Il y\'a <strong>'.mysql_result($nb_resultats,0).'</strong> résultats qui correspondent à votre recherche';
		if (mysql_result($nb_resultats,0)>15)
		echo ' - Affichage des 15 premiers résultats uniquement :';
		echo '</span><br><br>';
		} else {
		echo '<br><br><br><br><br><p class="texte" align="center"><strong>Désolé mais il n\'y aucun résultat pour votre recherche.</strong></p>';
		}
		
	$action = mysql_query(" SELECT * FROM sites WHERE valid='0' AND description LIKE '%$search%' ORDER BY out_c DESC LIMIT 15 ");



J'aimerai classer donc les résultats par nombre de mots trouvés dans le champs description ; subroutine à faire ou pas ... ?

6 réponses

Pour ceux que ca pourraient intéresser :

mysql_query(" SELECT * , MATCH (description) AGAINST ('%$search%') FROM sites WHERE valid='0' AND MATCH (description) AGAINST ('%$search%') LIMIT 30");

MATCH et AGAINST permets de faire des recherches d'occurences d'une expression dans une ou plusieurs tables d'une base (en mode fulltext), en triant les réponses dans l'ordre chronologique.
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 87786 internautes nous ont dit merci ce mois-ci

Messages postés
203
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
16 mars 2010
145
La fonction substr_count() permet de compter le nombre d'occurences d'une chaîne dans une chaîne.

Je ne crois pas qu'il soit possible de faire ça directement en SQL.
http://php.net/manual/fr/function.substr-count.php
le lien ver la fonction substr_count()
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
54
Je relance ma demande ... Meme un peu à une heure tardive :)
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
54
Oui mais le problème c'est que ca vas me donner des informations supplémentaires, mais ca ne permettra pas de faire le 'ORDER BY' en gros ... C'est ce que je recherche en fait :)
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
54
Un petit up au passage si quelqu'un à une idée ... ?
Messages postés
557
Date d'inscription
mercredi 26 mars 2008
Statut
Membre
Dernière intervention
23 avril 2015
54
Comme je peux pas éditer, je corriges : chronologique par "nombre d'occurrences" décroissante. Désolé.