2015-09-10 81 views
1

我有一些下拉列表,它更新數據庫,但一旦更新列表中的第一個對象顯示,而不是實際選定的對象。解決這個問題的最好方法是什麼?如何根據存儲在數據庫中的值在選擇菜單中預先選擇一個選項?

代碼示例: HTML代碼示例

<select name="sleeps"> 
     <option value="0">Sleeps</option> 
     <option value='1'>1</option> 
     <option value='2'>2</option> 
     <option value='3'>3</option> 
     <option value='4'>4</option> 
</select> 

這使用產生:

<?php 
           for ($x = 1; $x <=10; $x++) { 
            echo "<option value='$x'>$x</option>"; 
           } 
?> 

期望結果

<select name="sleeps"> 
     <option value="0">Sleeps</option> 
     <option value='1'>1</option> 
     <option value='2'>2</option> 
     <option value='3'>3</option> 
     <option value='4' selected>4</option> 
</select> 
+0

*「一旦更新」* - 您可以引導我們瀏覽一個用例或其他內容嗎?我看到的腳本1.頁面加載,顯示提取的選擇2.用戶在選擇框上的行爲3. **也許**用戶按下save \ apply 4. **這是你的意思是「一旦更新」**頁面在用戶應用更改後重新加載,但其選擇不是默認值。 –

+1

'如果x等於4,做你的事' –

+0

演練:用戶從下拉列表中選擇值,選定的值被提交併插入數據庫。在數據庫中選擇的值被設置爲第一個值,在這種情況下該值爲'0'。如果提交時沒有選擇任何值,則在數據庫中插入「0」。 – ChriChri

回答

0

想通了:)

注 - $回聲和$標題是否有允許爲了改變允許靈活性。

function select_dropdown($sql, $echo, $title) { 
include 'connect.php'; 
$id = $_GET['id']; 
$select = $conn->prepare($sql); 
$select->bind_param('s', $id); 
$select->execute(); 
$select->store_result(); 
if ($select->num_rows > 0) { 
    $meta = $select->result_metadata(); 
echo "<select name='$title'> 
         <option value='0'>$title</option>\n"; 
    while ($field = $meta->fetch_field()) { 
     $params[] = &$row[$field->name]; 
    } 
    call_user_func_array(array($select, 'bind_result'), $params); 
    while ($select->fetch()) { 
       for ($x = 1; $x <=10; $x++) { 
      if ($row[$echo] == $x) { 
       echo "<option value='$row[$echo]' selected>$row[$echo]</option>"; 
      } else { 
      echo "<option value='$x'>$x</option>"; 
      } 
          } 

    } 
    $select->close(); 
    echo "</select>"; 
} 

} 
+0

在語言結構('echo')之後命名變量可能不是一個好主意,並且只打印一次'

0
 for ($x = 1; $x <=10; $x++) { 
      $sel = ($x == $the_value) ? " selected='selected'" : ""; 
      echo "<option value='$x'$sel>$x</option>"; 
     } 

爲了記錄,像這樣混合你的PHP和HTML是非常混亂,不容易維護。

編輯:由於您很可能是PHP的新手,我應該提到這被稱爲ternary operator,這只是編寫if語句的簡寫方式。

相關問題