从所选的数据库中选择选项值

时间:2013-03-13 16:56:41

标签: php mysql forms combobox

我有一个小问题。我有一个edit.php页面。此页面列出了可以编辑的产品信息。

我运行查询

while($rows=mysql_fetch_assoc($query)){


echo"<form method=\"POST\" action=\"edit.php\">";
echo "<input type ='hidden' name='ID' value = '{$rows['ID']}'>"; 
echo "Product:&nbsp <input type='text' name='product' value = '{$rows['ProductName']}'>"; 

在while循环之前,我将细节存储在变量中:

$hiddenid = $_POST['ID'];   
$productName = $_POST['product'];

这是有效的。当我加载php表单时,它显示从DB检索的产品名称(在文本字段中)。但问题是我想将产品名称存储为用户已选择的下拉列表框,然后选择该项目。

所以,基本上我想做的不是在文本框中显示DB检索的选项,而是希望用户选择的选项显示在下拉列表框中。

我希望这可以看出来吗?为什么我的选项值根本没有显示,其次它们也没有显示SELECTED选项(从数据库中检索)。

请帮忙吗?

2 个答案:

答案 0 :(得分:4)

关注这一领域,除非出现复制错误,否则应该收到PHP错误。请注意以下更改:

while($rows=mysql_fetch_assoc($query)){
?>
    <form method=\"POST\" action=\"edit.php\">
    <input type ='hidden' name='ID' value = '<?php echo $rows['ID'];?>'>
    <select name ="pnames">
        <?php foreach ($arrayproducts as $key => $value) {
        ?>  
            <option value = "<?php echo $key; ?>" 
            <?php
                if ($key == $productName){
                    echo 'selected="selected"';
                } 
            ?> >
            <?php echo $value; ?> 
            </option>
     <?php } //end foreach ?>   
   </select>
<?php }//end while ?>

在开始时,您在PHP段中使用了纯HTML代码。

另外,我相信你想要

if ($value == $productName){

答案 1 :(得分:1)

这可能不是一个很好的地方,但是因为我每天都看到很多代码,这太可怕了,我想我会插话。

首先,检查您的输入。你永远不应该信任来自用户$ _GET,$ _POST等的任何变量。原始代码的松散只是在寻找SQL注入攻击。

<?php

这个东西看起来像是期待某种传递的ID,然后从数据库中提取productName ......这真的不清楚。所以我们假设已经定义了变量。需要使用这样的代码:

if(!empty($_GET['id'])&&is_numeric($_GET['id'])){
   $id=$_GET['id'];
} else {
   $id='';
}

//Declare your array
$arrayproducts = array();


while($rows=mysql_fetch_array($query)){

你需要在这里为返回的数组调用一些东西......没有看到SQL就很难说你期待的是什么,但你的标注看起来应该是这样......

//Whatever the name from SQL is for the column
$temp_ID = $rows['id'];

//Whatever the name for the product column is
$temp_Prod = $rows['prod'];

//Load the array
$arrayproducts[$temp_ID]=$temp_Prod;
}

最好为所有内容加载var,然后一次性发布,而不是PHP内外。代码将更快,您将能够跟踪代码。

$page = "<form method=\"POST\" action=\"edit.php\">";

检查该ID是否有效。正则表达式是最好的,但这里有一件事。

if(!empty($id)){
    $page .= "<input type =\"hidden\" name=\"ID\" value = \"$id\">";
} 
$page .= "<select name =\"pnames\">\n";

foreach ($arrayproducts as $key => $value) {

   $page .= "<option value = \"$key\"";

最好使用mysql的自动增量字段和内置ID,这样就不会有重复的ID接管现有记录。

      if ($id == $key){
        $page .= ' selected="selected"';
      }
   $page .= ">$value</option>\n";

//close the foreach
}

$page .= "</select>\n"; 

print $page;
?>