PHP列表菜单框-循环的最佳方式


PHP List Menu Boxes - Best way to do the cycle?

这是我后台页面的一部分代码。(是一个供用户编辑/修改的edit.php页面)

//第一个查询从用户表

$query = "select * from user where name='".$_SESSION['username']."' order by id ASC  limit 1";
$result=mysql_query($query);
if (mysql_num_rows($result)) {
while($row=mysql_fetch_array($result)){

$cat1 = $row['cat1'];
$cat2 = $row['cat2'];
$cat3 = $row['cat3'];
$cat4 = $row['cat4'];
$cat5 = $row['cat5'];
$cat6 = $row['cat6'];
$cat7 = $row['cat7'];
$cat8 = $row['cat8'];
$cat9 = $row['cat9'];
$cat10 = $row['cat10'];
}
}

//现在我想根据用户表$cats

创建10个select box

//下面是我可以构建的第一个盒子$cat1

//是否有一种方法可以为10个选择框生成这个而不必生成10个循环的下面代码

<select name="theme" id="theme">
<?php
$q1 = 'SELECT * FROM cats ORDER BY title ASC';
$r1 = mysql_query($q1);
while( $row = mysql_fetch_array($r1)) {
if ( $cat1 == $row['id'] ) { 
print "<option class='"cssoption'" selected='"selected'" value='"".$row['id']."'">".htmlentities($row['title'])."</option>";
}
else {
print "<option class='"cssoption'" value='"".$row['id']."'">".htmlentities($row['title'])."</option>";
}

}
?>
</select>

我不是程序员,所以这可能不是有效的代码。

希望有人能在这里帮助我,理解我在做什么。

许多谢谢。

  • 代码正常。正如你所说的,这10个周期几乎是零成本。

  • 这是我们通常的做法,我们按顺序逐个获取记录

  • 此外,要求不做10个循环是没有意义的,因为你在同一时间应用if else条件,这意味着你检查每个记录,如果猫id与行相同,所以你需要循环。

  • 另一方面,如果出于某种原因你想跳过一些记录,你可以使用mysql的seek函数开始从所需的记录中抓取。

    for($i=0;$i<99999;$i++)
        (9999*9999);
    echo 'This time the cost of this loop was:',(microtime()-$start),' seconds.';
    

    ?>