bonjour a tous,
J'ai fait un moteur de recherche avec une belle pagination.
J'aimerais recuperer le resultat sql et mettre le mot du $_POST
en coloration dans le resultat de la requete.
est ce possible?
merci d'avance de votre aide
cordialement
bonjour a tous,
J'ai fait un moteur de recherche avec une belle pagination.
J'aimerais recuperer le resultat sql et mettre le mot du $_POST
en coloration dans le resultat de la requete.
est ce possible?
merci d'avance de votre aide
cordialement
Je pense que tu veux dire par ceci, le critères de recherche saisie par l'utilisateur?mettre le mot du $_POST
Dans ce cas si ton formulaire contient ceci:Tu vas récupérer ceci une fois posté comme cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Rechercher:<input type=text name=critere size=20>
Pour le code SQL, post nous ce que tu as déjà fait et on vera.
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "<b>".$_POST['']."</b>"
voila mon code sql :
et j'ai fait passer tout en session donc $_POST['truc'] = $_SESSION['truc']
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 <?php include('config.php'); if( isset($_GET['page']) && is_numeric($_GET['page']) ) { $page = $_GET['page']; } else{ $page = 1;} $nb_par_page = 10; $debut = ($page-1)*$nb_par_page; $reponse = mysql_query("SELECT * FROM trouver WHERE MATCH(titre,description,url) AGAINST('$mot1' IN BOOLEAN MODE) AND MATCH(langue) AGAINST('+$langue' IN BOOLEAN MODE) LIMIT $debut,$nb_par_page "); while ($donnees = mysql_fetch_array($reponse) ) { ?> <br> <u><?php echo $donnees['titre']; ?></u><br><?php echo $donnees['description'];?><br><a href="<?php echo $donnees['url']; ?>"><?php echo $donnees['url']; ?></a> <br><br> <?php } $resultat = mysql_query("SELECT * FROM trouver WHERE MATCH(titre,description,url) AGAINST('$mot1' IN BOOLEAN MODE) AND MATCH(langue) AGAINST('+$langue' IN BOOLEAN MODE) "); $nrows = mysql_num_rows($resultat) or die(mysql_error()) ; $totalDesMessages = $nrows; $nombreDePages = ceil($totalDesMessages / $nb_par_page) ; echo "<br><br>"; if($debut>0) { echo "<a href=resultat.php?page=".($page-1)."><<</a> "; } for ($i = 1 ; $i <= $nombreDePages ; $i++) { if($i==$page) { echo ' <font color="#CC0033"> ['.$i.'] </font> '; } else { echo ' <a href="resultat.php?page='.$i.'">'.$i.'</a> '; } } if(($debut+$nb_par_page)<$nrows) { echo "<a href=resultat.php?page=".($page+1).">>></a>"; } echo "</center>"; mysql_close(); ?>
![]()
bhe il suffit de faire un
non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 str_replace($_POST['truc'], '<font color="red">'.$_POST['truc'].'</font>', $resultat_de_la_requete);
oui j'ai essayé mais sa ne me renvoie pas le mot dans le resultat en couleur
d'une aurai pas une autre solution
merci![]()
p'tet en essayant de mettre trim() zutour des variables (pour supprimer les espaces)... Car y'a pas de raison que ça ne marche pas !
str_replace(trim($_POST['truc']), '<font color="red">'.trim($_POST['truc']).'</font>', $resultat_de_la_requete);
A moins qu'il n'y ai plusieurs mots dans ta recherche, of course
ben oui sa doit etre par ce qu'il ya plusieus mot dans ma recherche ,
mais comment proceder alors?
![]()
![]()
Ca depend de ta recherche... si c'est une recherche par exepression, ça ne devrait rien changé. Si c'est une recherche mot par mot (donc que tu tests chaque mots dans la requete SQL), alors faut faire la manip mot par mot...
recherche : voiture rouge
sql : select * from texte where lower(texte) like "%'.mysql_escape_string('voitre').'%" or lower(texte) like "%'.mysql_escape_string('rouge').'%"
a ce moment, tu créé 2 tableaux de mots clefs (explode(' ', $_chaine)), tu rajoute les balises <font> autour de chaque mots du 2e tableau et tu fais ton str_replace en utilisant des tableaux en parametre...
Pour les test, colle des strtolower() un peu partout, ça peut jouer aussi !
c'est peut etre du au fait que je fait ma recherche en fulltext mode boolean
non?
C'est pas faux (<- private joke pour ceux qui connaissent Kaamelott)recherche en fulltext mode boolean
Blague a part, c koi fulltext mode boolean ? tu stock tes valeurs en binaire ?
ben recherche fulltext c'est une recherche en texte entier (avec des phrases)
et le mode boolean est attacher a la recherche fulltext c'est pour avoir plus de precision quand a la recherche de la phrases, c'est a dire avec des operateurs lier au mode fulltext de mysql
ex>,<,*,+,-)
voila
up je n'arrive pas a distinguer la phrases rechercher dans le resultat
comment pourrais je faire
ps: si tu veut plus d'info regarde la doc mysql fulltext
t'as coller du trim et strtolower partout ? parce que ça devrait quand meme marcher !
oui trim strolower explode mais sa ne marche toujours pas
tu n'aurai pas une autre solution stp
merci![]()
j'ai fait sa mais ça ne marche pas
quelqu'un aurai une autre solution svp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 strtolower(trim($reponse)); explode(' ', trim($reponse)); strtolower(trim($mot1)); explode(' ', trim($mot1)); str_replace(trim($mot1), '<font color="#0066FF">'.trim($mot1).'</font>', trim($reponse));
merci d'avance![]()
strtolower, trim et explode retournent un resultat mais ne modifient pas les parametres que tu leurs passe
$reponse = strtolower(trim($reponse));
j'ai fait ce que tu m'a dit mais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\resultat.php on line 105
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $reponse = strtolower(trim($reponse)); $reponse = explode(' ', trim($reponse)); $reponse = str_replace(trim($mot1), '<font color="#0066FF">'.trim($mot1).'</font>', trim($reponse));![]()
c'est au niveau de ta requete qu'il y a un soucis...
Tu serais pas en train d'essayer de faire un traitement direct sur ta requete avant que cette derniere n'ai été traité ? parce que c'est sur le resultat de la requete qu'il faut le faire...
Plus de détail sur ton probleme dans ma signature
Partager