我想在循环中显示特定车型的汽车数量。
我希望看起来像这样:
**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/>';
}
}
}
?>
我犯了什么错误,我该如何解决这个问题?
答案 0 :(得分:1)
在我的头脑中,有两种方式。
一个是您只查询汽车类型的地方,循环浏览每种汽车类型以打印类型。然后在打印每种类型后,查询该汽车类型下的名称,然后循环每个名称进行打印。
第二种方法是一起查询类型和名称,按类型排序。您还需要一个变量来存储当前类型。对于每个记录,只需检查是否已打印汽车类型,如果没有,则打印类型并将当前类型存储在变量中。带上车名。
答案 1 :(得分:0)
这是你需要做的事情
注意:
mysql
已弃用,因此我正在使用mysqli
代码在这里:
<?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官方
W3schools
答案 2 :(得分:0)
首先需要将所有汽车类型存储在数组中。
然后在diffenent循环中使用该数组。
或者Sulthan Allaudeen给出的解决方案也很完美。