IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

str_replace et recherche


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 22
    Par défaut str_replace et recherche
    Bonjour à tous,

    je suis entrain de coder un petit moteur de recherche pour mon site et je me heurte à quelques difficultés notamment avec la fonction str_replace.

    Exemple :

    si je tape 'bonjour<' ou 'bon<jour', il ne comprend pas.

    Pourtant, j'ai bien spécifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mot = str_replace("<", "", $mot);
    De même, si je tape un mot avec apostrophe, par exemple 'n'importe quoi', il me renvoi un message d'erreur:

    Une erreur est survenue avec la base de données:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'importe%' OR pays LIKE '%n'importe%' OR ville LIKE '%n'importe%'OR titre LIKE '%' at line 1

    Sur ce second point, c'est surtout niveau sécurité que cela m'inquiète.
    Pourtant, idem j'ai bien spécifié dans mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mot = str_replace("\'", "'", $mot);
    J'ai essayé la fonction addslashes mais toujours la même erreur...


    Merci d'avance pour votre aide.

    Voici mon fichier traitement.php:

    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
    <?php
     
    /*TRAITEMENT DES DONNEES RECUPEREES*/ 
     
    /*Nettoyage de la requete de l'utilisateur*/
    $mot = strtolower(trim($mot));
    $mot = str_replace(array(",", "-", ".", ":", ";", "'"), " ", $mot);
    $mot = str_replace(" ", " ", $mot);
     
    $mot = str_replace("<", "", $mot);
    $mot = str_replace(">", "", $mot);
    $mot = str_replace("\'", "'", $mot);
    $mot = str_replace("_", " ", $mot);
    $mot = str_replace("&", "et", $mot);
    $mot = str_replace("+", " ", $mot);
    $mot = str_replace("?", "", $mot);
     
    $mot = str_replace("é", "e", $mot);
    $mot = str_replace("è", "e", $mot);
    $mot = str_replace("ë", "e", $mot);
    $mot = str_replace("ê", "e", $mot);
    $mot = str_replace("à", "a", $mot);
    //etc, etc...je les met pas toutes, ça serait trop long
     
    /*Extraction des mots clefs*/
    $mots = explode( " ", $_POST['mot'] );
     
    /*Requête*/
     
    $query = "";
     
    {
       foreach( $mots as $Mot )
       {
          //Ajout de la whereclause
          $query .= ( (empty($query)) ? '' : ' AND' )." (theme LIKE '%{$Mot}%' OR pays LIKE '%{$Mot}%' OR ville LIKE '%{$Mot}%'OR titre LIKE '%{$Mot}%' OR contenu LIKE '%{$Mot}%'OR motscles LIKE '%{$Mot}%' )";
       }
       $query = "SELECT * FROM culture WHERE $query ORDER BY date ASC";
       $reponse = mysql_query( $query ) or exit( "Une erreur est survenue avec la base de données:<br />\n".mysql_error() );
    }
     
     
    ?>

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    si je tape 'bonjour<' ou 'bon<jour', il ne comprend pas.
    C'est à dire ? (une erreur dans la requête, pas de remplacement de <)

    Sinon pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $mot = str_replace(" ", " ", $mot);
    Et puis aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $mot = str_replace(array(",", "-", ".", ":", ";", "'"), " ", $mot);
    alors que après tu t'osccupe du caractère spécial ' ?

    Tu devrais faire un echo final de tes remplacements pour voir ou ça cloche et ensuite essayer mot avec juste son str_replace associé (car tu as peut être un problème dans le déroulement de tes replace

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 22
    Par défaut
    Tout d'abord merci de t'interrèsser à mon problème.

    Citation Envoyé par Fench Voir le message
    Bonjour,


    C'est à dire ? (une erreur dans la requête, pas de remplacement de <)
    C'est celà il ne remplace pas le symbole.

    Citation Envoyé par Fench Voir le message
    Sinon pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $mot = str_replace(" ", " ", $mot);
    J'avoue celui-ci est inutile.

    Citation Envoyé par Fench Voir le message
    Et puis aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $mot = str_replace(array(",", "-", ".", ":", ";", "'"), " ", $mot);
    alors que après tu t'osccupe du caractère spécial ' ?

    Tu devrais faire un echo final de tes remplacements pour voir ou ça cloche et ensuite essayer mot avec juste son str_replace associé (car tu as peut être un problème dans le déroulement de tes replace
    Oui, je vais essayer de les tester un par un pour voir ou ça cloche. Mais qu'entend tu par un echo des remplacements? (dsl je viens de passer la nuit dessus, mon cerveau tourne au ralenti )

  4. #4
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    ça c pour envoyer avant la requête...
    histoire de voir si $mot ou $query sont corrects avant de faire le mysql_querry

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 22
    Par défaut
    okok je vais m'y atteler.

    Mais il y a vraiment un truc qui cloche car je viens de tester quelque chose :

    j'ai supprimé cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mot = str_replace("ô", "o", $mot);
    Je fais une recherche avec 'bônjour' et là par contre il comprend bien 'bonjour', alors que le remplacement n'est pas spécifié dans mon code...

  6. #6
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bizzarrrrre en effet:

    Essayes le contraire, c à dire tu mets tout en commentaire sauf le replace du ô, puis tu testes, si ça marche (ce qui serait normal), c que de ta liste de replaces, ya des problèmes !!!

    Attention qd je dis tout, c avec le trim et le strtolower ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recherche des algorythmes pour images 2d
    Par exxos dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 24/05/2002, 14h46
  2. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 23h18
  3. Réponses: 8
    Dernier message: 17/05/2002, 10h08
  4. [PRO*C] Recherche information
    Par Anonymous dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 04/04/2002, 18h53
  5. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo