2013-07-31 3 views
0

기본적으로 웹 사이트에서 주문한 송장 번호, 이름, 주소 등이 포함 된 주문 정보가 포함 된 CSV 파일이 있습니다. PHP를 사용하여 송장으로 변환했습니다. 그것은 꽤 좋아 보인다. 그러나 나는 1 비트에 완전히 붙이게된다.fgetcsv 배열의 행 합치기

다음은 fgetcsv를 사용하는 시작 비트입니다. 사람이 하나 개 이상의 항목을 주문한 경우 CSV 파일에

<?PHP 
$file_handle = fopen("orders.csv", "r"); 
while (!feof($file_handle)) { 
$csvline = fgetcsv($file_handle, 1024); 
?> 

, 그것은 이전 행과 동일한 송장 번호와 새 행에 표시되지만 송장의 첫 번째 행에서 제품을 표시하지 않습니다 번호 : PHP는이 값을 사용

100001,Bradley Manning,[email protected],Address,Product A, 
100002,Mr Snowden,[email protected],Address,Product A, 
100003,Dr Dre,[email protected],Address,,, 
100003,,,,,,,,,,"Product A", 
100003,,,,,,,,,,"Product B", 
100003,,,,,,,,,"Product C", 

(예 : $ csvline [0] 송장 번호.)과 좋은 인쇄 할 수있는 HTML 파일을 넣습니다. 하지만 동일한 송장 번호로 시작하는 행을 동일한 HTML 테이블 (첫 번째 주문한 제품 아래 셀에 있음)에 가져올 수 있어야합니다.

내 아주 심하게 말한 문제에 대한 제안은 대단히 감사하겠습니다!

ps.

<?php 
$exvat = ($csvline[15]/1.2); 
$exvatrounded = number_format($exvat, 2, '.', ''); 
?> 
<div class="t2 th">Description</div> 
<div class="t3 th">Unit Price</div> 
<div class="t4 th">Quantity</div> 
<div class="t5 th">VAT Rate</div> 
<div class="t6 th">Amount</div> 
<div class="even"> 
<div class="t2 td"><?php echo $csvline[12]; ?></div> 
<div class="t3 td">&pound;<?php echo $exvatrounded; ?></div> 
<div class="t4 td"><?php echo $csvline[14]; ?></div> 
<div class="t5 td"><?php echo $csvline[16]; ?></div> 
<div class="t6 td">&pound;<?php echo $csvline[20]; ?></div> 
</div> 
<div class="odd"> 
<div class="t2 td">MORE PRODUCT LINES??????????????????</div> 
<div class="t3 td">&pound;AMOUNT</div> 
<div class="t4 td">QUANTITY</div> 
<div class="t5 td">VAT</div> 
<div class="t6 td">&pound;TOTAL AMOUNT</div> 

답변

1

경고 귀하의 CSV는 표준화되지 않습니다 - 그래서 현재 CSV 레이아웃 거의 불가능하다 일을 점점 다음은 PHP/HTML 코드입니다. (정규화)이 CSV

사용

Array 
(
    [100001] => Array 
     (
      [0] => Array 
       (
        [0] => 100001 
        [1] => Bradley Manning 
        [2] => [email protected] 
        [3] => Address 
        [4] => Product A 
        [5] => 
       ) 

     ) 

    [100002] => Array 
     (
      [0] => Array 
       (
        [0] => 100002 
        [1] => Mr Snowden 
        [2] => [email protected] 
        [3] => Address 
        [4] => Product A 
        [5] => 
       ) 

     ) 

    [100003] => Array 
     (
      [0] => Array 
       (
        [0] => 100003 
        [1] => Dr Dre 
        [2] => [email protected] 
        [3] => Address 
        [4] => 
        [5] => 
        [6] => 
       ) 

      [1] => Array 
       (
        [0] => 100003 
        [1] => 
        [2] => 
        [3] => 
        [4] => Product A 
        [5] => 
       ) 

      [2] => Array 
       (
        [0] => 100003 
        [1] => 
        [2] => 
        [3] => 
        [4] => Product B 
        [5] => 
       ) 

      [3] => Array 
       (
        [0] => 100003 
        [1] => 
        [2] => 
        [3] => 
        [4] => Product C 
        [5] => 
       ) 

     ) 

) 

:

$file_handle = fopen("orders.csv", "r"); 
$orders = array(); 
while (!feof($file_handle)) { 
    $csvline = fgetcsv($file_handle, 1024); 
    $orders[$csvline[0]][] = $csvline; 
} 
//print_r($orders); 

어레이를 구축 .. array하여 출력에서 ​​ array 통해 다음 루프에 key와 송장 번호를 사용
100001,Bradley Manning,[email protected],Address,Product A, 
100002,Mr Snowden,[email protected],Address,Product A, 
100003,Dr Dre,[email protected],Address,,, 
100003,,,,"Product A", 
100003,,,,"Product B", 
100003,,,,"Product C", 

또한 divs

대신 테이블 형식의 데이터에 대한 tables를 보내고하는 것은 당신의 HTML

<?php foreach($orders as $order_id => $products) { ?> 
    <div class="t2 th">Description</div> 
    <div class="t3 th">Unit Price</div> 
    <div class="t4 th">Quantity</div> 
    <div class="t5 th">VAT Rate</div> 
    <div class="t6 th">Amount</div> 
    <?php foreach($products as $product) { ?> 
    <div class="even"> 
     <div class="t2 td"><?php echo $product[4] ?></div> 
     <div class="t3 td">&pound;</div> 
     <div class="t4 td"></div> 
     <div class="t5 td"></div> 
     <div class="t6 td"></div> 
    </div> 
    <?php } ?> 
<?php } ?> 
+0

뛰어난이를 사용하려면, 감사합니다! 한 가지 더 (이 모든 것에 완전히 새로운 것!), 어떻게 PHP/html에서 사용하겠습니까? –

+0

예제와 함께 답변이 업데이트되었습니다. – user20232359723568423357842364