moteur de recherche et trait d'union

fersayn247
Invité n'ayant pas de compte PHPfrance

15 mai 2010, 10:56

Bonjour,

J'ai un petit moteur de recherche.
lorsque je recherche trait union:

Au lieu de chercher trait+union, il me retourne: trait-union.

Je n'arrive pas a trouver la solution pour qu'il retourne trait+union.

Quelqu'un a une idée?

Merci de votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

15 mai 2010, 11:19

Bonjour,

Il nous faudrait un petit peu de code pour trouver d'où vient ton problème...
Quand tout le reste a échoué, lisez le mode d'emploi...

fersay147
Invité n'ayant pas de compte PHPfrance

15 mai 2010, 11:23

Bonjour,
Voici le code de la recherche:
/* la recherche */
$content['mots'] = 'Recherche: '.stripslashes($_GET['recherche']);
$content['resultatRecherche'] = '';
if(isset($_GET['show']) && $_GET['show'] == 'all' && strlen($_GET['recherche']) == 1) {
$sql = "select id, mots,article from materiel_medical where UPPER(LEFT(article,1)) = '".strtoupper(addslashes($_GET['recherche']))."'ORDER by mots ";
} else {
$sql = "select id, mots,article from materiel_medical where UPPER(article) = '".strtoupper(addslashes($_GET['recherche']))."' OR UPPER(article) LIKE '%".strtoupper(addslashes($_GET['recherche']))."' OR UPPER(article) LIKE '".strtoupper(addslashes($_GET['recherche']))."%' OR UPPER(article) LIKE '%".strtoupper(addslashes($_GET['recherche']))."%' ";
}
$resultats = mysql_query($sql);
while($res = mysql_fetch_array($resultats)) {
$content['resultatRecherche'] .= '<h3><a href="site?id='.$res['id'].'">'.stripslashes($res['mots']).'</h3></a><br>'.stripslashes($res['article']).'';
}
if(mysql_num_rows($resultats) == 0) {
$content['resultatRecherche'] = '<li>Pas de résulat. Essayez avec d\'autres mots clés. </li>';
}
or si je cherche un mot ça va...mais si je recherche genre: table ronde; il va me donner table-ronde et pas table+ronde !?

Merci de ton aide

Mammouth du PHP | 661 Messages

15 mai 2010, 11:56

salut :: t'as envisager de passer ton formulaire en POST au lieu de l'envoyer en GET ?
sinon, il faudrait que tu fasse un traitement JS pour que ton champs soit transférer sans espace !...
puis ensuite, tu effectue un traitement inverse (restauration de l'espace) lors de la requête ..

fersayn 147
Invité n'ayant pas de compte PHPfrance

15 mai 2010, 13:51

J'ai essayé ça ne marche pas:
/* la recherche */
$content['mots'] = 'Recherche: '.stripslashes($_POST['recherche']);
$content['resultatRecherche'] = '';
IF(isset($_GET['show']) && $_GET['show'] == 'all' && strlen($_POST['recherche']) == 1) {
$sql = "select id, mots,article from materiel_medical where UPPER(LEFT(article,1)) = '".strtoupper(addslashes($_POST['recherche']))."'ORDER by mots ";
} else {
$sql = "select id, mots,article from materiel_medical where UPPER(article) = '".strtoupper(addslashes($_POST['recherche']))."' OR UPPER(article) LIKE '%".strtoupper(addslashes($_POST['recherche']))."' OR UPPER(article) LIKE '".strtoupper(addslashes($_POST['recherche']))."%' OR UPPER(article) LIKE '%".strtoupper(addslashes($_POST['recherche']))."%' ";
}
$resultats = mysql_query($sql);
while($res = mysql_fetch_array($resultats)) {
$content['resultatRecherche'] .= '<h3><a href="site?id='.$res['id'].'">'.stripslashes($res['mots']).'</h3></a><br>'.stripslashes($res['article']).'';
}
IF(mysql_num_rows($resultats) == 0) {
$content['resultatRecherche'] = '<li>Pas de résulat. Essayez avec d\'autres mots clés. </li>';
}

fersayn 147
Invité n'ayant pas de compte PHPfrance

15 mai 2010, 18:31

Personne pour m'aider?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

15 mai 2010, 19:14

Modération :
Les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 661 Messages

15 mai 2010, 19:15

J'ai essayé ça ne marche pas:
heuu ... c'est quoi qui marche pas ? ton formulaire envoi en post ? sinon, ça peux pas !

fersayn147
Invité n'ayant pas de compte PHPfrance

15 mai 2010, 19:44

Comment faire pour envoyer le formulaire en POST ?

j'ai fait ca:
/* la recherche */
$content['mots'] = 'Recherche: '.stripslashes($_POST['recherche']);
$content['resultatRecherche'] = '';
IF(isset($_GET['show']) && $_GET['show'] == 'all' && strlen($_POST['recherche']) == 1) {
$sql = "select id, mots,article from materiel_medical where UPPER(LEFT(article,1)) = '".strtoupper(addslashes($_POST['recherche']))."'ORDER by mots ";
} else {
$sql = "select id, mots,article from materiel_medical where UPPER(article) = '".strtoupper(addslashes($_POST['recherche']))."' OR UPPER(article) LIKE '%".strtoupper(addslashes($_POST['recherche']))."' OR UPPER(article) LIKE '".strtoupper(addslashes($_POST['recherche']))."%' OR UPPER(article) LIKE '%".strtoupper(addslashes($_POST['recherche']))."%' ";
}
$resultats = mysql_query($sql);
while($res = mysql_fetch_array($resultats)) {
$content['resultatRecherche'] .= '<h3><a href="site?id='.$res['id'].'">'.stripslashes($res['mots']).'</h3></a><br>'.stripslashes($res['article']).'';
}
IF(mysql_num_rows($resultats) == 0) {
$content['resultatRecherche'] = '<li>Pas de résulat. Essayez avec d\'autres mots clés. </li>';
}
C'est pas ça?
:(

fersayn147
Invité n'ayant pas de compte PHPfrance

15 mai 2010, 22:20

Voici le formulaire associé:

Code : Tout sélectionner

<form action="site" method="post"> <input type="text" name="recherche" value="<?=stripslashes($_POST['recherche']);?>" style="border: 1px solid #9CBAD6; background: white; width: 120px"> &nbsp; <input type="submit" value="Rechercher" style="border: 1px solid #9CBAD6; background: white; width: 80px"> </p> </form> <hr width="649px" color="#AD6FA2" align="left"></hr> <div class="results"> <p><?=$content['resultatRecherche'];?></p> </div>
mais ça ne marche pas non plus.... :(

Mammouth du PHP | 661 Messages

16 mai 2010, 02:09

dans la condition :
IF(isset($_GET['show']) && $_GET['show'] == 'all' && strlen($_POST['recherche']) ==  1) {
je ne trouve pas d'où tu récupère $_GET['show'] dans l'action de ton formulaire ...

le formulaire pointe t-il bien au bon endroit ?
<form action="site" method="post">
que contient : $content['mots'] ? et est-ce que ton contenu est différent de ce que tu as entré dans le champs de formulaire ? auquel cas, quelle est cette différence ?

fersayn147
Invité n'ayant pas de compte PHPfrance

16 mai 2010, 12:53

Oui le formulaire pointe au bon endroit.

Je ne comprend pas d'ou ça vient :(