Bonjour,
Excusez moi si je me trompe d'endroit pour poster, je suis nouveau, d'habitude je me débrouille toujours mais là je me casse les dents sur ce soucis.
Je travaille sur Wordpress,mysql et avec un plugin de gestion des membres qui se nomme WP-member
J'ai modifié le plugin pour pouvoir faire en sorte que l'utilisateur rentre son code postal.
Le soucis est qu'avec Wordpress toutes les informations concernant les users se stockent dans la table usermeta.
Voici la structure de la table:
umeta_id (pk): n'est pas l'id du user mais l'id de l'enregistrement c'est à dire cela peut être le nom du user , son code postal etc. Plusieurs umeta_id peuvent être affilié à l'id du user.
user_id (fk) : est l'id du user, elle est pk dans une autre table mais l'autre table ne peut pas stocker les données que je veux car la table est non modifiable sous wordpress.
meta_key: est le titre de la donnée, par exemple nom, code postal. On peut donc trouver plusieurs fois la même meta_key pour des users différents.
meta_value: réponse à la meta_key, c'est là que ce trouve les données enregistrées.
exemple d'un user en simplifié:
umeta_id | user_id | meta_key | meta_value
-----------------------------------------------------------------
1 | 1 | nom | Toto
2 | 1 | codepostal | 66000
... | 1 | ... | ...
15 | 1 | ville | Perpignan
Le probleme avec cette structure est que je pense que plus les users vont s'accumuler plus les requetes pour récupérer les codes postaux seront longues.
Car pour un user il peut y avoir 15 enregistrements différents. Si il y a 10000 users il va y avoir donc 150000 row à parcourir pour récupérer les codes postaux que l'on veut . J'aimerai avoir votre avis car je pense que la structure de cette table pose problème.
Je voudrai donc créer une nouvelle table utilisateurs avec une structure qui ressemblerait à cela (je n'ai pas besoin de la ville) pour faciliter les requêtes et surement leur temps de réponse.
user_id | nom | codepostal
-----------------------------------
1 | toto | 66000
Pour la création de la table pas de soucis , en ce qui concerne de l'implémenter via trigger à partir de la table usermeta je n'arrive qu'à récupérer le user_id et le nom grace à l'appel de new.user_id mais je n'arrive pas à récupérer le code postal . Trigger ci-dessous:
Je me dis qu'un update sera pire .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 insert into utilisateurs (user_id,nom,codepostal) values ( (select distinct user_id from usermeta where user_id=new.user_id ), (select meta_value from te_usermeta where meta_key='nom' and user_id=new.user_id), (select meta_value from te_usermeta where meta_key='codepostal' and user_id=new.user_id) )
Quelqu'un peut il me guider?
Je vous remercie d'avance
Partager