2015-10-06 54 views
1

有此代碼可以從數據庫生成多個表。問題是,不知道如何關閉表,因爲我有一些規則,我的PHP裏面有if和elsewhile循環和html表

<?php 
mysql_connect("localhost","root",""); 
mysql_select_db('test'); 


$barcode_cliente='1111111111111'; 

$sql="SELECT ora, prezzo, data, prodotto, SUM(quantita) as QtyTotal, SUM(totale_parziale) as Sumtotale_parziale 
FROM barcode_consumazioni 
GROUP BY 
ora, data, prodotto"; 
$result=mysql_query($sql); 
$dates_precedente = NULL; 
while($row=mysql_fetch_array($result)){ 
$dates="Ordine del ".$row["data"]." delle ore ".$row["ora"]; 
if ($dates === $dates_precedente) { 
echo '<tr> 
     <td>'.$row["prodotto"].'</td> 
     <td> x'.$row["QtyTotal"].'</td> 
     <td>'.number_format($row["prezzo"],2,",",".").' &euro;</td> 
     <td>'.number_format($row["Sumtotale_parziale"],2,",",".").' &euro;</td> 
    </tr>'; 
} 
else 
{ 
echo '<table style="text-align:center; margin-top:20px;" align="center" cellpadding="5"> 
<caption><u><b>'.$dates.'<b/></u><br /></caption> 
<thead style="background-color:#EBE9E9"> 
    <tr > 
     <th scope="col">Prodotto</th> 
     <th scope="col">Quantit&agrave;</th> 
     <th scope="col">Prezzo</th> 
     <th scope="col">Totale parziale</th> 
    </tr> 
</thead> 
<tbody style="background-color:F5FFFF"> 
    <tr> 
     <td>'.$row["prodotto"].'</td> 
     <td> x'.$row["QtyTotal"].'</td> 
     <td>'.number_format($row["prezzo"],2,",",".").' &euro;</td> 
     <td>'.number_format($row["Sumtotale_parziale"],2,",",".").' &euro;</td> 
    </tr> 
</tbody></table>'; 
} 

$dates_precedente = $dates; 

} 

?> 

現在的問題是,如果日期是獨一無二的,我可以關閉表,但如果$日期不唯一,則會生成其他行。我試圖找到說規則,當$日期=== $ dates_precedente,它是最後一個,所以你可以也把</tbody></table>

+0

但它必須產生一些表不是一個 – cicciopasticcio

+0

目前還不清楚你想要什麼,你能吐出結果你正在尋找? – Demodave

回答

1

試試這個:

$dates_precedente = NULL; 
    echo "<table>"; 
    while($row=mysql_fetch_array($result)){ 
     $dates="Ordine del ".$row["data"]." delle ore ".$row["ora"]; 
     if ($dates === $dates_precedente) { 
      echo '<tr>....</tr>'; 
     } 
     else 
     { 
      echo '</table><table><tr>...</tr>'; 
     } 
    } 
    echo "</table>"; 

這僅關閉當前表$dates != $dates_precedente,然後啓動一個新表(不像你在例子中那樣關閉它)。然後,在循環完成後,您必須關閉當前表格。

+0

完美!非常感謝! – cicciopasticcio

0

我建議你使用mysqli_ *函數或PDO因爲mysql_ *函數棄用(Why shouldn't I use mysql_* functions in PHP?)。此外,請關注MySQL和GROUP BY關於選擇未在GROUP BY(https://dev.mysql.com/doc/refman/5.1/en/group-by-handling.html)中命名的非聚集列的信息。

相結合,與已經@Tomas Ceruti提供的解決方案,您可以使用以下方法:

$connection = mysqli_connect('localhost', 'root', 'your_password', 'your_database'); 
mysqli_set_charset($connection, 'utf8'); 
if (!$connection) { 
    die("Database connection failed: " . mysqli_error()); 
} 

$barcode_cliente = '1111111111111'; 

$sql = " 
    SELECT ora, prezzo, data, prodotto, SUM(quantita) as QtyTotal, SUM(totale_parziale) as Sumtotale_parziale 
    FROM barcode_consumazioni 
    GROUP BY 
    ora, data, prodotto"; 
$result = mysqli_query($connection, $sql); 
if(!$result) { 
    die("SQL Error: " . mysqli_error($connection); 
} 

$dates_precedente = NULL; 
while ($row = mysqli_fetch_array($result)) { 
    $dates = "Ordine del ".$row["data"]." delle ore ".$row["ora"]; 
    if ($dates === $dates_precedente) { 
     echo ' 
     <tr> 
      <td>'.$row["prodotto"].'</td> 
      <td> x'.$row["QtyTotal"].'</td> 
      <td>'.number_format($row["prezzo"],2,",",".").' &euro;</td> 
      <td>'.number_format($row["Sumtotale_parziale"],2,",",".").' &euro;</td> 
     </tr>'; 
    } else { 
     echo ' 
      </tbody> 
     </table> 
     <table style="text-align:center; margin-top:20px;" align="center" cellpadding="5"> 
      <caption><u><b>'.$dates.'<b/></u><br /></caption> 
      <thead style="background-color:#EBE9E9"> 
       <tr > 
        <th scope="col">Prodotto</th> 
        <th scope="col">Quantit&agrave;</th> 
        <th scope="col">Prezzo</th> 
        <th scope="col">Totale parziale</th> 
       </tr> 
      </thead> 
      <tbody style="background-color:F5FFFF"> 
       <tr> 
        <td>'.$row["prodotto"].'</td> 
        <td> x'.$row["QtyTotal"].'</td> 
        <td>'.number_format($row["prezzo"],2,",",".").' &euro;</td> 
        <td>'.number_format($row["Sumtotale_parziale"],2,",",".").' &euro;</td> 
       </tr>'; 
    } 
    $dates_precedente = $dates; 
}