Joindre 2 tableau pour fichier csv

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Joindre 2 tableau pour fichier csv

par jobine » 18 mars 2008, 20:19

Et si tu ne faisais qu'une seule requête des deux que tu as avec une jointure JOIN (tu peux faire JOIN, INNER JOIN, LEFT JOIN, UPPER JOIN selon tes besoins) ?

Il me semble ici (à cause de no_client qui se répète) que nous pourrions faire LEFT JOIN ainsi:
$select= "SELECT  * FROM base1 AS base1 LEFT JOIN base2 ON base2.no_client = base1.no_client WHERE no_client= '$no_client'";
        $result = mysql_query($select) or die ('Erreur2 : '.mysql_error() );

        while($row = mysql_fetch_row($result))
        {
              fputcsv($fp, $row, ';');
              
              
       }
 

Je n'ai fait ici qu'un schéma de requête, à toi de l'ajuster, de l'adapter.
Merci,

Ça marche. J'ai quand même fait quelques modifs.
$select= "SELECT champ_base1, champ_base2 FROM base1 AS base1 LEFT JOIN base2 ON base2.no_client = base1.no_client WHERE base2.no_client= '$no_client'";
        $result = mysql_query($select) or die ('Erreur2 : '.mysql_error() );

        while($row = mysql_fetch_row($result))
        {
              fputcsv($fp, $row, ';');
              
              
       }
 
Il me donnait une erreur d'ambiguïté dans la clause WHERE sans le base2.

Merci encore, ça avance...

par Patriboom » 18 mars 2008, 19:03

Et si tu ne faisais qu'une seule requête des deux que tu as avec une jointure JOIN (tu peux faire JOIN, INNER JOIN, LEFT JOIN, UPPER JOIN selon tes besoins) ?

Il me semble ici (à cause de no_client qui se répète) que nous pourrions faire LEFT JOIN ainsi:
$select= "SELECT  * FROM base1 AS base1 LEFT JOIN base2 ON base2.no_client = base1.no_client WHERE no_client= '$no_client'";
        $result = mysql_query($select) or die ('Erreur2 : '.mysql_error() );

        while($row = mysql_fetch_row($result))
        {
              fputcsv($fp, $row, ';');
              
              
       }
 

Je n'ai fait ici qu'un schéma de requête, à toi de l'ajuster, de l'adapter.

Joindre 2 tableau pour fichier csv

par jobine » 18 mars 2008, 17:11

Bonjour,

Suite de mon projet.

J'ai des infos à mettre dans un fichier csv qui proviennent de 2-3 bases différente. J'ai pas de problème pour une base mais c'est de joindre les 2-3 autres qui complique les choses.

Voici plus de détail.

ce que je veux:

infos de base 1 infos de base 2 infos de base 3
nom, prenom no insc, epreuve nom contact, tel contact
nom, prenom no insc, epreuve nom contact, tel contact

Présentement, mon code écrit plutôt quelque chose comme ça

nom, prénom
no insc, épreuve

nom, prénom
no insc, épreuve

etc

$fp = fopen('file.csv', 'w');

// sélectionne les infos pour sélectionner les données relatif à l'évènement

$sql= "SELECT * FROM base 1 WHERE no_event = 9";
$query= mysql_query($sql) or die ('erreur 1:'.mysql_error() );

while ($data = mysql_fetch_array($query))
{
	extract ($data);


 	
 	 // info sur les nom des participant
 	 
		$select= "SELECT  * FROM base 2 WHERE no_client= '$no_client'";
		$result = mysql_query($select) or die ('Erreur2 : '.mysql_error() );

    	while($row = mysql_fetch_row($result))
		{
	          fputcsv($fp, $row, ';');
			  
			  
		// info d'inscription	
        $sel= "SELECT * FROM base 3 WHERE no_client= '$no_client' AND no_event = '$no_event'";
		$res = mysql_query($sel) or die ('Erreur2 : '.mysql_error() );

    	$row_insc = mysql_fetch_row($res);
		
	
	          fputcsv($fp, $row_insc, ';');
	    		   
        }
        
Je pense qu'il faut faire seulement un fputcsv mais je ne sais pas comment faire pour joindre les 2 tableau ($row et $row_insc).

Avez vous une piste de solution.

Merci