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 :

Rechercher et remplacer


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut Rechercher et remplacer
    Bonjour,

    Je viens de m'apercevoir que des textes d'une de mes BDD étaient écrits tantôt avec une apostrophe traditionnelle (celle située sur le touche 4 soit ' ) tanttôt avec une apostrophe plus type graphique à savoir ’

    C'est peut être du pinaillage mais je souhaiterai tout harmoniser.

    Sachant que la gestion des apostrophes est parfois délicate avec MySQL qui pourrait me donner la bonne ligne de commande ?

    UPDATE `ma-table` SET `texte` = '\'' WHERE `texte` = '’'

    Merci d'avance.

  2. #2
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Je te conseillerais d'abord de créer une table temporaire dans la base qui est une copie de l'originale pour faire tes manips

    Ensuite ta solution n'est pas loin de la vérité à mon avis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `ma-table` SET `texte` = '\'' WHERE `texte` = '%’%'
    Juste pour que ce ne soit pas seulement les champs qui contiennent uniquement "’" qui soient remplacés.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut
    Merci Riete.

    Malheureusement ca ne marche pas...
    Et je viens de tester la fonction UPDATE sur d'autres requetes à/p de phpMyAdmin c'est systématiquement

    Nombre d'enregistrements affectés : 0

    Auriez vous une idée ?

    Merci

  4. #4
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    je me suis trombé, il faut aussi remplacer le = par LIKE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `ma-table` SET `texte` = '\'' WHERE `texte` LIKE '%’%'
    J'ai testé ça fonctionne.

  5. #5
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    N'exécute surtout pas la requête au dessus !!

    Elle remplacera le contenu de tous tes champs qui contiennent une apostrophe par une quote.

    Cette requête la fonctionne :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `table` SET `texte` = REPLACE(`texte`, '’', '\'') WHERE `texte` LIKE '%’%'

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut
    Merci à vous deux ! Effectivement la dernière requête fonctionne très bien !

    Maintenant si je veux remplacer une expression ?

    Admettons que je veuille remplacer chou fleur par chou-fleur.

    Est-ce correct ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `table` SET `texte` = REPLACE(`texte`, 'chou-fleur', 'chou fleur'') WHERE `texte` LIKE '%chou-fleur%'

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Presque.

    Tu as un apostrophe de trop à la fin du REPLACE.
    Ensuite, dans la clause LIKE, c'est ce qui est recherché qui est à utiliser. Donc dans ton cas, c'est "chou fleur", pas "chou-fleur" :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `table` SET `texte` = REPLACE(`texte`, 'chou-fleur', 'chou fleur') WHERE `texte` LIKE '%chou fleur%'
    Par contre, si cette requête est efficace, elle est loin d'être optimisée : ses performances sont extrêmement dégradées à cause du "%" en début de LIKE (ceci dit, là, comme ça, je n'ai pas mieux à proposer... mais on doit pouvoir).

  8. #8
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Décidement quel gros naze. En plus j'ai que je l'avais testé, mais j'ai mal regardé.
    Veuillez accepter mes excuses.
    Citation Envoyé par Seb33300 Voir le message
    N'exécute surtout pas la requête au dessus !!

    Elle remplacera le contenu de tous tes champs qui contiennent une apostrophe par une quote.

    Cette requête la fonctionne :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `table` SET `texte` = REPLACE(`texte`, '’', '\'') WHERE `texte` LIKE '%’%'
    Pour me faire pardonner , pour remplacer les chou-fleurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE `A_Porte_Marque` SET `Marque` = REPLACE( `Marque` , 'choux fleur', 'choux-fleur' ) WHERE `Marque` LIKE '%choux fleur%'
    Comme tu veux remplacer 'choux fleur', il faut d'abord le rechercher d'où la clause WHERE LIKE.
    Pour le REPLACE c'est pareil, tu avais inverser les paramètres.

Discussions similaires

  1. [VBA] Rechercher et remplacer dans un champs
    Par virginie2 dans le forum Access
    Réponses: 2
    Dernier message: 19/07/2006, 11h19
  2. Afficher, rechercher et remplacer dans un fichier
    Par lynal dans le forum Langage
    Réponses: 1
    Dernier message: 13/06/2006, 21h24
  3. Recherche et remplacement d'un caractère dans Word
    Par faiglon dans le forum Access
    Réponses: 3
    Dernier message: 13/02/2006, 14h17
  4. [RegEx] Rechercher et remplacer plusieurs occurences avec expression
    Par nabab dans le forum Langage
    Réponses: 2
    Dernier message: 12/12/2005, 17h12
  5. Réponses: 11
    Dernier message: 01/12/2004, 19h09

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