hulk Posted December 17, 2010 Share Posted December 17, 2010 BonjourJe suis entrain de construire un module personnalisé pour l'exportation des @ mails des client enregistrés et celles de module newsletter.je voudrais exporter les adresses mails de 2 tables suivantes "ps_customer" et "ps_newsletter" et les exporter en un fichier csv tout en éliminant les doublons.J'arrive a exporter les adresses d'une seule table mais lorsque j'essaye d'exporter de 2 tables avec cette requête $sql="SELECT DISTINCT n.email, c.email FROM "._DB_PREFIX_."newsletter n, "._DB_PREFIX_."customer c "; il me renvoi 2 adresses seulement répétées n fois.Je ne sait pas comment les joindre ensemble dans la requête sql. Je suis novice en php et mysqlMerci Link to comment Share on other sites More sharing options...
juliens Posted December 18, 2010 Share Posted December 18, 2010 Bonjour,il y a peut ête plus simple mais voici ce que tu veux : selection des emails des clients ayant souscrit à la newsletter et des emails des non-clients ayant souscrit à la newsletter (sans doublon) SELECT DISTINCT(email) FROM ps_customer WHERE newsletter = 1 AND email NOT IN (SELECT DISTINCT(email) FROM ps_newsletter) UNION SELECT DISTINCT(email) FROM ps_newsletter ORDER BY email ASC Link to comment Share on other sites More sharing options...
hulk Posted December 18, 2010 Author Share Posted December 18, 2010 Un GRAND GRAND merci Juliens ça marche nickel Link to comment Share on other sites More sharing options...
hulk Posted December 18, 2010 Author Share Posted December 18, 2010 merci encore pour le coup de main juliens mais il me reste un petit problème a réglé c la dernière ligne vide dans le fichier exporté , je veux quelle ne s'ajout pas Link to comment Share on other sites More sharing options...
juliens Posted December 18, 2010 Share Posted December 18, 2010 Poste le code de ton export afin de voir ce qui ne va pas Link to comment Share on other sites More sharing options...
hulk Posted December 18, 2010 Author Share Posted December 18, 2010 voici le bout de code: $sql="SELECT DISTINCT(email) FROM ps_customer WHERE newsletter = 1 AND email NOT IN (SELECT DISTINCT(email) FROM ps_newsletter) UNION SELECT DISTINCT(email) FROM ps_newsletter ORDER BY email ASC "; $orderlist = Db::getInstance()->ExecuteS($sql); $file = fopen(dirname(__FILE__).'/mails.csv', 'w'); $firstline = "Adresses Email"; fwrite($file, $firstline."\r\n"); foreach($orderlist AS $orderline){ fwrite($file, implode(';', $orderline)."\r\n"); } fclose($file);} else { $this->_html .= '<form method="post"><input type="submit" name="download" value="'.$this->l('Exporter le fichier en CSV').'" /> </form>'; return $this->_html; } Link to comment Share on other sites More sharing options...
juliens Posted December 18, 2010 Share Posted December 18, 2010 Bizarre, je ne vois pas dans ce code d'où pourrait venir la ligne vide à la fin.Fait un print_r($orderlist) pour vérifier si c'est la requete sql qui sort une ligne vide.Si c'est le cas, tu peux ajouter un WHERE email !='' à la requete SQLOu alors tester dans ton for each si $orderline est différent de chaine vide. Link to comment Share on other sites More sharing options...
juliens Posted December 18, 2010 Share Posted December 18, 2010 Ah, où alors, peut être qu'il ne faut pas ajouter "\r\n" pour la dernière ligne écrite dans le fichier. Link to comment Share on other sites More sharing options...
hulk Posted December 24, 2010 Author Share Posted December 24, 2010 si j'enlève"\r\n" de la dernière ligne, toutes les adresses mails seront mis sur la même ligne Link to comment Share on other sites More sharing options...
juliens Posted December 24, 2010 Share Posted December 24, 2010 Juste pour la dernière, pas pour toutes Link to comment Share on other sites More sharing options...
hulk Posted December 24, 2010 Author Share Posted December 24, 2010 oui je parle de cette ligne fwrite($file, implode(';', $orderline)."\r\n"); j'ai enlevé le "\r\n" et toutes les adresses son écrite dans la même ligne (la 2 ligne ), il faut la conserver pour le retour chariotEn tout cas c pas grave pour moi, je la laisse comme elle estMerci Juliens Link to comment Share on other sites More sharing options...
juliens Posted December 24, 2010 Share Posted December 24, 2010 Je parlais en fait de la dernière ligne du tableau de résultats de la query. (pas de la dernière ligne de code)Si dernière adresse email de la query alors frwite uniquement $orderline sinon $orderline avec "\r\n" Link to comment Share on other sites More sharing options...
cobolian Posted January 20, 2011 Share Posted January 20, 2011 fwrite($file, implode(';\r\n', $orderline)); Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now