简体   繁体   中英

How Can I Break the Output from same result a PHP While Loop?

For example in while loop the result will be displayed order by vehicle numbers like this

Vehicle num    total_amount
TEST V 1234    500
TEST V 1234    500
TEST V 1234    500
TEST w 785     1000
TEST w 785     1000
TEST Z 589     700
TEST Z 589     700
TEST Z 589     700

But i want to like this.

Vehicle num    total_amount
TEST V 1234    500
TEST V 1234    500
TEST V 1234    500

Vehicle No: TEST V 1234
Total amount: 1500

TEST w 785     1000
TEST w 785     1000

Vehicle No: TEST w 785
Total amount: 2000


TEST Z 589     700
TEST Z 589     700
TEST Z 589     700

Vehicle No: TEST Z 589
Total amount: 2100

I want display like dis using php + mysql how to solve this problem, can anybody tell?

here my code example?

<table class="table table-table-striped accord-content even" width="100%" style="clear:both;" id="textttt">
  <thead>
    <tr class="bg-green" style="background:#DBB74E!important; color:#698602 !important" >
      <th>S No</th>
      <th>Owner Name</th>
      <th>Truck Number</th>
      <th>total</th>
    </tr>
  </thead>
  <?php

$query_all = mysql_query("select * from testing where ownername='" . $_POST['ownername'] . "' and dc_date between '".$weekenddate."'   and   '" . $_POST['datewe'] . "' and status='Verified' order by truckk_number ASC");

        while ($fet_all = mysql_fetch_array($query_all)) {  ?>
  <tr class="accord-content even bg-gray" style="color:#698602 !important;">
    <td><?php echo $fet_all['id']; ?></td>
    <td><?php echo $fet_all['ownername']; ?></td>
    <td><?php echo $fet_all['truckk_number']; ?></td>
    <td><?php echo $fet_all['total']; ?></td>
  </tr>
  <?php   } ?>
</table>

I want display vehicle wise total and vehicle number.

Because there is no code in your question, I use pseudo code here

Set track = null, total = 0
Loop through your collection
    If track is not null and current item vehicle_num is different from track
        Print current vehicle_num
        Print total
        Set total = 0
    else
        Update total = total + current total_amount
    endif
    Set track = current item vehicle_num
    Print current item info
endloop

For your code, consider replacing this piece:

while ($fet_all = mysql_fetch_array($query_all)) {  ?>
  <tr class="accord-content even bg-gray" style="color:#698602 !important;">
    <td><?php echo $fet_all['id']; ?></td>
    <td><?php echo $fet_all['ownername']; ?></td>
    <td><?php echo $fet_all['truckk_number']; ?></td>
    <td><?php echo $fet_all['total']; ?></td>
  </tr>
  <?php   } ?>

to this:

<?php

#other code

$track = null;
$total = 0;

while ($fet_all = mysql_fetch_array($query_all)) :?>    
  <?php if ($track !== null && $track !== $fet_all['truckk_number']): ?>
    <tr>
        <td colspan="3">Vehicle No:</td>
        <td><?php echo $track; ?></td>
    </tr>
    <tr>
        <td colspan="3">Total:</td>
        <td><?php echo $total; ?></td>
    </tr>
    <?php $total = $fet_all['total']; ?>
  <?php else: ?>
    <?php $total += $fet_all['total'];  ?>
  <?php endif; ?>
  <tr class="accord-content even bg-gray" style="color:#698602 !important;">
    <td><?php echo $fet_all['id']; ?></td>
    <td><?php echo $fet_all['ownername']; ?></td>
    <td><?php echo $fet_all['truckk_number']; ?></td>
    <td><?php echo $fet_all['total']; ?></td>
  </tr>
  <?php $track = $fet_all['truckk_number']; //add this line ?>
<?php endwhile; ?>
<?php if ($total > 0): ?>
    <tr>
        <td colspan="3">Vehicle No:</td>
        <td><?php echo $track; ?></td>
    </tr>
    <tr>
        <td colspan="3">Total:</td>
        <td><?php echo $total; ?></td>
    </tr>
<?php endif; ?>

your query is something like this...

SELECT *, SUM(total_amount)  FROM YOUR_TABLENAME  GROUP BY Vehicle_num_COLUMN_NAME

use GROUP BY clause.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM