2012-06-27 119 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 
}