如何在foreach中嵌套循环来计算汽车租赁率和天数

时间:2014-07-17 16:08:27

标签: php

我正在租车网站上工作。我设法使用foreach关联数组显示每辆车的相关信息。现在的问题是在每张车的表格中显示租赁天数和数量......

例如:

 car 1
 image for car 1
 days 1    7     30
 amt  100  300    1500

 car 2
 image for car 2
 days 1    7     30
 amt  250  400    3500

依此类推......如何用这段代码实现这个目标?

<?php
//select query

$query_showall = "SELECT rental.*,car_name.*,gallery.*,car_make.* FROM rental,car_name,gallery,car_make  WHERE car_name.carName_id=gallery.carName_id AND car_name.carMake_id=car_make.carMake_id  
     AND rental.carName_id=car_name.carName_id GROUP BY rental.carName_id";

//while loop
$result_showall = mysql_query($query_showall) or die(mysql_error());
while ($row_showall = mysql_fetch_array($result_showall)) {
    $carMake_all = $row_showall['carName'];
    $carmake_1[$row_showall['carName_id']][] = $row_showall;
    $car_id[] = $row_showall['carName_id'];
}

// foreach to display all info

foreach ($carmake_1 as $make_1 => $name_1) {

    foreach ($name_1 as $n_1) {
        if (isset($n_1['detail'])) {
            $detail_1 = $n_1['detail'];
            $detail_1 = nl2br($detail_1);
        } else {
            $detail_1 = "Car Detail";
        }
        ?>
        <tr>
            <td class='carname'><h2><?php echo $n_1{'carName'}; ?></h2></td>
            <td rowspan="2" valign="top" class="cardetail"><?php echo $detail_1; ?>
                <br/><br/>

                <a class="book" href="book_now.php?name_id=<?php echo $n_1['carName_id']; ?>">Book <?php echo $n_1['carName_id']; ?></a>
    </td></tr>



echo"<tr><td class='img'>{$n_1['carName_id']}<img src='management/uploads/{$n_1['carMake_id']}/{$n_1['gallery']}' width='400' height='200'>";?>
    </td></tr>

<tr>

    <td>
        .....here to display days and amounts for each car....
    </td>
</tr>

租赁表的数据库结构

rental_id rental_days rental_amount carName_id

1 1 50 101
2 7 550 101
3 30 5050 101

我试图通过保留上述查询来显示每辆车的日期和金额     echo“{$ n_1 ['rental_days']}”;
    echo“{$ n_1 ['rental_amount']}”;

它仅显示在租借表中为该车辆ID键入的第一个数据。显然没有循环。任何人都建议我如何循环上面的代码?

1 个答案:

答案 0 :(得分:0)

您有一个排序的数据数组,其中包含半复制数据,如:

id  make  model  days_rented  amount paid
1   ford  escort 10           500
1   ford  escort 24           1100
2   honda accord 5            350

所以你要跟踪最后一个id。如果当前id与最后一个id不同,则显示新车的html。如果您再次获得同一辆车,则只需显示租车详情。

$last_car_id = -1;

while ($row = mysql_fetch_array($result_showall)) {
  $car_id = $row['carname_id'];
  if ($last_car_id != $car_id) {
    // we have a new car
    if (!$last_car_id === -1) { // if this is not the very first car
      // close the rental details table, and the car's html container
    }

    // build html for new car, display all details that are specific to this car like make and model
    // build html to open a table containing rental details

    $last_car_id = $car_id;

  }
  // html to display rental details as a table row
}
// close the rental details table, and the car's html container (same code as above)