{PHP/MySQL} Recherche/Mots-clés populaires

Résolu/Fermé
Jeremy_me Messages postés 31 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 24 septembre 2009 - 20 août 2009 à 19:31
Jeremy_me Messages postés 31 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 24 septembre 2009 - 3 sept. 2009 à 20:51
Bonjour,

J'aimerais savoir comment faire, lorsque quelqu'un clique sur Rechercher de mon champs de recherche, ce mot s'ajoute à la base de donnée (jusqu'ici ca va) mais que la page affiche ensuite les mots-clés les plus populaire.
JE ne sais vraiment pas comment faire ca :S


Merci beaucoup de m'aider!

Jeremy
A voir également:

7 réponses

scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
21 août 2009 à 00:01
Fait une table avec deux attributs, le premier, le mot clés rechercher, le deuxième, un compteur qui s'incrémente à chaque fois que quelqu'un recherche ce mot clé.

Ensuite il te suffit de faire un select par ordre décroissant sur le compteur avec une limite de 5 pour afficher les 5 plus populaires par exemple.
0
Jeremy_me Messages postés 31 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 24 septembre 2009 1
21 août 2009 à 03:14
Bonjour,
Je te remercie!

Mais quel commande dois-je utilisé pour dire MySQL de vérifier si le mot est déjà présent et si tel est le cas, incrémenté de 1, et dans le cas contraire, créer l'entré et de mettre 1 comme valeur ?


Je te remercie beaucoup!


Jeremy
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
23 août 2009 à 17:41
Tu fais un SELECT sur le mot clé (par défaut stockes les tous en minuscules et sans les 's' finaux par exemple).

Si ce SELECT te retourne un enregistrement, c'est celui là que tu dois incrémenté, pour ce faire, tu fait un UPDATE en SQL sur l'enregistrement récupéré avec le SELECT précédemment.

Le cas contraire, s'il n'y a pas d'enregistrements pour ce mot clé, tu le crée avec la COMMANDE INSERT de sql et tu met son compteur par défaut à 1.

En gros :

$enregistrement = mysql_query("SELECT ...");

if(mysql_num_rows($enregistrement) > 0)
{
    mysql_query("UPDATE ... WHERE clé_primaire=$enregistrement['clé_primaire']");
}
else
{
    mysql_query("INSERT INTO ...");
}


Ne copie colle pas ce code, il faut encore que tu complète les requête, c'est juste les grosses lignes. De plus dans la première partie du if, n'oublie pas de récupérer le compteur d'enregistrement et de l'incrémenter de 1 puis de le mettre dans ton UPDATE.
0
Jeremy_me Messages postés 31 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 24 septembre 2009 1
23 août 2009 à 21:45
Oui, je te remercie beaucoup, j'essaie ca dans une vintaine de minutes... et si j'ai des problèmes je vous le ferez savoir.

Non t'inquiete je sais que je ne dois pas copier/coller le code xD

Serais-t-il préférable de faire un LIKE ? ou sa gâcherais encore plus les statistiques?

Merci encore
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jeremy_me Messages postés 31 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 24 septembre 2009 1
23 août 2009 à 23:59
Merci beaucoup, sa fonctionne!


Maintenant j'ai une autre question... J'hésite entre créer un nouveau sujet ou simplement le posté ici mais bon.


Dans ma table, j'ai le champs 'count' qui est utilisé pour calculé la popularité de la recherche.

Comment puis-je faiire por additionner TOUT les champs 'count' puis faire le count du mot actuel divisé par le count total...

Ou s'il existe une méthode plus facile et moins carnivore en matière de ressources serveur..

Je vous remercie, encore :)
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
26 août 2009 à 21:18
En SQL tu as la fonction SUM() qui fait ça.

Par exemple dans ton cas :

SELECT SUM(count) AS total FROM table_recherche


Du coup ça va te sortir un array et à l'index de la clé associative "total" tu trouvera la somme des valeurs du champs count de ta table.

Après te reste à le stocker dans une variable en php et le reste je suppose que tu sais comment faire pour faire un pourcentage sur le total ;) [(nbr / total)*100]

Bonne chance
0
Jeremy_me Messages postés 31 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 24 septembre 2009 1
3 sept. 2009 à 20:51
Merci! ;)

Ca fonctionne!
0