如何使用特定于最后一行的条件在循环中回显特定数据

时间:2012-10-15 17:17:01

标签: php mysql loops accounting

对于会计系统,我使用PHP& MySQL的。我有两张桌子“GROUP”和“ACHEADS”。

在GROUP表中,我有:

---------------------
| id (AI) |  group  |
---------------------
|    1    | Group 1 |
|    2    | Group 2 |
---------------------

在ACHEADS表中,我有:

-----------------------------------------
| id (AI) |  ac_head    | amount | j_id |
-----------------------------------------
|    1    | Something 1 |  2000  |   1  |
|    2    | Something 2 |  1000  |   1  |
|    3    | Something 3 |  5000  |   2  |
|    4    | Something 4 |  4000  |   2  |
|    5    | Something 5 |  8000  |   2  |
-----------------------------------------

我已将两个表格加入GROUP.id<< - >> ACHEADS.j_id

现在我需要预览这样的数据:

----------------------------------------------
Particulars               | Details | Total  |
----------------------------------------------
Group 1                   |         |        |
 Something 1              |    2000 |        |
 Something 2              |    1000 |   3000 |
----------------------------------------------
Group 2                   |         |        |
 Something 3              |    5000 |        |
 Something 4              |    4000 |        |
 Something 5              |    8000 |  17000 |
----------------------------------------------
GRAND TOTAL               |         |  20000 |
------------------------------------==========

挑战

  1. 该表将是动态的,将在PHP循环中生成(我是 使用WHILE循环)
  2. 记住:这是一张桌子,如果我错过了回复td,那么桌子就会分手
  3. 问题

    • 当我使用循环时,它会回显详细信息td上的数据 准确。但是根据j_id的细节行的总和也是 在每个td回复

    预览:

    ----------------------------------------------
    Particulars               | Details | Total  |
    ----------------------------------------------
    Group 1                   |         |        |
     Something 1              |    2000 |   3000 |
     Something 2              |    1000 |   3000 |
    ----------------------------------------------
    Group 2                   |         |        |
     Something 3              |    5000 |  17000 |
     Something 4              |    4000 |  17000 |
     Something 5              |    8000 |  17000 |
    ----------------------------------------------
    

    我的想法

    • 如果我可以检查它是否是查询的最后一个数据,如果是isset, 然后用它的td回显总量。 (但请记住 挑战#2)
    • 是否需要foreach循环?

    我失败了

    • 我尝试检查max(id),它在SQL中工作正常,但不能使用它 循环中的条件。

    (如果你仍然无法理解我,那么在第二阶段,我会发布我的代码。)

2 个答案:

答案 0 :(得分:2)

我会做2个循环:

  1. id
  2. 获取GROUP
  3. 根据amount
  4. ACHEADS获取j_id

    这看起来像(未经测试的代码):

    echo '<table><tr><td>Particulars</td><td>Details</td><td>Total</td></tr>';
    
    $total = 0;
    
    $q1 = "SELECT id FROM `GROUP`";
    $res1 = mysqli_query($q1);
    while($row1 = mysqli_fetch_assoc($res1)) {
        echo 
    
        $group_total = 0;
        $j_id = $row1[id];
    
        $q2 = "SELECT ac_head, amount FROM ACHEADS WHERE j_id = $j_id";
        $res2 = mysqli_query($q2);
        while($row2 = mysqli_fetch_assoc($res1)) {
    
            echo '<tr><td>' . $row2[ac_head] . '</td>';
            echo '<td>' . $row2[amount] . '</td></tr>';
    
            $group_total = $group_total + $row2[amount];
            $total = $total + $row[amount];
        }
    
       echo '<tr><td colspan="3" align="right">' . $group_total . '</td></tr>';
    }
    
    echo '<tr><td>GRAND TOTAL</td>';
    echo '<td colspan="2" align="right">' . $total . '</td></tr>';
    echo "</table>";
    

答案 1 :(得分:0)

njk rockz!
它工作得很好。非常感谢,兄弟 - 它给了我很多帮助,我无法解释 这是我的最终代码:
    

<tr style="background: #000; color:#fff;">
<th style="width:150px;">Particulars</th>
<th>Details</th>
<th>Amount</th>
</tr>

<tr>
<td>Opening Balance</td>
<td></td>
<td>500000</td> <!-- till not dynamic -->
</tr>

<?php
$total = 0;
$se = "SELECT * FROM group";
$res = mysql_query($se) or die (mysql_error());
while ($row = mysql_fetch_array($res))
{
?>

<tr>
<td colspan="3" style="font-weight:bold;"><?php echo $row['group']; ?></td>
</tr>

<tr>
<?php
$group_total = 0;
$se1 = "SELECT ac_head, amount FROM `acheads` WHERE `j_Id` = '".$row['id']."'";
$res1 = mysql_query($se1) or die (mysql_error());
while ($row1 = mysql_fetch_array($res1))
{
$group_total = $group_total + $row1['amount'];
?>
<td><?php echo $row1['ac_head']; ?></td>
<td><?php echo $row1['amount']; ?></td>
<td>&nbsp;</td>
</tr>

<?php
}
echo '<tr><td colspan="3" align="right">' . $group_total . '</td></tr>';
}
?>
</table>
</code>