2012-06-27 90 views
1

我在更新數據庫中的某些值時遇到問題。 當我想使用下拉框更改值時,它會自動在下拉菜單中輸入第一個值。我想要的是獲取已經在數據庫中設置的值。更新數據庫值時在下拉框中獲取值

這裏是我的代碼:

<select name="vrijwilligerID"> 
<?php   
    $vrijwilligerID = $_POST["vrijwilligerID"]; 
    $query = "SELECT voornaam, achternaam, vrijwilligerID FROM vrijwilliger;"; 
    $result = mysql_query($query); 
    while($row=mysql_fetch_array($result)){ 
     echo "<option value=".$row['vrijwilligerID'].">".$row["voornaam"]." ".$row["achternaam"]."</option>"; 
    } 
?>    
</select> 

有誰知道如何得到這個權利? 預先感謝您。

+0

什麼決定從dropdownbox選擇的價值? –

回答

2

根據選定的項目,您必須將選定的屬性添加到選項。

試試這個

<select name="vrijwilligerID"> 
       <?php   
        $vrijwilligerID = $_POST["vrijwilligerID"]; 

        $query =" SELECT voornaam, achternaam, vrijwilligerID 
           FROM vrijwilliger;"; 

        $result = mysql_query($query); 

        while($row=mysql_fetch_array($result)){ 
         if($row["vrijwilligerID"]==$vrijwilligerID) 
          echo "<option value=".$row['vrijwilligerID']." selected>".$row["voornaam"]." ".$row["achternaam"]."</option>"; 

        else 
          echo "<option value=".$row['vrijwilligerID'].">".$row["voornaam"]." ".$row["achternaam"]."</option>"; 
        } 
        ?>    
     </select> 
+0

這樣做實際上沒有任何區別。它只是給出相同的輸出。所以不知何故,它不承認某些東西的ID? – Rickkert

0

它很容易的解決使用PHP,但使用mysqls IF()函數,你可以直接有選擇的選項。使用mysqls concat()你也可以得到你想要的結果。

(ofcourse我們不使用任何postsvars在我們的腳本unsanitized是我們;))

$iVrijwilligerid = filter_input(INPUT_POST, 'vrijwilligerID', FILTER_VALIDATE_INT, array("options"=> array("min_range"=>0, "max_range"=>999))) ; 

if($iVrijwilligerid) 
{ 
    $sQry = <<<QRY 
     SELECT 
     CONCAT('<option value="', vrijwilligerID, '"',IF((SELECT vrijwilligerID FROM vrijwilliger WHERE vrijwilligerID=$iVrijwilligerid), ' selected="selected"', ''),'>',voornaam, ,achternaam,'</option>') AS optItem 
     FROM 
     vrijwilliger 
     WHERE 
     your clause here 
QRY; 
    $oResult = mysql_query($sQry); 
    while($aRow=mysql_fetch_assoc($oResult)) 
    { 
    echo $aRow['optItem']; 
    } 
} 
else 
{ 
    // nada 
}