8791 sujets

Développement web côté serveur, CMS

Bonjour à tous et à toutes.

Voici mon problème:
Je doit écrire dans un fichier csv, le soucis c'est que toutes mes données se mettent en colonnes alors que je les voudrais en ligne.
Je m'explique, je transfert des données d'un fichier csv vers ma base de données, mais si cette donnée n'est pas correcte, elle est écrite dans un autre fichier csv, mais il me les met pas sur une ligne mais en colonne.
Le premier fichier, y a plusieurs ligne et y a un saut de ligne à la fin mais là j'ai pas trouvé comment faire pour que les lignes erronés du premier fichier s'écrive exactement pareil dans le second.

Voici mon code:


		if(ereg(".+(@.+)(.[[:alpha:]]{2}([[:alpha:]]?))$",$mail))
		{
			if (existMail($mail) && ($etat==8 || $etat==9)) { 
			$nb_des_md++; 
			} 
			else 
			{ 
				$etat_erreur = "";
				/*Ajouter un nouvel enregistrement dans la table*/ 
				$req_fin = "VALUES ('".$client."',"; 
				foreach ($liste as $values) { 
				$req_fin.="'".filtredata($values)."',"; 
				} 
				$req_fin .="'".$etat_erreur."','".$source."','".$date."','".$nom."') "; 
					$req=$req_debut.$req_fin; 
									 
				$result=mysqli_query($db_link, $req) ; 
											 
				if(mysqli_error($db_link)) { /*Erreur dans la base de données*/ 
					print "Erreur dans la base de données : ".mysqli_error($db_link); 
					print "<br />Importation stoppée."; 
					exit(); 
				} 
			} 
		}
		else
		{
			$etat_erreur = 7;
			$creat_csv = writecsv($nom, $liste) ;
			/*Ajouter un nouvel enregistrement dans la table*/ 
			$req_fin = "VALUES ('".$client."',"; 
			foreach ($liste as $values) { 
				$req_fin.="'".filtredata($values)."',"; 
			} 
			
			$req_fin .="'".$etat_erreur."','".$source."','".$date."','".$nom."') "; 
										 
			$req=$req_debut.$req_fin; 
										
			$result=mysqli_query($db_link, $req) ; 
										
			if(mysqli_error($db_link)) { /*Erreur dans la base de données*/ 
				print "Erreur dans la base de données : ".mysqli_error($db_link); 
				print "<br />Importation stopée."; 
				exit(); 
			}
			$nb_import_error++;
		}
	}
}

function writecsv($nom, $liste) 
{
	$fichierChemin = "/www/Fichier_error/";
	$fichierNom = $nom."_error";
	$csvfile = $fichierChemin.$fichierNom.'.csv';

	if(!($fp_error = fopen($csvfile, "a"))) echo "Impossible de créer ou ouvrir le fichier csv \n";
	foreach ( $liste as $values ) {
		fputcsv ( $fp_error , split ( ';' , $values ));
	}
	fclose($fp_error);
}


Si vous avez une petite idée merci d'avance.

Bonne fin d'après midi.
Modifié par Miala (18 Sep 2009 - 13:24)
Hello,

Miala a écrit :
le soucis c'est que toutes mes données se mettent en colonnes alors que je les voudrais en ligne.
Ce qui est logique puisque c'est le fonctionnement de fputcsv. Tu pourrais essayer avec fwrite.
En effet, j'ai bien une ligne mais tout est dans la même case. Et j'ai que des Array dans mon fichier.

Je continue à analyser les fonctions.

Merci Heyoan.
Et en remplaçant
fputcsv ( $fp_error , split ( ';' , $values ));
par
fwrite($fp_error, $values.';');
?
Merci ça marche parfaitement maintenant.

J'avais mal placé le ";".

Encore merci et bonne après-midi.