Meddelande

Minska
No announcement yet.

Sortera upp rader i flera filer

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Sortera upp rader i flera filer

    Hej! Har ett litet problem som jag fastnat lite på, har ett antal rader som jag vill dela upp på flera filer, men får inte riktigt till det i min kodning

    Vi säger att det är 100 rader så får det bara bara 37 rader i varje fil som skapas, dvs cirka 4 filer eller vad det blir då, att skapa första filen är ju inga problem, men efter dom första 37 raderna, hur ser jag till att den tar efterkommande 37 och lägger i *-fil2.csv och så vidare tills alla rader är uppdelade på rätt antal filer.

    Tack på förhand!
    Ja precis!

  • #2
    Utan att vara tillräckligt duktig på PHP skulle jag göra ungefär såhär:

    Kod:
    int antalPerFil = 37;
    int filNamn = 1;
    int nuvarandeRad = 1;
    stream minFilStrom = new Stream("*-fil1.csv");
    
    foreach (rad in rader) {
        SkrivTillFil(rad, minFilStrom);
        
        nuvarandeRad++;
        if (nuvarandeRad > antalPerFil) {
            filNamn++;
            nuvarandeRad = 1;
    
            minFilStrom.close();
            minFilStrom = new Stream("*-fil" . filNamn . ".csv");
        }
    }
    
    minFilStrom.close();

    Kommentera


    • #3
      Kan du inte posta din existerande kod, så man vet vad du har för förutsättningar? Är det en array av data eller nåt annat?

      Att dela upp 100 i enheter om 37 är inte svårt, använd dig av summan genom modulus (x % 37), så kommer den att returnera 0 varje "trettiosjunde" iteration.
      Johan Norberg, webbutvecklare.

      @GitHub

      Läs min blogg

      Kommentera


      • #4
        Idag ser koden ut såhär:

        PHP-kod:
                $query mysql_query("SELECT korjournal.date, korjournal.kund_id, korjournal.kund, korjournal.postort, korjournal.start, korjournal.stop, korjournal.service_id, korjournal_users.user FROM korjournal INNER JOIN korjournal_users ON korjournal.user_id = korjournal_users.id WHERE korjournal.bil_id = ".$bil." AND korjournal.date BETWEEN '".$period."-01' AND '".$period."-31' ORDER BY stop ASC ");
                
        $count=mysql_num_rows($query);        
                
                
        $content "";    
                while(
        $row mysql_fetch_Array($query)){
                
                    
        $kund_id "";
                    
        $service_id "";
                    if(
        $row["kund_id"] == "0"){
                        
        $kund_id "";
                    } else {                
                        
        $kund_id $row["kund_id"];            
                    }        
                    
                    if(
        $row["service_id"] == "0"){
                        
        $service_id "";
                    } else {                
                        
        $service_id $row["service_id"];                
                    }
                    
                    
        $content. = $row["date"].",".$kund_id.",".$row["kund"].",".$row["postort"].",".$row["start"]. ",".$row["stop"].",,,".$service_id.",".$row["user"]."\n";                
                    
                }

                echo 
        "<a href='?do=home'><button>Tillbaka</button></a><br><br>";
                echo 
        "<fieldset><legend>Generera rapport</legend>";
                
                        
                
                
        $_file "_journaler/".$bilnamn."_korjournal_".$period.".csv";
                if(
        file_exists($_file)){
                    
        unlink ($_file);
                }
                
        $handle fopen($_file'x+');
                
        fwrite($handle$content);
                
        fclose($handle); 
        Och sen när den kört klart så slänger den in värdet av $content. i filen som jag öppnar.

        Men vill helldre ha det så att den gör sådär med max 37 rader och sen skapar nästa fil som heter fil2.csv och fyller den med så många som finns kvar, dock max 37 osv till den är klar.
        Ja precis!

        Kommentera

        Working...
        X