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 }; ?>

ループの内側のインデックスは問題なく動作しますが、外側のループで選択タグ コードを表示できるのは 5 回ではなく 1 回だけです (これが必要です)。

助言がありますか?

4

3 に答える 3

2

問題は$i、両方のループで使用していることです。そのため、最初に 2 番目のループをループすると、毎回 0 にリセットされます。

2 番目のループ変数を次のように変更します。

<?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

上の行ごとに翻訳することもできますが、下のほうが少し効率的かもしれません。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 に答える
0

select を 5 回表示する場合は、最初のループをfor ($i=0; $i<5; $i++)の代わりにします。for ($i=0; $i<count($results); $i++)

$iまた、 TNC が回答で述べたように、for 両方のループを使用しないでください。そのため、最初の選択後にループが終了します。

于 2012-06-27T20:02:08.420 に答える