Bonjour,
C'est ma première question sur ce forum.
Bien que ma profession n'ait rien à voir avec l'informatique (je suis enseignant en droit), je m'intéresse au sujet et ai élaboré un site consultable ici http://www.laloupiote.net
Je suis en train d'essayer de me construire un moteur de recherche pour mon site dont l'essentiel des données est chargé dans une table avec, notamment, les champs : titre, description contenu.
Je veux faire des recherches sur une expression pour chacun de ses champs mais les distinguer en attribuant des valeurs différentes aux résultats de la recherche (si je trouve l'expression dans le titre, cela doit avoir plus de valeur que si je la trouve uniquement dans le contenu).
Donc j'attribue 4 points à l'id qui contient l'expression dans le titre et 1 point seulement si l'expression est contenue dans le contenu
Pour cela, je commence par faire un tableau associant un score, initialement fixé à 0 pour chaque ligne de ma base.
et ça marche ! mon test est bon !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 <?php include ("../include/loupiote.php"); // je suis connecté à la base de donnée et je cherche l'id de la dernière ligne enregistrée $reponse = mysql_query("SELECT id FROM pages ORDER BY id DESC LIMIT 1") or die(mysql_error()); $donnees = mysql_fetch_array($reponse); // à chaque ligne, j'attribue un score égal à 0 au départ $ids = 1; while ($ids<=$donnees['id']) { $score[$ids] = 0; //echo "le score de départ de $ids est de $score[$ids]<br>"; $ids=$ids+1; } //Je teste sur une valeur $id=5 echo "on affiche le test"; echo "<br>"; $id=5; echo $score[$id]; $score[$id]=$score[$id]+4; echo "<br>"; echo $score[$id]; echo "<br>"; $score[$id]=$score[$id]+6; echo $score[$id]; echo "<br>"; ?>
J'obtiens cet affichage
Ensuite, je lance ma recherche d'expressionon affiche le test
0
4
10
et là, ça ne va plus !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <?php echo "recherche pour $reqexpression<br>"; $recherche = mysql_query("SELECT id, titre FROM pages WHERE titre LIKE '%$reqexpression%'") or die (mysql_error()); // la requête, que maintenant vous devez comprendre ;) $score=4; echo "l'expression $reqexpression est passée à la recherche <strong>titre</strong> <br>"; while($donnees = mysql_fetch_array($recherche)) { $id=$donnees['id']; echo "le score de la page $id est:"; echo $score[$id]; echo "<br>"; $score[$id] = $score[$id]+$score ; echo "le nouveau score de la page $id est:"; echo "<br>"; echo $score[$id]; echo "<br>"; echo "recherche <strong>titre</strong> effectuée<br>"; } ?>
Pour une recherche portant sur l'expression "délégué du personnel", ça me donne ça
J'ai bien deux lignes qui sont repérées comme répondant à la recherche, maisrecherche pour délégué du personnel
l'expression n°1 pour la recherche n°1
l'expression délégué du personnel est passée à la recherche 1
recherche 1 effectuée
le score de la page 105 est:
Warning: Cannot use a scalar value as an array in /var/www/html/Cours/rechercher.php on line 165
le nouveau score de la page 105 est:
le score de la page 121 est:
Warning: Cannot use a scalar value as an array in /var/www/html/Cours/rechercher.php on line 165
le nouveau score de la page 121 est:
l
1) je n'arrive pas à récupérer la variable initiale que j'avais mis dans mon tableau ! Pourquoi est-ce que ça marche avant le lancement de la recherche et ça ne marche plus après ou au cours de la recherche ?
2) Qu'est-ce que c'est que cette histoire de "scalar value" ? Cela ne semble pas lié avec le premier problème, puisque je n'arrive pas à afficher ma variable avant même de chercher à la modifier ?
Voilà, en espérant que vous pourrez éclairer ma loupiote. J'ai passé ma journée d'hier à tenter de résoudre le problème mais sans succès !
Bien cordialement,
Partager