我们获得了一个学校项目,我不知道如何去做。 所以我们要为企业建立一个数据库;我们是一家美容院。 我现在的问题是如何在表格中显示查询中的数据。
我看过以前的帖子似乎是一个答案,但我不知道它对我的案例是如何起作用的
stackoverflow question: group query results in php
所以我在这里有当前的结果和我想要它的样子的要点。基本上我希望员工姓名跨越多行,等于他们提供的服务数量。
这是我目前的代码:
<?php
if (isset($_POST['submit']) && $error == '') {
echo "<table width='auto' border='1' class='center'>
<tr>
<th scope='col'>Transaction No.</th>
<th scope='col'>Service Name</th>
<th scope='col'>Employee Name</th>
<th scope='col'>Date</th>
<th scope='col'>Adjusted Price </th>
<th scope='col'>Adjusted Cost </th>
<th scope='col'>Adjusted Parlor Dividend</th>
<th scope='col'>Adjusted Employee Dividend</th>
</tr>";
$res=mysqli_query($con, "SELECT serviceline.transnum, servicelist.srvnam, employeelist.empname, serviceline.transdate, serviceline.priceadj, serviceline.costadj, serviceline.pardivadj, servicelist.price, serviceline.empdivadj, servicelist.cost, servicelist.pardiv, servicelist.empdiv FROM EmployeeList INNER JOIN (ServiceList INNER JOIN ServiceLine ON ServiceList.SrvID = ServiceLine.SrvID) ON EmployeeList.EmpID = ServiceLine.EmpID WHERE DATE(serviceline.transdate) BETWEEN '".$fyear."-".$fmon."-01' AND '".$tyear."-".$tmon."-31'");
while($ent=mysqli_fetch_array($res))
{
$adjprc=$ent['priceadj']+$ent['price'];
$adjcst=$ent['costadj']+$ent['cost'];
$adjpardiv=$ent['pardivadj']+$ent['pardiv'];
$adjempdiv=$ent['empdivadj']+$ent['empdiv'];
echo "<tr>
<th scope='row' e>".$ent['transnum']."</th>
<td>".$ent['srvnam']."</td>
<td>".$ent['empname']."</td>
<td>".$ent['transdate']."</td>
<td>Php ".number_format($adjprc, 2, '.', '')."</td>
<td>Php ".number_format($adjcst, 2, '.', '')."</td>
<td>Php ".number_format($adjpardiv, 2, '.', '')."</td>
<td>Php ".number_format($adjempdiv, 2, '.', '')."</td>
</tr>
";}
echo "</table>";
}
mysqli_close($con);
?>
提前致谢。
答案 0 :(得分:0)
如果您想在一个表中执行此操作,就像当前代码一样,您需要将rowspan=xx
添加到单元格中,这意味着您需要知道每个名称的行数,因此您必须添加使用COUNT()
对您当前查询进行子查询。
或者,您可以使用嵌套表。所以你有一个主表,每行有两个单元格,一个用于名称,另一个用于所有其他字段的嵌套表格。类似的东西:
$last_emp="";
while($ent=mysqli_fetch_array($res))
{
$adjprc=$ent['priceadj']+$ent['price'];
$adjcst=$ent['costadj']+$ent['cost'];
$adjpardiv=$ent['pardivadj']+$ent['pardiv'];
$adjempdiv=$ent['empdivadj']+$ent['empdiv'];
if($last_emp != $ent['empname'])
{
if($last_emp != "")
{
echo "</table><td/></tr>";
}
echo "<tr>
<td>".$ent['empname']."</td>
<td><table>";
}
echo "<tr>";
<td>".$ent['transdate']."</td>
<td>Php ".number_format($adjprc, 2, '.', '')."</td>
<td>Php ".number_format($adjcst, 2, '.', '')."</td>
<td>Php ".number_format($adjpardiv, 2, '.', '')."</td>
<td>Php ".number_format($adjempdiv, 2, '.', '')."</td>
</tr>
if($last_emp != $ent['empname'])
{
$last_emp = $ent['empname'];
}
}