2010-07-18 75 views
0

我花了相當一段時間的功能和最後15-20分鐘試圖弄清楚這一點。我需要幫助!在一段時間循環混亂!

我從數據庫中選擇多行,然後在while循環中運行它們。

它們在下拉菜單中可用。

<form method="POST" action="adminprocess.php"> 
    <fieldset> 
    <p> 
     <label class="left2">League:</label> 
     <select name="league" class="combo"> 
     <?php 
     $q = $database->selectAllLeagues(); 
     while($row=mysql_fetch_assoc($q)) 
     { 
      $theid = $row['id']; 
      extract($row); 
      ?> 
      <option value="<? echo $theid; ?>"> 
      <? echo $format.'_'.$game.'_'.$name.'_Season '.$season;?> 
      </option> 
      <? 
     } 
     ?> 
     </select> 
    </p> 
    <p> 
     <input type="hidden" name="replaceleague" /> 
     <input type="hidden" name="format" value="<? echo $format; ?>" /> 
     <input type="hidden" name="game" value="<? echo $game; ?>" /> 
     <input type="hidden" name="name" value="<? echo $name; ?>" /> 
     <input type="hidden" name="season" value="<? echo $season; ?>" /> 
     <input type='submit' class="button" value='Select league' /> 
    </p> 
    </fieldset> 
</form> 

$ theid似乎工作正常,取決於我在下拉菜單中選擇哪一行。 但是,我不能在隱藏的輸入中獲取下面的值,以通過下拉框中所選行的正確值。

它似乎總是通過數據庫第一行的4個變量。

所以基本上,我需要它來選擇正確的行並使用該數據。 我在做什麼錯!!! 感謝您的閱讀!

+0

請縮進你的代碼......這對每個參與者都會更好。 – viraptor 2010-07-18 23:58:10

回答

2
  1. 你的隱藏字段循環外初始化,所以他們會使用來自while循環的最後一次迭代中遺留下來的價值觀。 (即最後取得的行)

  2. 爲什麼你實際上首先需要隱藏的字段?提交表單時,字段將包含在下拉框中選擇的行的ID。使用該ID,您可以在處理表單時從數據庫中獲取其他字段。

2

要直接回答有關while循環的問題,這是因爲隱藏的輸入會在循環之外回顯,在此之後,PHP將使用數據庫中最後一次迭代的行輸出到那些隱藏的輸入。

但我建議您不要使用像這樣的隱藏表單元素,而應使用<option>表單提交用戶選擇的值,讀取值(如$_POST['league']),然後使用該ID從數據庫中提取行並相應地使用它。 (您可能希望保持replaceleague隱藏的輸入,如果你的應用需要,當然它。)

這是很容易,再加上它確保了關於用戶選擇的是從你的數據庫,而不是來自篡改該行的信息。事實上,對於大多數應用來說,這是正確的路要走。