Copier le contenu d'un champs dans une autre table

Bonjour

j’ai un probleme, je voudrais que les gens qui s’inscrivent sur mon site en tant que membres puissent aussi recevoir la newsletter. Hors j’ai 2 tables différentes, une pour l’inscription des membres et une pour la newsletter et les bases étant déjà faite les noms des champs ne sont pas les mêmes dans les 2 tables.

Je voudrais donc copier l’adresse email et le pays de chaques membres dans la table de la newsletter.Es ce possible ? et si oui comment ?

Merci d’avance.

Tu peux le faire par des requêtes SQL, notamment:

insert into newsletter (email, ....)
select user_email, ...
from users
where user_id = XXX

Inutile de dire que tu y perds un peu au niveau intégrité référentielle (cas 1: l’utilisateur change de mail).

je te suggère plutôt d’adapter ta table de newsletter, d’ajouter l’identifiant de l’utilisateur (optionnel, donc NULL ) en plus d’un email pour les non inscrits, et de faire une requête de ce genre:

select ...
from newsletter L
left join users U on L.user_id = U.user_id

Voir en deux étapes (pour récupérer que l’email):

(select newsletter_email as email from newsletter L where L.user_id is null)
union (select user_email as email newsletter L inner join users U on L.user_id = U.user_id

Edité le 16/07/2008 à 22:44

Merci ca marche pour copier dans phpmyadmin, seulement si je veux maintenant que ca se fassent automatiquement quand un nouveau membre s’inscrit il faut que je mette ca dans la page du formulaire je suppose mais es ce que quelqu’un peut m’aider pour le code php et mysql je connais pas du tout :s

merci

bah utilise la seconde étape, quand tu récupère les emails pour ta newsletter.

Tu peux même faire mieux, ajouter un champ “abonné à la newsletter” sur ta table des membres, et éviter la copie.

Bonjour je fais cette requete là en php ca fonctionne pas mais si j’execute seulement la requete dans phpmyadmin ca fonctionne, es ce que quelqu’un peu m’aider :frowning:


<?php
mysql_connect("localhost", "user", "password");
mysql_select_db("nomdedonne");

// On ajoute une entrée avec mysql_query
mysql_query("insert into jos_mkpostman_subscribers (subscriber_id, subscriber_name, subscriber_email) select id, username, email from jos_users");

mysql_close();
?>

et tu as un message d’erreur?

au passage, tu ne devrais pas mettre l’id de ton utilisateur:

insert into jos_mkpostman_subscribers (subscriber_id, subscriber_name, subscriber_email)
select id, username, email from jos_users

A priori, il ne s’agit pas du même objet.

Salut merci pr toutes tes réponses.

Et non j’ai pas eu de message d’erreur mais quand je vais voir dans le base de donnée où ca aurait du se copier il n’y a rien.

Merci pr le conseil des ID je vais l’enlever.

Je sais pas quoi faire, le code est bon pourtant non ?