Page 1 sur 1

ecrire dansun csv

Posté : 29 juin 2005, 08:52
par donny
salut,

J essai d ecrire dans un fichier csv je fait cela
if(isset($_GET['export']))
{
$sql=$_SESSION['sql'];

$fp = fopen("fik3.csv","r+"); 
fseek($fp,0);  
$p0="Designation , RefConstructeur , Quantite , Prix HT, Prix TTC\r\n";
fputs($fp,$p0); 
fclose($fp);                   
}
?>
Mais il ne se passe rien ???

Merci

Posté : 29 juin 2005, 08:59
par Cobaye
Voici un bout de code qui me sert à créer un fichier csv :
$resQuery = exec_requete("SELECT * FROM gabarit ORDER BY Famille, SousFamille, Categorie, Utilisation");
$fichier = @fopen("gabarit.csv","w");

fwrite($fichier,"Distributeur;Famille;SousFamille;Categorie;Utilisation;IdUtilisation\n");
while($rstGabarit=mysql_fetch_array($resQuery)){
	fwrite($fichier,$rstGabarit['Distributeur'].";");
	fwrite($fichier,$rstGabarit['Famille'].";");
	fwrite($fichier,$rstGabarit['SousFamille'].";");
	fwrite($fichier,$rstGabarit['Categorie'].";");
	fwrite($fichier,$rstGabarit['Utilisation'].";");
	fwrite($fichier,$rstGabarit['IdUtilisation']."\n");
	fwrite($fichier,";;;;;".$rstGabarit['IdUtilisation']."\n");
	fwrite($fichier,"Lyreco;;;;;".$rstGabarit['IdUtilisation']."\n");
	fwrite($fichier,"Fiducial Saci;;;;;".$rstGabarit['IdUtilisation']."\n");
	fwrite($fichier,"Buro+;;;;;".$rstGabarit['IdUtilisation']."\n");
	fwrite($fichier,"Calipage;;;;;".$rstGabarit['IdUtilisation']."\n");
	fwrite($fichier,";;;;;".$rstGabarit['IdUtilisation']."\n");
	fwrite($fichier,";;;;;".$rstGabarit['IdUtilisation']."\n");
}
	fclose($fichier);
pour mettre des infos dans le fichier j'utilise fwrite

Posté : 29 juin 2005, 09:02
par donny
merci

je viens d essayer mon code dans un fichier à part et il fonctionne
c est juste quand je le met dans le clique d un bouton qu il ne fonctionne pas il dois y avoir un truc qui deconne je vais voir

Posté : 29 juin 2005, 09:10
par Cobaye
sinon dont tout le code concerné

Posté : 29 juin 2005, 09:13
par donny
c est bon sa fonctionne
et je voulais savoir,
pour effacer le contenu d un fichier avant d ecrire dedans il faut utiliser unlike() ??

J ai essayer mais ce qui se passe c est que sa supprime le fichier .csv et apres quand je veux ecrire dessus sa me dit qu il n existe pas.
if(isset($_POST['export']))
{
@unlink("conso.csv"); 
$fp = @fopen("conso.csv","r+"); 
fseek($fp,0);  

$p0="Designation , RefConstructeur , Quantite , Prix HT, Prix TTC\r\n";
fputs($fp,$p0); 
@fclose($fp);                
Y aurai pas une autre fonction mais que pour effacer le contenu du fichier ou alors en creer un nouveau juste apres le unlike ??

Merci

Posté : 29 juin 2005, 09:17
par Cyrano
Non, unlink va supprimer le fichier: ouvre le en mode "w" plutôt, ça va écrire en écrasant le contenu existant

Posté : 29 juin 2005, 09:18
par Cobaye
en fait y a un truc dans ton code qui va pas, je t'explique

tu fait un unlike qui supprime le fichier puis tu fait un fopen mais avec r+ qui est forcé en lecture, donc tu lui dit ouvre un fichier en lecture mais que tu viens de supprimer !

si tu veux reécrire le contenu du fichier pas besoin de faire un unlike, un fopen(nomfichier,"w+") devrait suffire.
'w+' Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer.

Posté : 29 juin 2005, 09:25
par donny
ok
je comprends mieux maintenant
je vias modifier

Posté : 29 juin 2005, 09:28
par donny
Merci

c est bon