Aller au contenu

Remplacer en php un élément d'un champs mysql


Sujets conseillés

Posté

Bonjour,



Ci-joint, un fichier php qui fonctionne et fait bien le remplacement des accents sur la table que tu as indiqué sur la page précédente.



Test et dis moi.




Portekoi


test.php

Posté

Le bug de téléchargement a été corrigé, il me semble !

Posté

Salut les gars et merci beaucoup.



1/ J'ai pu télécharger le fichier mais il me fait un message d'erreur :



Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2002): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)



2/ c'était pas ce que je voulais : j'arrive maintenant à changer les accents au coup par coup avec des replaces imbriqués dans le select;



Ce que je souhaitais : c'était utiliser dans le select la fonction Iconv() pour supprimer tous les accents d'un seul coup.



C'est possible ou pas ?



Je sais je commence à être pénible la...


Posté

Re,

1 - Pour l'erreur : "Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2002): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)"

A toi de mettre les bons paramètres de connexion.

2 - Tu as posté au sujet d'un problème d'accent. Stéphane en Stephane.

Question : Est-ce qu'avec le fichier que je t'ai envoyé, Stéphane devient bien Stephane, comme sur mon ordinateur?

3 - Tu veux maintenant remplacer tous les accents dans un champ donné via la fonction IConv.
iConv est une fonction php et non Mysql. Comme l'a dit Captain, tu ne peux pas l'utiliser dans ta requête directement.

Portekoi

Posté

1 et 2/ Oui le fichier test.php fonctionne chez moi. Merci encore Portekoi.


3/ j'ai enfin compris que iconv() ne peut pas être placé dans un select. Je sais je suis pas rapide :(



Merci Dan, Portekoi et captain_torche !



Une dernière chose : en fait ce que je voulais simplement savoir c'est :



Est-il possible de mettre dans le select un code qui supprime tous les accents d'un seul coup


ou suis-je obligée de faire dans le select des imbrications de replace pour tous les accents à traiter (ce qui me paraît un peu lourd) ?



Merci de bien vouloir répondre à cette dernière question...


Posté

Bonjour,



Mysql n'est pas fait pour cela donc pour moi, non. Tu dois faire un select "normal" de ton champ puis remplacer les accents via PHP.



Passer par Mysql pour cela serait comme d'utiliser une 2Cv sur un circuit de F1.




Portekoi


Posté

A Portekoi :



Tu dois faire un select "normal" de ton champ puis remplacer les accents via PHP.


En fait il me faut vraiment remplacer les accents dans le select, pas après.



Ou alors :


1/ dans un premier temps : supprimer les accents via php du champ "prenom"


2/ puis, dans un deuxième, temps faire le select avec les valeurs sans accent du champ "prenom"



mais je crains que cela ne soit pas possible.



A Captain_Torche :



En fait je suis sûre que n'étant pas douée naturellement pour la programmation, je me complique la vie.



Je cherche à comparer l'url à un champ de BDD pour générer ou non des 404


en gros si valeur du champ (non accentuée) = url (non accentuée) >> on affiche la page sinon 404



peut-être y-a-t-il un moyen plus simple de faire cela ?

Posté

Pour quelle raison veux-tu un SELECT ? Parce que si tu veux éditer tous ces champs dans ta base, il faudrait plutôt un UPDATE, non ?

Posté

Comment crées-tu tes urls ? SI possible, il faudrait simplement les associer à tes pages.


Parce que les accents ne sont pas les seuls obstacles que tu pourrais avoir : que fais-tu des espaces ? Des majuscules ? Des caractères de ponctuation ? (Etc).



Dans l'idéal, il faudrait que ta table contienne un champ url à un bon format, et c'est sur ce champ que tu ferais la correspondance.



De même, tu auras des correspondances à afficher vers une seule table, ou plusieurs ? Si c'est plusieurs, il faudrait envisager une table intermédiaire.



Si tu le souhaites, j'ai écrit un article pour la transformation d'un texte en url.


Posté

Perso j'ai toujours pas compris pourquoi tu voulais absolument faire un select (ou mettre à jour la base de données) ;-)



Tu peux très bien lire le champ prénom de ta base de données. Mettre la valeur dans une variable puis appliquer à cette variable une fonction de traitement (celle de Captain Torche par exemple).


Et ensuite faire une comparaison de ta variable avec l'url.



Perso je créé un champ slug pour avoir une url personnalisée avec des règles de validation pour éviter la saisie de caractères non autorisés.


Posté

Le problème survient surtout quand tu veux faire l'opération inverse : retrouver une entrée de la BDD en fonction de son url, que surviennent les problèmes.


D'où la nécessité d'ajouter un champ url dans la table.


Posté

Je le pense aussi. Il faut bien mettre à plat ce que tu veux faire et surtout voir si il n'y a pas d'autres solutions plus logiques.


Posté

Oui Captain c'est ça :



Le problème survient surtout quand tu veux faire l'opération inverse : retrouver une entrée de la BDD en fonction de son url, que surviennent les problèmes.

Je vois pas comment je pourrais faire autrement. Je suis obligé de retrouver dans la BDD une valeur de mon champ suivant l'url affichée, non ?


Vous voyez un autre moyen ?



Car Nicola :



Tu peux très bien lire le champ prénom de ta base de données. Mettre la valeur dans une variable

c'est pas possible cela car comment sortir juste la valeur adéquate de la BDD ?


Posté

Si tu n'as qu'une seule table dans ta BDD à laquelle correspondent des urls :


- Ajoute un champ "url" (Ou slug, comme te le dit nicolas)


- Effectue un script pour générer une url pour les données existantes


- Ajoute l'url à chaque ajout de ligne



Si tu as plusieurs tables, une table intermédiaire sera nécessaire, avec comme colonnes :


- Une url unique


- Le nom de la table concernée


- L'id de l'élément dans la table concernée.


Posté

Oui Captain,



c'est ce que je vais faire : créer un champs supplémentaire URL au bon format (slug).



Par contre pas compris "Ajoute l'url à chaque ajout de ligne" ?


Posté

Pas de soucis ;-)



Juste pour dire qu'avec un Framework il suffit de mettre dans le beforeSave du modèle un test si un slug a été saisi sinon on le génère avec une fonction déjà implémentée dans le FW.


Ca prend environ 6 lignes ;-) De plus la fonction de génération de slug fonctionne bien. On ne réinvente pas la roue et le code contient uniquement la logique. Les fonctions de bases testées XXXX fois sont dans les libs (coeur du FW).



Mais avant d'utiliser un FW il faut maîtriser les bases du PHP.


Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...