Recherche mot clé

Résolu/Fermé
goldy91 Messages postés 151 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 décembre 2014 - 27 janv. 2010 à 14:32
goldy91 Messages postés 151 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 décembre 2014 - 28 janv. 2010 à 14:42
Bonjour voila mon probleme est que je suis entrain de faire un site d'emploi et je voudrais inserer un moteur de recherche.Mon moteur de recherche marche mais a moitié enfaite une personne qui recherche quelq'un par ces competences ne peut le trouver que s'il elle tape les compétences exacte c'est a dire dans l'odre,voila ma requete :

$sql="select identifiant,titreposte,competence,villep,datedebutvalidite,dureevalidite,datecreation
from publication
where rep='oui'
and titreposte like \"%$ip%\"
and competence like \"%$cp%\"";

par exemple dans ma BDD j'ai dans competence (java html php css) si la personne tape java sa marche.Si elle tape java html sa marche.Mais si elle tape java css la sa ne marche plus alors comment je peut faire ?
A voir également:

31 réponses

zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
27 janv. 2010 à 14:53
Il y a 2 façons :
- la mauvaise (enfin la moins bonne) c'est de casser ta chaine de recherche, d'éliminer les mots inutiles, et de rechercher chaque mot : par exemple pour "java et css" tu fais un tableau "java", "et", "css", tu élimines le "et" non significatif (il te faut une table des mots exclus) et tu recherche "java" puis "css", tu donnes 1 point à chaque mot trouvé et tu tries tes résultats par score. C'est long à faire, il faut gérer les mots exclus, les invariables....
- la meilleure c'est de faire une indexation "fulltext" de ta BDD sur les champs qui t'intéressent et de faire une requête de type SELECT id, MATCH() as score FROM ... AGAINST ... ORDER BY score DESC et là c'est le bonheur !

un p'tit lien dans la doc de MySql pour te donner plus d'infos : http://dev.mysql.com/doc/refman/5.0/fr/fulltext-search.html
1
goldy91 Messages postés 151 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 décembre 2014 19
27 janv. 2010 à 15:24
comment tu fait dans mon cas j'ai essayé mais j'ai pas reussi voila ce que j'ai fait :

$sql="select identifiant,titreposte,competence,villep,datedebutvalidite,dureevalidite,datecreation
from publication
where match (competence) against ('.$cp.');

et dans ma bdd j'ai mis competence en fulltext ...
0
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
27 janv. 2010 à 15:48
SELECT identifiant, titreposte, MATCH (competence) AGAINST ('.$cp.'), competence , villep, datedebutvalidite, dureevalidite, datecreation
FROM publication

et si tu veux un tri par correspondance décroissante, ça sera :
SELECT identifiant, titreposte, MATCH (competence) AGAINST ('.$cp.') as score, competence , villep, datedebutvalidite, dureevalidite, datecreation
FROM publication
ORDER BY score DESC
0
goldy91 Messages postés 151 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 décembre 2014 19
27 janv. 2010 à 16:14
oui sa marche j'avais oublié de fermer les guillemets voila la soluce :

$sql="SELECT identifiant,titreposte,competence,villep,datedebutvalidite,dureevalidite,datecreation
FROM publication
WHERE MATCH (competence) AGAINST ('$cp')";
0

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

Posez votre question
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
27 janv. 2010 à 16:18
Ok, bon dév'
0
goldy91 Messages postés 151 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 décembre 2014 19
27 janv. 2010 à 22:00
et une dernier chose j'ai un probleme avec ma variable sessions enfaite j''utilise la variable session pour faire circuler mes informations mais au bout de la 2eme page sa ne marche plus, sa se présente comme sa :
1er page :

session_start();


$id=$_GET['id'];
$_SESSION['id']=$id;

pour versifier si l'id a bien circuler je fait :

echo 'salut '.$_SESSION['id'].'';
et la sa marche bien mais sur la page suivante quand je le fait sa marche pas

2eme page :

session_start();

$id=$_SESSION['id'];
echo ' salut '.$id.' ';

pourtant aucune erreur apparait il y a juste écrit salut
donc d'où peut venir l'erreur ???
0
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
28 janv. 2010 à 09:45
Je ne suis pas super fort en variables de session, j'aime bien la méthode GET ou les cookies mais je ne vois pas d'erreur flagrante ici

quand tu fais un "echo" il n'y a pas besoin de placer un '' après ta variable.

Pour le debug essaie ça en page 1 :
session_start();
$id=$_GET['id'];
$_SESSION['id']=$id;
echo 'salut '.$_SESSION['id'].' : '.session_id();

et en page 2 :
session_start();
echo 'salut '.$_SESSION['id'].' : '.session_id();
0
goldy91 Messages postés 151 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 décembre 2014 19
28 janv. 2010 à 10:42
euh sa me fait un truc bizarre ,sur la 1er page sa me fait :

salut 43:307398701c1a9f177c029eeb9f464203

43 étant l'id que j'ai cliqué

et sur la page 2 :

salut :be6d17f8d97cd1abec2c7b36045f1cf2

c'est quoi le probleme ??
0
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
28 janv. 2010 à 11:17
session_id() te retourne l'identifiant de la session en cours, normalement les 2 valeurs sont les mêmes, là tu changes de session entre page1 et page2, sur page2 essaie :

echo 'avant-salut '.$_SESSION['id'].' : '.session_id();
session_start();
echo 'apres-salut '.$_SESSION['id'].' : '.session_id();

pour voir si ce n'est pas ton session_start() qui pose problème... selon les configurations du serveur, il y a un paramètre session.autostart ou quelque chose comme ça qui fait qu'il ne faut pas démarrer de sessions manuellement
0
goldy91 Messages postés 151 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 décembre 2014 19
28 janv. 2010 à 11:29
voila ce que sa fait sur la page 2 :

avant-salut :apres-salut :7445638469ba30c936390dd9b484bcf0
0
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
28 janv. 2010 à 11:39
donc ta session n'est pas démarrée automatiquement....

et si tu demandes :
en page 1 :
session_start();
$id=$_GET['id'];
$_SESSION['id']=$id;
echo 'salut '.$_SESSION['id'].' : '.SID;

et en page 2 :
if(isset($_COOKIE["PHPSESSID"]))
{
session_start();
echo 'salut '.$_SESSION['id'].' : '.SID;
}
else
{
echo 'pas de session active';
}


Si ça ne donne toujours rien de concluant, lit https://www.php.net/manual/fr/session.idpassing.php ... peut-être que tu n'utilises pas de cookie pour passer ton identifiant de session
Cela dit si tu utilises des cookies pour passer ton identifiant de session pourquoi tu n'utiliserais pas de cookies pour passer ta valeur ? setcookie('variable', 'valeur', time()+3600) pour créer un cookie valable une heure
0
goldy91 Messages postés 151 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 décembre 2014 19
28 janv. 2010 à 11:49
non toujours pas voila ce que sa donne en page 1:

salut 43:PHPSESSID=71e9b540b04c2a68adfc1ee348877b52

et en page 2 :

pas de session active
0
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
28 janv. 2010 à 11:55
c'est donc que ton cookie d'identifiant de session n'arrive pas à page2
- soit tu n'utilises pas les cookies pour identifier les sessions,
- soit ton navigateur n'accepte pas les cookies

tu peux passer ton id de session en paramètre $_GET à page 2 en appelant dans page1
'page2.php?'.SID

pour éviter ça, je cite "PHP est capable de faire cela de manière transparente, lorsqu'il est compilé avec l'option --enable-trans-sid. Si vous activez cette option et que l'option d'exécution session.use_trans_sid est activée, les URLs relatives seront modifiées pour contenir l'identifiant de session automatiquement. " il suffit donc d'activer cette option pour que les appels à 'pageXXX.php' soient automatiquement transformés en 'pageXXX.php?session_name=sd23154wc654ze897c'
0
goldy91 Messages postés 151 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 décembre 2014 19
28 janv. 2010 à 12:05
euh j'ai pas trop compris j'ecrit quoi sur la page 1 et sur la page 2 ???
0
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
28 janv. 2010 à 12:12
dans page2, tu reviens aux sources :
session_start();
$id=$_SESSION['id'];
echo ' salut '.$id.' ';


et dans page 1 :
session_start();
$id=$_GET['id'];
$_SESSION['id']=$id;
echo '<a href="page2.php?'.SID.'">page 2</a>';

normalement l'identifiant de session se transmet dans l'url du lien hypertexte. Si ça marche comme ça c'est un bon début. Tu devras alors utiliser ton SID dans tous tes liens. Pour éviter d'avoir à le transmettre à la main, tu peux paramétrer ton serveur avec la directive session.use_trans_sid pour que le SID soit transmis automatiquement
0
goldy91 Messages postés 151 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 décembre 2014 19
28 janv. 2010 à 13:08
oui sa marche !!! l'id apparait bien dans la 2eme page
0
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
28 janv. 2010 à 13:13
Weepeeeeeeee !!!
0
goldy91 Messages postés 151 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 décembre 2014 19
28 janv. 2010 à 13:23
mais c'est pas bon car ici l'utilisateur doit cliqué sur page 2 et moi je veut qu'il clic sur envoyer ???
0
zcrew Messages postés 231 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 26 février 2010 25
28 janv. 2010 à 13:25
C'est juste le texte du lien qui te bloque ?

echo '<a href="page2.php?'.SID.'">envoyer</a>';
0
goldy91 Messages postés 151 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 décembre 2014 19
28 janv. 2010 à 13:29
non c'est pas sa enfaite voila comment sa se presente :

<form method="post" action="page2.php">

<input type="image" src="button6.jpeg"/>

voila donc des qu'il clic sur l'image il execute la page 2
0