2017-12-29 6 views
1

Ich habe eine Tabelle wie A mit 1000 Zeilen genannt:Einsatz in die zweite Säule nach spezifischen ID in csv

id | name 
----------- 
1 | a 
2 | b 
3 | c 
4 | d 
and so on till id=1000 

Nun ich diese Tabelle exportieren möchten A als CSV, die ich in der Lage bin zu tun. Aber ich möchte Daten in 2 Spalten wie Daten bis id=499 sollte in der ersten Spalte drucken und die restlichen Daten sollten in der zweiten Spalte gedruckt werden. Und ich drucke id in CSV nicht.

Ergebnis wie diese sollten in CSV sein:

a | at500(i am using 500 for refernce that from here it shoul print in 2nd columm) 
b | bvf501 
c499| vf1000 

Dies ist der Code, den ich bis jetzt haben, die alle Zeilen in einzelne Spalte zu drucken:

$filename = "excelfilename"; 
$sep = "\t"; 

$sql = "Select `name` from `A`"; 
$result = mysqli_query($con,$sql) or die("Couldn't execute query:<br>" . 
mysqli_error($con). "<br>" . mysql_errno());  
$file_ending = "xls"; 
//header info for browser 
header("Content-Type: application/xls");  
header("Content-Disposition: attachment; filename=$filename.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

while($row = mysqli_fetch_row($result)) 
{ 
    $schema_insert = ""; 
    for($j=0; $j<mysqli_num_fields($result);$j++) 
    { 
     if(!isset($row[$j])) 
      $schema_insert .= "NULL".$sep; 
     elseif ($row[$j] != "") 
      $schema_insert .= "$row[$j]".$sep; 

     else 
      $schema_insert .= "".$sep; 

    } 

    $schema_insert = str_replace($sep."$", "", $schema_insert); 
    $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); 
    $schema_insert .= "\t"; 
    print(trim($schema_insert)); 
    print "\n"; 
} 
+1

Welchen Code haben Sie bisher, der nicht Ihren Anforderungen entspricht? – sorak

+0

@sorak hat den betreffenden Code aktualisiert – Rids

Antwort

0

Zuerst Sie die Daten aus DB lesen und behalte das Ergebnis in einem Array.

Betrachten $ full_data_array ist Ihr 1000 'name'

Dann können Sie das Array in zwei Teile aufgeteilt, wie dies (da Sie je 500 benötigen),

$chunk_array = array_chunk($full_data_array, 2); 

Sie werden mehrdimensionale erhalten numerisch indiziertes Array .

diese beiden Array wie folgt kombinieren,

$combined_array = array_map(function ($a1, $a2) { return $a1 . ' , ' . $a2; } , $chunk_array[0], $chunk_array[1]); 

Dann Schleife durch diese $ combined_array die CSV wie diese, ersetzen oder verändern // $tempString .= $schema_insert1.$sep.$schema_insert2; diese Linie mit Ihrer Anforderung

$file = fopen("your_csv_name.csv","w"); 
foreach ($combined_array as $line) 
    { 
    fputcsv($file,explode(',',$line)); 
    } 
fclose($file); 
0
$filename = "excelfilename"; 
$sep = "\t"; 

$sql = "Select `name` from `A`"; 
$result = mysqli_query($con,$sql) or die("Couldn't execute query:<br>" . 
mysqli_error($con). "<br>" . mysql_errno());  
$file_ending = "xls"; 
//header info for browser 
header("Content-Type: application/xls");  
header("Content-Disposition: attachment; filename=$filename.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

$tempData=""; 
while($row = mysqli_fetch_row($result)) 
{ 
    $tempData=$row; 
} 

$size=count($tempData)/2; 
for($i=0;$i<$size;$i++){ 
    $schema_insert1 = ""; 
    for($j=0; $j<count($tempData[$i]);$j++) 
    { 
     if(!isset($tempData[$i][$j])) 
      $schema_insert1 .= "NULL".$sep; 
     elseif ($tempData[$i][$j] != "") 
      $schema_insert1 .= $tempData[$i][$j].$sep; 

     else 
      $schema_insert1 .= "".$sep; 

    } 

    $schema_insert2 = ""; 
    for($j=0; $j<count($tempData[$i+$size]);$j++) 
    { 
     if(!isset($tempData[$i+$size][$j])) 
      $schema_insert2 .= "NULL".$sep; 
     elseif ($tempData[$i+$size][$j] != "") 
      $schema_insert2 .= $tempData[$i+$size][$j].$sep; 

     else 
      $schema_insert2 .= "".$sep; 

    } 

    $schema_insert1 = str_replace($sep."$", "", $schema_insert1); 
    $schema_insert2 = str_replace($sep."$", "", $schema_insert2); 

    // Now concatenation them both strings as you want 
    // $tempString .= $schema_insert1.$sep.$schema_insert2; 
} 

zu erstellen .

Hoffe, dass diese Arbeit für Sie.

+0

Hinweis: Undefinierte Variable: tempString – Rids

+0

Diese Zeile am Anfang der Schleife einfügen $ tempString = ""; – Farhan

+0

Oder kurz vor der Verwendung – Farhan

Verwandte Themen