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

PHP & Base de données Discussion :

Problème de simple quote dans le champ de recherche


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut Problème de simple quote dans le champ de recherche
    J'ai deux problèmes depuis des mois avec la cote simple et la recherche

    1) Lorsque je saisis les données avec des mots contenant la cote, par exemple la phrase suivante : Je demande d'expliquer l'appel et que je recherche l'un des mots qui contient la cote, soit le mot d'expliquer soit le mot l'appel , tout se passe bien en local, mais une fois l'application hébergée sur Internet, je saisis du texte contenant des mots avec cote en ligne dans ma console d'administration, mais les résultats de la recherche n'affichent rien dans mon moteur de recherche, pourtant les mots existent bel et bien et la recherche marche en local.

    2) Lorsque je copie du texte dans Word ayant des mots avec cote et je colle dans les zones de texte de mon formulaire, la recherche des mots avec cote ne marche pas ni en local ni en ligne. Et la plus part du contenu de l'entreprise est déjà saisi dans des documents Word. La je comprends quand même que la cote de Word est différente de la cote du Navigateur, j'ai essayé d'utiliser la fonction qui recherche la cote de Word ( ) qui est un peu plus penchée et longue et je remplace par la cote du navigateur ( ' ) qui est petite et droite avant d'enregistrer avec str_replace. Mais ça ne marche pas avec les zone de texte simple pourtant avec l'éditeur ça marche.

    Quelqu'un a t-il une idée

    Merci.

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Les quotes ont la cote
    (je dis ça car ça doit faire 3 ou 4 fois de suite qu'il est plus ou moins question des quotes).
    Pour info, on dit quotes (et non cote), bien que ça n'y est pas dans le dico.
    Je pense qu'on peu traduire ça comme des délimiteurs.

    Faut pas trop se fier à Wold, la simple quote est l'équivalent de l'apostrophe, le caractère ' de la touche 4 (pour un clavier azerty), la double quotes c'est les guillemets ", la touche 3.


    D'après ce que tu décris, ça ma tout l'air d'être la directive magic_quotes_gpc du php.ini qui serait activé (à On) coté hébergeur, et désactivé en local.
    Les données seraient échappées ce qui fausserait leur valeur, entre autre celles qui ont des simples quotes.

    Il faudrait la désactiver (à Off), et là, le mieux serait de voir du coté de ton hébergeur.
    Il peu avoir plusieurs manières de le faire :
    - Soit ton hébergeur permet de le faire via le panel Admin de la gestion de ton espace (genre case à cocher/décocher).
    - Soit de rajouter un code dans un .htaccess
    - Soit de le faire dans son code, un ini_set().
    voir autre ...

    Pour savoir quel est la valeur de cette directive, fait un phpinfo() dans une de tes pages, ou fait un echo ini_get('magic_quotes_gpc').

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut
    Merci beaucoup RunCodePhp, j'ai pas encore vérifier avec l'hébergeur pour le premier problème, mais je vais le faire et je crois que je ça va aller.

    Mais pour le 2e problème je t'assure c'est un problème véritable pour moi, parce que nous avons développé une base de connaissance pour l'entreprise avec monteur de recherche intégré et l'entreprise est en train d'y mettre du contenu qui se trouvait dans divers documents et tu comprends qu'on ne peut pas ressaisir ce qu'on a déjà saisi, on te demande de trouver une solution. Et là je plante vraiment, tout texte que je copier dans Word pour mettre dans une zone de texte de mes formulaires, si ce texte l'apostrophe venant de Word, la recherche ne marche pas avec le mot apostrophé, si je saisi directement dans la zone de texte la recherche marche parfaitement avec le mot apostrophé, j'arrive pas à trouver une astuce.

    Merci.

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    et l'entreprise est en train d'y mettre du contenu qui se trouvait dans divers documents
    Peut être faudrait il mettre cela en stand by ou alors qu'ils fassent les remplacements avec le bon caractère en attendant de trouver une solution fiable et durable.
    Ca c'est à toi voir.

    D'ailleurs, as tu vérifier quelques contenus qui se trouve dans la Bdd distante directement dans PhpMyAdmin par exemple ?
    Est-ce : d'expliquer
    Ou : d\'expliquer (avec un échappement)
    Donne un exemple du comment tu procède lors d'une insertion : depuis la récupération des données ($_POST ou $_GET) jusqu'au INERT INTO.
    Ca c'est pour mieux comprendre le problème, ne pas se tromper.


    Pourquoi str_replace() ne fonctionne pas pour une zone de texte simple ?
    J'ai du mal à concevoir cela.
    Post le code qu'on voit comment tu procèdes pour faire ces remplacements/conversions.


    Si tu n'obtiens pas de solutions ici dans ce forum Php/MySQL, poster un topic dans le forum REGEX peut être plus judicieux, car c'est plus de cette ordre là qu'autre chose.
    Je dis ça au cas où, d'autant plus que je ne suis pas fan des REGEX (limite hermétique même).


    Vérifie bien qu'il s'agit bien de ce caractère là (’), qu'il n'y ai pas d'autres caractères pour faire une apostrophe (sait on jamais).
    De mon coté je me dis qu'il pourrait être possible de rencontrer 3 caractères différents :
    1 : ’ -> code ASCII : 226
    2 : ’ -> code ASCII : 39
    3 : ` -> code ASCII : 96

  5. #5
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    tu es face à un truc simple en fait... word ne met pas ' mais un caractère équivalent typographique... de même pour " qui est remplacé par guillemet ouvrant et fermant... ou sa version anglophone...

    en plus, word utilise le charset cp1512 qu'il faut donc convertir vers utf8 ou autre (celui que tu utilises)...

    regarde les fonctions qui commencent par mb_

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par ericd69
    word ne met pas ' mais un caractère équivalent typographique... de même pour " qui est remplacé par guillemet ouvrant et fermant... ou sa version anglophone...
    Que ce ne soit pas les même caractères utilisés, c'est quasi certain.

    Mais il me semble que l'insertion se fasse via une interface Web qui elle a son propre encodage (ISO ou UTF-8, à voir).
    Donc les données obtenues coté serveur devraient être soit en ISO ou soit en UTF-8, non ?
    En faite je me dis que le navigateur va tenter de remplacer/encoder les caractères copiés/collés.

    Le fond du problème viendrait peut être de là.
    Dans ce cas, ne pourrait on pas faire l'inverse, c'est à dire de convertir le document Word en UTF-8 avant de copier le contenu ?


    A coté de ça, faire du copier/coller de Word vers une zone de texte d'une interface Web n'est théoriquement pas une bonne idée.
    M'enfin ...

  7. #7
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    disons que les caractères dépendent de la locale et de la langue choisie dans word...

    tu auras d'autres problème comme les espaces insécables associés aux guillemets, ou : ou ; ou ? ou ! etc...

    pour la conversion, elle est normalement faite par le navigateur mais si tu doute tu as une fonction mb qui permet de le tester...

Discussions similaires

  1. Réponses: 9
    Dernier message: 25/02/2009, 17h36
  2. Réponses: 14
    Dernier message: 30/11/2007, 11h58
  3. afficher des quotes dans un champ de formulaire
    Par benkunz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 07/10/2007, 14h45
  4. [MySQL] Simples quotes dans requête mysql
    Par jean-pierre96 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/05/2007, 17h11
  5. Placer des quote dans un champs
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 21/04/2005, 10h36

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