我正在用PHP重写一个coldfusion页面。我有一个索引的cfloop,其中有一个cfoutput查询。它看起来像这样:
<h2>Choose up to Five Counties:</h2>
<cfif results.recordcount gt 0>
<cfloop from="1" to="5" step="1" index="i">
<!--- Looping Data --->
<cfoutput>
<select name="counties" style="width:150px; font-family:Arial,Helvetica; font-size:11px;">
<option value="">- select county -
</cfoutput>
<cfoutput query="results">
<option value="#County_Name#" style="font-family:Arial,Helvetica; font-size:12px;">#County_Name#</option>
</cfoutput>
</select>
</cfloop>
</cfif>
此代码循环选择标记代码5次,并循环遍历MSSQL查询选项标记输出。我已经编写了PHP方面,它看起来像这样:
<h2>Choose up to Five Counties:</h2>
<?php if(count($results) > 0) {
for ($i=0; $i<count($results); $i++) {
if ($i == 5) {
break;
} ?>
<select name="counties" style="width:150px; font-family:Arial,Helvetica; font-size:11px;">
<option value="">- select county -
<?php for ($i=0; $i < count($results); $i++) { ?>
<option value="<?php echo $results[$i]['County_Name']; ?>" style="font-family:Arial,Helvetica; font-size:12px;"><?php echo $results[$i]['County_Name']; ?></option>
<?php } ?>
</select>
<?php } ?>
<?php }; ?>
循环的内部索引工作得很好,但我只能得到外部循环来显示select标记代码一次而不是五次(这就是我需要的)。
有什么建议吗?
答案 0 :(得分:2)
问题是你在两个循环中都使用$i
。所以第一次循环通过第二个循环时,它每次都重置为0。
将第二个循环变量更改为:
<?php for ($x=0; $x < count($results); $x++) { ?>
<option value="<?php echo $results[$x]['County_Name']; ?>" style="font-family:Arial,Helvetica; font-size:12px;"><?php echo $results[$x]['County_Name']; ?></option>
<?php } ?>
答案 1 :(得分:0)
第一个循环应为for ($i=0; $i<5; $i++)
而不是for ($i=0; $i<count($results); $i++)
,如果您希望它显示选择五次。
另外,不要在{2}循环中使用$i
,正如TNC在他的回答中提到的那样。这就是循环在第一次选择后退出的原因。
答案 2 :(得分:0)
虽然您可以将上述行换成行,但下面的效率可能略高一些。假设您正在使用mssql_ *函数集:
<?php
$query = myssql_query('SELECT * ....');
?>
<h2>Choose up to Five Counties:</h2>
<select name="counties" style="width:150px; font-family:Arial,Helvetica; font-size:11px;">
<?php
while($results = mssql_fetch_assoc($query)){
echo "<option value=\"{$results['County_Name']}\" style=\"font-family:Arial,Helvetica; font-size:12px;\">{$results['County_Name']}</option>";
}
?>
</select>