Afficher: 15carac.avant. les mots clés. 15carac.apres

Eléphanteau du PHP | 14 Messages

13 févr. 2005, 12:32

Bonjour,

Voici le contexte : l'internaute tape un ou des mots clés, ils sont ensuite recherchés dans une table ou j'y ai mit la page et son contenu txt.
Je souhaite afficher la page [ça c'est ok] mais je voudrai aussi afficher ceci :
Exemple : on recherche : gagner des codes;
Je voudrai que pour chaque résultat trouvé, on affiche :
la page et dans la colonne 'contexte', les 15 caractères précédents ce qu'à tapé l'internaute, ainsi que les 15 caractères suivants ce qu'à tapé l'internaute.

Voici le code de la page :

Code : Tout sélectionner

<? session_start(); session_register('parrain'); $titre = "Rechercher"; include("inc/header.php"); ?> <font color="#333333" size=2 face="Arial, Helvetica, sans-serif"><img src="images/fle.gif" width=15 height=15> <strong>Rechercher</strong></font></td> </tr> </table></td> <td width="30">&nbsp;</td> <td width="350">&nbsp;</td> <td width="23" height="14">&nbsp;</td> </tr> </table> <font color="#333333" size="2" face="Arial, Helvetica, sans-serif"><br> <!-- table 1--> </font> <table width="450" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><p><font color="#333333" size="2" face="Arial, Helvetica, sans-serif"> <? if ($a == 1) { if (!empty($recherche)) { if (strlen($recherche) > 4) { mysql_connect($db_host, $db_user, $db_pwd); mysql_select_db($db_name); $req = mysql_query("SELECT page, mots_cles FROM recherche WHERE mots_cles LIKE '%$recherche%'"); $count = mysql_numrows($req); if ($count <1) { echo "<b>$count</b> résultat trouvé.<br><br>"; } else { echo "<b>$count</b> résultat(s) trouvés :<br><br>"; echo(' <tr> <td><p><b>Page(s)</b></p></td> <td><p><b>Contexte</b></p></td> </tr>'); $i=0; while($r=mysql_fetch_array($req)) { ?> <tr> <td align="left"><p><a href=<? echo $r['page']; ?>><? echo $r['page']; ?></a></p></td> <td align="left"><p></p></td> </tr> <? $i++; } } } else { echo "Vous devez entrer plus de 4 caractères.<br><br>"; } } else { echo "Vous devez entrer ce que vous recherchez.<br><br>"; } } ?> Vous recherchez une information sur notre site ? Vous êtes sur la bonne page !<br> Pour effectuer une recherche, taper des mots clés en mettant un espace entre chacun des mots clés.<br><br> <form method="post" action="rechercher.php?a=1"> <center>Votre recherche : <input type=text name=recherche size=20><br><input type=submit value="Rechercher"></center> </form> </td> </tr> </table> <? include("inc/footer.php"); ?>
Merci d'avance !
Cordialement, Eric Debra.

Eléphanteau du PHP | 14 Messages

13 févr. 2005, 19:09

Toujours pas 1 seul programmeur qui sait comment faire ? :shock:
Cordialement, Eric Debra.

ViPHP
ViPHP | 1380 Messages

13 févr. 2005, 19:20

Si je comprends bien, après l'accès à ta page et ses mots-clé, tu veux afficher 15 car.+le mot-cle + 15 car.

Si tu veux une césure propre (pas au milieu d'un mot) il te faudra utiliser les regex (surtout si il y a de la ponctuation).

Sinon, si tu veux exactement 15 car. un simple strpos() et substr() devraient suffire.

Es-tu familier avec les regex ou traitement de chaîne?
ripat

Eléphanteau du PHP | 14 Messages

13 févr. 2005, 19:26

Oui c'est ça ;) ben merci ! Je vais essayer de voir comment faire avec un strpos() et substr(), et quant aux regex, nan je ne suis pas familier avec lol je ne connais pas du tout ...

Merci encore ;)
Cordialement, Eric Debra.