2011-08-22 17 views
1

これは何らかの永久ループなどを作成しますか?私はデータを投稿しようとしましたが、ページは単に読み込まれません。フォームを含むページはフォームの送信時に単に「読み込み中」を保持します。これは何らかの永久ループを作りますか? PHPは正しく実行されません

for($i = 1; $i = 5; $i++) { 
    $country[$i] = $_POST['country_'.$i]; 
    $redirect[$i] = $_POST['redirect_'.$i]; 
} 

var_dump($country); 
var_dump($redirect); 

私のフォームです。

<form action="query.php" method="post" id="geoui"> 
<div id="input1" class="clonedInput"> 
<select name="country_1" class="px460s"> 
<option selected="selected" value="auto">Choose country to set rule for..</option> 
<option>United Kingdom</option> 
<option>Canada</option> 
</select> 
<input name="redirect_1" type="text" class="px460" value="http://"> 
<div class="break"></div> 
</div><div id="input2" class="clonedInput"> 
<select name="country_2" class="px460s"> 
<option selected="selected" value="auto">Choose country to set rule for..</option> 
<option>United Kingdom</option> 
<option>Canada</option> 
</select> 
<input name="redirect_2" type="text" class="px460" value="http://"> 
<div class="break"></div> 
</div><div id="input3" class="clonedInput"> 
<select name="country_3" class="px460s"> 
<option selected="selected" value="auto">Choose country to set rule for..</option> 
<option>United Kingdom</option> 
<option>Canada</option> 
</select> 
<input name="redirect_3" type="text" class="px460" value="http://"> 
<div class="break"></div> 
</div><div id="input4" class="clonedInput"> 
<select name="country_4" class="px460s"> 
<option selected="selected" value="auto">Choose country to set rule for..</option> 
<option>United Kingdom</option> 
<option>Canada</option> 
</select> 
<input name="redirect_4" type="text" class="px460" value="http://"> 
<div class="break"></div> 
</div><div id="input5" class="clonedInput"> 
<select name="country_5" class="px460s"> 
<option selected="selected" value="auto">Choose country to set rule for..</option> 
<option>United Kingdom</option> 
<option>Canada</option> 
</select> 
<input name="redirect_5" type="text" class="px460" value="http://"> 
<div class="break"></div> 
</div> 
</form> 

何かアドバイスや回答をいただければ幸いです。

答えて

6
for($i = 1; $i = 5; $i++) { 

あなたは<を逃した:

for($i = 1; $i <= 5; $i++) { 

ところであなたの代わりにアクセスする$_POST['country_'.$i]を使用するのがデータを掲載するように、あなたが$_POST['country'][$i]$_POST[$i]['country']をするだろう、フォーム要素名の配列構文を使用できます。

あなたのPHPスクリプトで次に
<select name="query[1][country]" class="px460s"> 
<input name="query[1][redirect]" type="text" class="px460" value="http://"> 

foreach($_POST['query'] as $item) { 
    $country = $item['country']; 
    $redirect = $item['redirect']; 
} 
+0

おかげで、このような愚かな間違い:(タイマーが低下すると、私はあなたの答えを受け入れるだろう – Avicinnian

2

あなたのfor機能に制限(チェック)を設定していません。ループします。このようにする必要があります。

for($i = 1; $i < 5; $i++) { 
3

はい、そうです。 5は常に$ iに代入できるので、$ i = 5は常に真です。以下のようなものに

変更:

for($i = 1; $i <= 5; $i++)

の代わり:

for($i = 1; $i < 5; $i++) { 
    $country[$i] = $_POST['country_'.$i]; 
    $redirect[$i] = $_POST['redirect_'.$i]; 
} 
+1

だけFYI、あなたの推理は少し欠陥がある '$ iが= 0 '、常にfalseです。。。代入式の値は代入式の値です - 代入式は成功したために常に真と評価されるわけではなく、代入される値が真理値である場合にのみ真と評価されます。 – cdhowie

+0

良い点!明確化する。 – Brad

1

comparisonオペレータにassignmentオペレータを変更してみてください

for($i = 1; $i = 5; $i++)
3

はい、それはありません:

for($i = 1; $i = 5; $i++) { 

中間節($i = 5)は割り当てで、$iを5にしてtrueを返します。これは真実の値であり、ループを続行します。これを試してみてください:

for($i = 1; $i <= 5; $i++) { 
関連する問題