Wpis z mikrobloga

Mirki, chcę sobie zrobić generator faktur z danych z pliku csv, każda linia w csv zaczyna się numerem zamówienia ($orderid). Problem polega tylko na tym że jeśli w zamówieniu jest 2 lub więcej rzeczy, to jest to rozbite na x linii z takim samym numerem zamówienia($orderid) na początku.

Mam coś takiego, prostego... i jak zmusić ten kod do sprawdzania np kolejnych liniii czy nie zaczynają się tamim samym numerem zamówienia i zapisania ich jeszcze w tym samym cyklu głownego obiegu pętli? Pętla w pętli?

if (($handle = fopen($file, "r")) !== FALSE) {
fgetcsv($handle);
while (($data = fgetcsv($handle, 1000, "\n")) !== FALSE) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
$line = $data[$c];
$column = explode("\t", $line);

$order_id = $column[0]; //order-id
$sales_channel = $column[33]; //sales-channe

if($sales_channel == "xxx") {
generate_pdf $order_id etc etc
}
}
}
}

Przykłąd listy
nrzam, cola, colb, colc
123 a b c
124 a b c
124 a b c
111 a b c
115 a b c
115 a b c
115 a b c

W tym przyapdku dla numeru zamówienia 123 wygeneruje mi poprawnie, ale już np 124 nie, tutaj musiałbym dostać obie linie 124 w tablicy i je sobie przetworzyć przed wygenerowaniem pdf, podbnie z 115.

#programowanie #php #programista15k
  • 3
Oddziel od siebie etap odczytywania danych (przechodzenie po pliku csv) i etap generowania pdf.

Najpierw odczytaj wszystkie rekordy z csv i wrzuć je do odpowiedniej struktury danych. Takiej, która obsłuży wiele pozycji dla jednego orderId.

W drugim etapie przejdź do generowania pdf.
@cube: @Kasprowy:

php
require "vendor/autoload.php";
use Konekt\PdfInvoice\InvoicePrinter;

$file = $argv[1];
function amzProceed($go) {
global $file;
if (($handle = fopen($file, "r")) !== FALSE) {
$array = array();
fgetcsv($handle);
while (($data = fgetcsv($handle, 1000, "\n")) !== FALSE) {
$num = count($data);
$num1++;
for ($c=0; $c < $num; $c++) {
$line = $data[$c];
$column = explode("\t", $line);

$order_id = $column[0];
$payments_date = $column[3];
$currency = $column[10];

$buyer_name = $column[16];
$address1 = $column[17];

$item_name
dedyk - @cube: @Kasprowy: 
php
require "vendor/autoload.php";
use Konekt\PdfInvoic...

źródło: comment_1632432362eg2G3nXZEyD3RhJ4oMtiJX.jpg

Pobierz