2010-06-03 152 views
1

我已經編輯了這個問題,因爲我之前說過的是兩段代碼。動態下拉列表!

我有以下代碼:

 $f = "SELECT * FROM ".TBL_FIXTURES." WHERE compname = '$_POST[league]' AND home_user = '$_SESSION[username]' ORDER BY away_user"; 
    $fixtures = mysql_query($f); 
    ?> 
    <? 
    while($row = mysql_fetch_assoc($fixtures)) 
    { 
     extract($row); 
     $info = explode("_",$row[compname]);  
     ?> 


     <select name="hu" class="combo"> 
      <option value="<? echo $home_user ?>"><? echo $home_user?></option> 
     </select>  
     <select name="au" class="combo"> 
     <?php 
     while($row = mysql_fetch_assoc($fixtures)) 
     { 
      $u=$row['away_user']; 
      echo "<option value=\"$u\">$u</option>"; 
     } 
     ?> 
     </select> 
     <? 

    } 
    ?> 

正如你可以看到,有兩個while循環。但是,away_user下拉列表中的第一個值缺失。如果我刪除第一個循環,它會顯示,但home_user的下拉菜單消失。我怎樣才能解決這個問題?

感謝

回答

0

的問題是,在你的第二個循環調用mysql_fetch_assoc($夾具),所以您在使用從第一條記錄的away_user前場轉移到第二個記錄。我能想到的兩個選項是:

循環之前創建的第一個選項

<select name="au" class="combo"> 
    <?php 
    $u=$row['away_user']; 
    echo "<option value=\"$u\">$u</option>"; 

    while($row = mysql_fetch_assoc($fixtures)) 
    { 
     $u=$row['away_user']; 
     echo "<option value=\"$u\">$u</option>"; 
    } 
    ?> 
    </select> 

改變循環到do while循環

<select name="au" class="combo"> 
    <?php 
    do 
    { 
     $u=$row['away_user']; 
     echo "<option value=\"$u\">$u</option>"; 
    } while($row = mysql_fetch_assoc($fixtures)) 
    ?> 
    </select> 
0

沒有給出一個錯誤? 好像你缺少在這條線的日結束的支架(「):

echo"<div align=\"center\"> <table cellspacing=\"10\" style='border: 1px dotted' width=\"450\" bgcolor=\"#eeeeee\"> 
0

我不知道你爲什麼還打印一張桌子,但在循環中,您輸出</select>,這是的問題。

你應該做

echo '<select>'; 
while (....) 
    { 
    echo '<option>'.$u.'</option>'; 
    } 
echo '</select>'; 

<table code here>