1

我正在用 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 }; ?>

循环的内部索引工作得很好,但我只能让外部循环显示选择标记代码一次而不是五次(这是我需要的)。

有什么建议么?

4

3 回答 3

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 } ?>
于 2012-06-27T19:59:31.630 回答
0

如果您希望它显示五次,则第一个循环应该是for ($i=0; $i<5; $i++)而不是。for ($i=0; $i<count($results); $i++)

另外,不要同时使用$i两个循环,正如 TNC 在他的回答中提到的那样。这就是循环在第一次选择后退出的原因。

于 2012-06-27T20:02:08.420 回答
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>
于 2012-06-27T20:11:41.347 回答