2011-04-04 6 views
-1

Ce que j'ai besoin de ce code est de créer un nouveau fichier CSV et de l'appeler output_1.csv, d'écrire 100 lignes dans ce fichier CSV, puis de le sauvegarder, de créer output_2.csv et d'écrire jusqu'à 100 lignes, et continuer à créer 100 fichiers de ligne jusqu'à ce que toutes les informations sont épuisées. Quelqu'un peut il m'aider avec ça?Fichiers PHP et CSV + incréments

C'est ce que je dois travailler. En ce moment, il écrit juste dans 1 fichier jusqu'à ce que tout soit épuisé. Honnêtement, j'ai besoin de cela pour faire 100 000 lignes à la fois, mais à des fins de test, 100 est bien, je peux le changer.


<?php 

include "base.php"; 

//$result1 = mysql_query("SELECT * FROM pts_ultd , scrape_data WHERE pts_ultd.B == scrape_data.R"); 

$a = "4"; 

$result1 = mysql_query("SELECT * FROM scrape_data , pts_ultd WHERE pts_ultd.P_B = scrape_data.S_R && pts_ultd.P_E != '".$a."' "); 

//grab all the content 
while($r=mysql_fetch_array($result1)) 
{ 
$A = $r["S_A"]; 
$B = $r["S_B"]; 
$C = $r["S_C"]; 
$D = $r["S_D"]; 
$E = $r["S_E"]; 
$F = $r["S_F"]; 
$G = $r["S_G"]; 
$H = $r["S_H"]; 
$I = $r["S_I"]; 
$J = $r["S_J"]; 
$K = $r["S_R"]; 
$L = $r["S_L"]; 
$M = $r["S_M"]; 
$N = $r["S_N"]; 
$O = $r["S_O"]; 
$P = $r["S_P"]; 
$Q = $r["S_Q"]; 
$R = $r["S_R"]; 
$S = $r["P_D"]; 

//this is where the intering of the data takes place currently.. 
$cvsData = $A . "," . $B . "," . $C . "," . $D . "," . $E . "," . $F . "," . $G . "," . $H . "," . $I . "," . $J . "," . $K . "," . $L . "," . $M . "," . $N . "," . $O . "," . $P . "," . $Q . "," . $R . "," . $S ."\n"; 


$fp = fopen("feed_output.csv","a"); // $fp is now the file pointer to file $filename 

if($fp){ 
fwrite($fp,$cvsData); // Write information to the file 
fclose($fp); // Close the file 



} // end if 



}//end while 


?> 
+3

Vous aurez plus de chance ici si vous posez des questions spécifiques plutôt que de demander aux gens d'écrire votre code pour vous. –

Répondre

1

Vous pouvez le faire facilement en gardant une variable compteur.

$i++; 
$file_index = floor($i/100); 

file_put_contents("output.$file_index.csv", $cvsData, 
        FILE_APPEND|LOCK_EX); 

La dernière ligne remplace votre construction fopen/fwrite/fclose.

1

Ceci est très basique. Une "machine à états" simple fera cela pour vous:

$lines = 0; 
$repeats = 0; 
$fh = fopen("feed_output-{$repeats}", "wb"); 
while(... generate a row...) { 
    fwrite($fh, $row); 
    if ($lines % 100 = 0) { 
     fclose($fh); 
     $repeats++; 
     fopen("feed_output-{$repeats}", "wb"); 
    } 
    $lines++; 
} 
fclose($fh); 

Fondamentalement, ouvrez un fichier, puis commencez à écrire des lignes. Si le nombre de lignes écrites est un multiple de 100, fermez le fichier précédent, ouvrez-en un nouveau et continuez avec un nouveau nom de fichier. REpeat until done, puis fermez le dernier fichier.