让这段代码从db生成多个表。问题是,一个不知道如何关闭表,因为我有一些规则在我的PHP内使用if和else
<?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,",",".").' €</td>
<td>'.number_format($row["Sumtotale_parziale"],2,",",".").' €</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à</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,",",".").' €</td>
<td>'.number_format($row["Sumtotale_parziale"],2,",",".").' €</td>
</tr>
</tbody></table>';
}
$dates_precedente = $dates;
}
?>
现在的问题是,如果日期是唯一的,我可以关闭该表,但如果$ dates不是唯一的,则会生成其他行。我试图找到一条规则说,当$ dates === $ dates_precedente并且它是最后一个,所以你也可以放</tbody></table>
答案 0 :(得分: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
时关闭当前表,之后会启动一个新表(不会像在示例中那样关闭它)。然后,在循环finsihed后,你必须关闭当前表。
答案 1 :(得分: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,",",".").' €</td>
<td>'.number_format($row["Sumtotale_parziale"],2,",",".").' €</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à</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,",",".").' €</td>
<td>'.number_format($row["Sumtotale_parziale"],2,",",".").' €</td>
</tr>';
}
$dates_precedente = $dates;
}