Page 1 sur 1
enregistrer les rech. des visiteurs ?
Posté : 30 déc. 2010, 21:38
par ya du tonus
Bonjour,
J'ai développé (en grande partie grâce à vos conseils judicieux) un moteur de recherche qui permet aux visiteurs d'entrer un ou plusieurs mots dans un formulaire, et qui sélectionne dans une table les livres qui correspondent.
J'aimerais que la variable $mot_rechercher puisse aussi s'enregistrer dans une autre table pour que je puisse connaitre les recherches de mes visiteurs. Évidement si le mot clef existe déjà j'aimerais savoir le nombre de fois qu'il a été demandé.
Je sèche vraiment, merci de vos conseils toujours judicieux !
Re: enregistrer les rech. des visiteurs ?
Posté : 30 déc. 2010, 23:20
par xTG
Un simple insert conditionnel sur le résultat d'une requête select recherchant si le mot clé est déjà dans la table ? Qu'est ce qui te pose problème ?
Bien qu'il doit être possible de faire cela en une seule instruction mysql_query() mais j'avoue ne pas être assez doué en SQL pour faire du conditionnel.
On peut même mettre un système de nombre de recherche en ajoutant un champs de type entier et en l'incrémentant à chaque fois qu'on trouve le mot.
Re: enregistrer les rech. des visiteurs ?
Posté : 01 janv. 2011, 19:02
par yadutnous
Bon alors j'ai touvé une solution pour le décompte. Qu'en pensez vous ?
Mais il subsiste un problème, j'utilise un affichage par page des résultats, et évidement lorsque je change de page, la table se met à jour +1 alors qu'il s'agit de la même recherche ! Comment faire ? faut il utiliser une session sachant que les utilisateur ne s'identifient pas ?
Merci de votre aide a venir.
//fonction de count des keywods
$search = $_GET['search'];
if($search !="")
{
$r ="SELECT count(*) FROM search where keywords='".$search."'";
$q = mysql_query($r);
$count = mysql_result($q,0,0);
if($count == 0) {
$sql ="INSERT INTO search (count,keywords)
VALUES (1,'$search')";
$query2 = mysql_query($sql);
}
if($count != 0) {
$sql ="UPDATE search SET count = count+1 where keywords='".$search."'";
$query2 = mysql_query($sql);
}
}
//
Re: enregistrer les rech. des visiteurs ?
Posté : 01 janv. 2011, 22:24
par xTG
Attention la session n'implique en rien une authentification quelconque !
C'est juste une forme de stockage propre au visiteur.
Donc le mieux serait de stocker dans une variable de session le champs recherché.
Si au chargement de la page le champs recherché est différent de la variable de session dans ce cas c'est une nouvelle recherche et on incrémente.
Sinon c'est un changement de page et aucune incrémentation.
Re: enregistrer les rech. des visiteurs ?
Posté : 01 janv. 2011, 22:46
par ya du tonus
Merci pour ton aide mais là je sèche vraiment pourrais tu m'indiquer quel type de code je devrais utiliser ?
Re: enregistrer les rech. des visiteurs ?
Posté : 02 janv. 2011, 12:46
par xTG
session_start(); // première instruction du script
//....
if($search !="")
{
//...
if($count != 0)
{
if( isSet($_SESSION['search']) && $_SESSION['search'] != $search) || !isSet($_SESSION['search']) ) // la recherche est différente de la précédente OU c'est la première recherche de l'utilisateur
{
$sql ="UPDATE search SET count = count+1 where keywords='".$search."'";
$query2 = mysql_query($sql);
}
}
$_SESSION['search'] = $search;
}
//....
Re: enregistrer les rech. des visiteurs ?
Posté : 02 janv. 2011, 12:59
par yadutonus
Alors je pense avoir réussi. Je vous poste le code pour info mais aussi pour vérifications. Par contre je n'ai pas placé session destroy car jene sais pas ou le mettre ?
session_start();
//fonction de count des keywods
$search = $_GET['search'];
if( $_SESSION['rech'] !=$search and $search !="")
{
$r ="SELECT count(*) FROM search where keywords='".$search."'";
$q = mysql_query($r);
$count = mysql_result($q,0,0);
if($count == 0) {
$sql ="INSERT INTO search (count,keywords)
VALUES (1,'$search')";
$query2 = mysql_query($sql);
}
if($count != 0) {
$sql ="UPDATE search SET count = count+1 where keywords='".$search."'";
$query2 = mysql_query($sql);
}
$_SESSION['rech'] =$search;
}
//
Re: enregistrer les rech. des visiteurs ?
Posté : 02 janv. 2011, 13:09
par yadutonus
LOL nous avons presque fait le post au même moment !! Que penses-tu de ma solution ? Quelle est le différence avec la tienne ? merci
Re: enregistrer les rech. des visiteurs ?
Posté : 02 janv. 2011, 14:33
par xTG
La tienne évite des traitements inutiles, elle est mieux.
Mais il faudrait rajouter une vérification sur l'existence de la variable de session afin de ne pas se prendre un warning.

Re: enregistrer les rech. des visiteurs ?
Posté : 10 janv. 2011, 22:28
par Eartz
session_destroy est à utiliser au moment où l'utilisateur est supposé avoir quitté l'application ou lorsqu'il "revient au départ" (enfin ça dépend de ce que tu veux faire de l'appli).
Dans ton cas, j'ai l'impression que tu n'utilises qu'une seule variable de session ($_SESSION['rech']), alors pourquoi ne pas mettre un session_destroy lorsque l'utilisateur termine une recherche pour en commencer une autre ? (genre s'il quitte la page de résultats)
Néanmoins je ne pense pas que ça soit primordial pour ce code.
Sinon de toute manière le serveur termine de lui-même les sessions, par défaut au bout d'un certain temps d'inactivité ou à la fermeture du navigateur du visiteur.