вставить во второй столбец после конкретного идентификатора в CSV

У меня есть стол с именем A с 1000 строками

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

Теперь я хочу экспортировать эту таблицу A как CSV что я могу сделать. Но я хочу данные в 2 столбца, как данные до id=499 должен печататься в 1-м столбце, а остальные данные должны печататься во втором столбце. И я не печатаю id в CSV,

Результат должен быть таким в CSV:

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

Это код, который у меня есть до сих пор, который печатает все строки в один столбец:

$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

Решение

Сначала вы можете прочитать данные из БД и сохранить результат в массиве.

Учтите, $ full_data_array — это ваше имя 1000

Затем вы можете разделить массив на два (так как вам нужно 500 каждый), как это,

$chunk_array = array_chunk($full_data_array, 2);

Вы получите многомерный численно проиндексированный массив.

Объедините эти два массива, как это,

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

Затем переберите этот $ comb_array, чтобы создать CSV, как это,

$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;
}

Заменить или изменить // $tempString .= $schema_insert1.$sep.$schema_insert2; эта строка с вашим требованием.

Надеюсь, эта работа для вас.

0

По вопросам рекламы [email protected]