Page 1 sur 1

Requete SQL qui remplace des occurences précises (JPG ->j

Posté : 08 févr. 2006, 22:19
par plex
bonjour

Je travail sous mysql via phpMyadmin et php.
Mon site fonctionne bien mais j'ai manqué un peu de rigeur lors de la création de certains éléments figurant dans ma base de données en effet je suis débutant ...
Certains navigateurs n'aime pas les .JPG ou encore les è é dans les noms de fichiers ...
En gros, certains éléments graphiques de mon site comportant des accents ou des ( ) et - ne s'affichent pas.
J'aimerais savoir s'il est possible de faire une requete qui permettrai de pallier a ce problème.
Par contre, je ne connait pas trop la marche a suivre pour ce genre de requete.

Je dois donc remplacer toutes les occurences
de "é" par exemple

dans la table 'products'

pour les champs

Code : Tout sélectionner

products_image products_image_med products_image_lrg products_image_sm_1 products_image_xl_1 products_image_sm_2 products_image_xl_2 products_image_sm_3 products_image_xl_3 products_image_sm_4 products_image_xl_4 products_image_sm_5 products_image_xl_5 products_image_sm_6 products_image_xl_6
par exemple, remplacer

vélo.JPG
par
vélo.jpg dans tout les champs de la table products.

mais est ce qu'il est possible seulement de remplacer juste le caractère désiré et si oui comment, j'ai beau lire différents manuels sur la fonction replace, je ne trouve pas :(

est ce que quelqu'un pourrait me donner une piste ou m'aider a faire ma requete, je n'ai pas envi de foirer toute ma base, elle fait plus de 5Mo ...



D'avance, un grand merci.
PlEx :oops:

Posté : 08 févr. 2006, 22:47
par Cyrano
Il y a les éléments dans le tuto sur l'upload de fichier qui pourraientt te servir :
<?php
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
?>
à adapter à ton code pour renommer tes fichiers.

Posté : 08 févr. 2006, 23:03
par plex
merci pour ta réponse, mais je ne maitrise pas trop ce genre de fonctions :(
n'y a t il pas une solution avec mysql ?

Posté : 08 févr. 2006, 23:41
par mario
merci pour ta réponse, mais je ne maitrise pas trop ce genre de fonctions :(
n'y a t il pas une solution avec mysql ?

Code : Tout sélectionner

UPDATE nom_table SET nom_champ = REPLACE(nom_champ,'ancienMot','nouveauMot')
exemple:

Code : Tout sélectionner

UPDATE matable, SET monchamp = REPLACE(monchamp, 'é', 'e')
c'est une solution, dumoins je n'en connais pas d'autre (pour l'instant)

Posté : 21 févr. 2006, 10:11
par plex
merci MARIO :)
mais est ce que ca va juste remplacer les occurences de 'é' par un e ?

ou bien est ce que ca va tout remplacer ?

c'est a dire, j'ai

élec.jpg

est ce que ca va donner

elec.jpg
ou alors ... est ce que ca mettra juste un 'e' a la place du mot ?

Posté : 21 févr. 2006, 10:50
par zeus
la 2eme solution, ça va chercher les occurences dans les mots
élec.jpg :arrow: elec.jpg

Mais je te conseille de tester sur une copie de ta base au cas où ...

Posté : 21 févr. 2006, 13:22
par plex
meric pour ta réponse Zeus :)

mais ce n'était qu'un exemple ...
en effet je n'ai surement qu'une seule occurence de élec ..
j'ai peut etre

elèc.jpg
élèc.jpg
élipor.jpg
hélene.jpg

et j'en passe ..

Posté : 21 févr. 2006, 13:26
par zeus
Tant que le champs sue tu modifies n'est pas la clé primaire de ta table, il n'y aura pas de problèmes

Posté : 21 févr. 2006, 14:02
par plex
tu pourrais me donner la syntax pour ton idée s'il te plait zeus ? afib que je voit la facon de procéder

merci de ton aide

Posté : 21 févr. 2006, 15:12
par zeus
Elle t'es donnée par mario un peu plus haut

Il te suffit de modifier tout les champs que tu désir modifier dans la requete UPDATE et de faire une requete par caractère que tu veux modifier

Posté : 21 févr. 2006, 15:22
par plex
merci bien,
Je voit ce que ca donne