如何循环while循环

时间:2014-07-11 05:57:04

标签: php mysql

我想在循环中显示特定车型的汽车数量。

我希望看起来像这样:

**Car Type 1**
Car name 1
Car name 2

**Car Type 2**
Car name 1
Car name 2
Car name 3

我的问题是,为汽车制造显示的数据是正确的,但它在第一次循环时重复了多次。

像这样:

**Car Type 1**
Car name 1
Car name 1
Car name 2
Car name 2

**Car Type 2**
Car name 1
Car name 1
Car name 1
Car name 2
Car name 2
Car name 2
Car name 3
Car name 3
Car name 3

我知道这是因为我将第二个while循环置于第一个循环中。

如果我把它放在第一个while循环之外,我如何循环使用特定的汽车类型?

我的代码是:

<?php
if (isset($num) && ($num > 0)) {
    while ($row = mysql_fetch_array($result)) //first while loop
    {
    $carType_id = $row['carType_id'];
    $carType    = $row['carType'];
    echo '<b>' . $carType . '</b><br/>';

    mysql_select_db($database);
    $query_name = "SELECT car_make.carMake_id,car_make.carMake,type_make.carMake_id,type_make.carType_id,car_type.carType_id FROM car_make,car_type,type_make WHERE car_make.carMake_id=type_make.carMake_id AND type_make.carType_id='$carType_id'";
    $result_name = mysql_query($query_name) or die(mysql_error());

    while ($row = mysql_fetch_array($result_name)) //second while loop
    {
        $carMake_id = $row['carMake_id'];
        $carMake = $row['carMake'];
        echo $carMake . '<BR/>';
    }
  }
}
?>

我犯了什么错误,我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

在我的头脑中,有两种方式。

一个是您只查询汽车类型的地方,循环浏览每种汽车类型以打印类型。然后在打印每种类型后,查询该汽车类型下的名称,然后循环每个名称进行打印。

第二种方法是一起查询类型和名称,按类型排序。您还需要一个变量来存储当前类型。对于每个记录,只需检查是否已打印汽车类型,如果没有,则打印类型并将当前类型存储在变量中。带上车名。

答案 1 :(得分:0)

这是你需要做的事情

注意:

  1. 使用db
  2. 中的正确名称替换字段cartype,carname,mytable
  3. mysql已弃用,因此我正在使用mysqli
  4. [在while循环中的foreach]

    代码在这里:

    <?php
    $con=mysqli_connect("hostname","username","password","dbname");
    //Replace with appropriate connectinos
    $sql = $con->query('select cartype, carname from mytable');   
    while ($row = $sql->fetch_array(MYSQLI_ASSOC)) {
        $type_make[$row['cartype']][] = $row['carname'];
    }
    
    foreach ($type_make as $cartype => $carname) {
        echo "<b>".$cartype . "</b><br>";
        foreach ($carname as $title) {
            echo $title . "<br>";
        }
    }
    ?>
    

    如果您需要在选项中显示 - 选择,您可以进行此操作。

    foreach ($type_make as $cartype => $carname) {
        <option value="<?php echo $cartype?>"><?php echo $type."</b>"?></option>
        foreach ($carname as $title) {
            <option value="<?php echo $title?>"><?php echo $title."</b>"?></option>
        }
    }
    

    有关 foreach 的更多信息:

    foreach (array_expression as $value)
        statement
    foreach (array_expression as $key => $value)
        statement
    

    PHP官方

    Structure of foreach

    Object Iteration

    W3schools

    Demo - For Each

答案 2 :(得分:0)

首先需要将所有汽车类型存储在数组中。

然后在diffenent循环中使用该数组。

或者Sulthan Allaudeen给出的解决方案也很完美。