Formulaires & les quotes mysql recherche full-text

Garg
Invité n'ayant pas de compte PHPfrance

12 oct. 2005, 17:42

Bonjour,

J'ai créé un formulaire qui me permet de faire une recherche dans ma base de données.
Tout semble fonctionner sauf quand le mot recherché comment par une apostrophe dans ma base de données

Ex : "salade estivale d'agrumes", quand je rentre le mot clé salade ou estivale (ou les deux) il me retourne bien le titre en entier, mais lorsque je rentre agrumes il ne me retourne rien. Je me doute que cela viens de la simple quote.

comment faire pour qu'il "zappe" la quote et aille me rechercher agrumes


Mon code :

Formulaire :

Code : Tout sélectionner

<form action = "rec2.php" method="post"> Mots clés : <input type = "text" name = "nom"><br /> <input type = "submit" value = "Envoyer"> </form>


Récupération des données :

Code : Tout sélectionner

require("secure/connect.php"); $recup= stripslashes($_POST['nom']); if(empty($recup)) { echo("<center>Veuillez entrer au moins un mot clé</center>"); exit(); } $sql=mysql_query ("SELECT titre FROM fiche WHERE MATCH (titre) AGAINST ('$recup')" )or die (mysql_error()); while ($donnees=mysql_fetch_array($sql) echo $donnees['titre'].'<br>';



Si qq'un pouvait m'aider

ViPHP
ViPHP | 649 Messages

13 oct. 2005, 02:01

Dans ta bdd, devant tes apostrophes, tu ajoutes un anti-slash: \ comme ceci: \' . Mai s plus simple, quand tu insères quelque chose dans la bdd, tu mets addslashes() et pour l'afficher, tu mets stripslashes() comme c'est déjà fait. Oublie pas ton addslashes()! :wink:
Image

Mammouth du PHP | 1885 Messages

13 oct. 2005, 02:02

Je préfère mysql_escape_string() à addslashes()

:)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

ViPHP
ViPHP | 649 Messages

13 oct. 2005, 02:49

Parce que t'as pas besoin de faire tes stripslashes?
Image

Mammouth du PHP | 1885 Messages

15 oct. 2005, 06:51

Normalement, lorsque tu fais l'insertion, tu dois ajouter les backslashes sur tes valeurs afin d'éviter des problèmes relatifs à la sécurité.

Lors de la récupération de la même valeur lors d'une requête, il n'y aura pas de backslashes sur tes valeurs et ce, peu importe la méthode utilisée (addslashes ou mysql_escape_string)

Cependant lors de l'insertion, il est préférable d'utiliser mysql_espace_string() puisque cette fonction a été créée spécialement pour les cas d'insertions de données dans une base de données de type MySQL. Ainsi on est certain que tout a bien été sécurisé comme MySQL le souhaite; et non comme PHP pense que ça devrait être. Le résultat est peut-être le même, (car je n'ai pas vérifié tous les cas) cependant vaut mieux utiliser les bons outils. Les puristes te diront d'utiliser mysql_real_escape_string()

:)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP