2009-05-25 91 views
0

我想編寫一個函數,它創建從數據庫中選擇的學校名稱的下拉列表。創建一個下拉菜單並沒有什麼特別的,這裏是代碼:如何從php中的數據庫表創建表單下拉菜單?

function schoolDD($name, $selected){ 
    $select = ''; 
    if($selected != null) 
    { 
     $select = $selected; 
    } 

    $qry = "select * 
      from school 
      order by name, id 
      where display = 'Y'"; 

    $schools = _execQry($qry); 


    $html = '<select name="'.$name.'" >'; 

    foreach($schools as $s){ 
     $html .= '<option value="'. $s['id'] .'"'; 
     if($select == $s['name']){ 
     $html .= 'selected="selected"'; 
     } 
     $html .= '>'. $s['name'] . '</option>'; 

    } 
    $html .= '</select>'; 
    return $html; 
} 

回答

0

問題解決了。這是因爲在查詢之前我已經訂購了。它應該是:

$qry = "select * 
      from school 
      where display = 'Y' 
      order by name, id"; 

不:

$qry = "select * 
      from school 
      order by name, id 
      where display = 'Y'"; 
+0

:)你應該修改你的_execQry函數拋出一個異常,如果查詢是無效的。尋找mysql_error – 2009-05-25 13:25:54

+0

它檢查mysql_error,然後它發送一封電子郵件給我這個問題。它告訴我的是: 您的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,在第4行 'where display ='Y'附近使用正確的語法,但我無法找出問題。 – 2009-05-25 13:46:58

0

看起來不錯,但很難不知道_execQry做什麼可說的。

如果添加行

print_r($schools); 

你打電話_execQry之後,你肯定從數據庫中檢索結果?

0

林高興你找到你的答案,但我haaattee PHP和HTML混合在一起那樣的。

怎麼樣像這樣tsomethign ...

<?php 

$schools = getSchools(); 
$selectedSchool = 'sfgsfgd'; 
$name = 'asdfsafd'; 

?> 

<select name="<?= $name ?>"> 
<?php foreach($schools as $s): ?> 
    <option value="<?= $s['id'] ?>"<?php if($s['name'] == $selectedSchool): ?> selected="selected"<?php endif; ?>><?= $s['name'] ?></option> 
</select>