2012-08-03 54 views
0

我新的PHP和試圖與WordPress的用戶表下拉列表工作PHP:設置不同的值,並選擇與foreeach與MySQL

我想設置用戶ID爲值,要顯示USER_LOGIN但無法正常工作。這是渲染兩次錯誤的ID。這裏是我的代碼

global $wpdb; 
     $userids = $wpdb->get_col("SELECT ID FROM $wpdb->users"); 
     $user_logins = $wpdb->get_col("SELECT user_login FROM $wpdb->users"); 

     echo '<select>'; 
     foreach($userids as $userid){ 
      foreach($user_logins as $user_login) 
      echo '<option value="'.$userid.'" selected="'.$user_login.'">'.$user_login.'</option>'; 
     } 
     echo '</select>'; 

非常感謝

回答

1

如果您需要使用您目前使用兩個查詢,你可以用一個計數器來代替foreach迭代:

$count = count($userids); 
for ($i = 0; $i < $count; $i++) { 
    echo '<option value="' . $userids[$i] . '" selected="' . $user_logins[$i] . '">' . $user_logins[$i] . '</option>'; 
} 

您可以使用WordPress的get_results()方法將兩個查詢合併爲一個查詢:

$users = $wpdb->get_results("SELECT ID, user_login FROM $wpdb->users"); 
echo '<select>'; 
foreach ($users as $user) { 
    echo '<option value="' . $user->ID . '" selected="' . $user->user_login . '">' . $user->user_login . '</option>'; 
} 
echo '</select>'; 

還值得指出的是,optionselected屬性被錯誤地使用。它應該只設置在一個選項上,通常設置值爲「選中」,如selected="selected"。有關更多信息,請參閱W3C documentation

+0

這真是太好了,我在找什麼。由於我使用WordPress,所以你的第二個代碼完美地工作。然而,「whaatt」代碼也可以工作,但正如我所說我使用wordpress比使用第二個代碼更可取。選定的參數我正在爲metabox動態調用,因此它只會在一個地方使用而不會重複。謝謝, – 2012-08-03 18:48:30

1

您似乎在做兩個foreach循環,這可能會導致您由於$userids$user_logins之間的重複項不匹配而出現問題。相反,請嘗試使用for這樣的循環:

for ($i = 0; $i < count($userids); $i++){ 
    echo '<option value="'.$userids[$i].'" selected="'.$user_logins[$i].'">'.$user_logins[$i].'</option>'; 
} 
+0

你的代碼工作正常,但我會用「newfurniturey」第二個代碼bcoz我使用wordpress,所以總是首先選擇wordpress codex。但你的代碼我可以用於其他的PHP的東西。所以給你投票.. – 2012-08-03 18:49:50