Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从所选数据库中选择选项值_Php_Mysql_Forms_Combobox - Fatal编程技术网

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

Php 从所选数据库中选择选项值,php,mysql,forms,combobox,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 t

我有个小问题。我有一个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']}'>"; 
这是有效的。当我加载php表单时,它会显示从DB检索到的产品名称(在文本字段中)。但是问题是,我想将产品名称存储为用户已选择的下拉列表框,然后选择该下拉列表框

因此,基本上我希望做的是,不要在文本框中显示DB检索选项,我希望用户选择的选项显示在下拉列表框中

我希望这有意义?为什么我的选项值根本不显示,其次,它们也不显示所选选项(从数据库中检索)


有什么帮助吗?

这可能不是一个好地方,但因为我每天都会看到大量可怕的代码,所以我想我会加入进来

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

<?php
你需要在这里为返回的数组调用一些东西。。。如果看不到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\">";
$page=”“;
检查一下那个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\"";
if(!empty($id)){
$page.=”;
} 
$page.=“\n”;
foreach($arrayproducts作为$key=>$value){
$page.=“$value\n”;
//关门
}
$page.=“\n”;
打印$page;
?>

关注这一方面,您应该会得到一个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 ?>

你没有结束你的旅程loop@ioums对不起,我已经结束了。只是忘记了最后一个}现在编辑:)可能只是另一个打字错误,但它应该在我只是不知道为什么没有显示任何选项之前关闭。我将它们存储在阵列中。然后,所选的值基于从数据库中检索到的内容。我不明白为什么它没有显示任何选项,更不用说所选的选项了?。它们不再得到维护。看到了吗?相反,学习,并使用或-将帮助你决定哪一个。好吧,我让它工作了。。。我决定在PHP标记中做所有事情。。这里是我的意思,错误是我在回显
echo''后错误地关闭了>;回声“//回声“产品:”;回声“产品:”;回声“`foreach($productsarry as$key=>$value){echo”“;echo“$value”;echo”“;}//foreach循环echo”“的结尾;`好吧,至少现在选项显示出来了。然而,另一个该死的问题:'(基本上,页面显示下拉列表中的第一个选项,即'cholcate',而不是用户在数据库中保存的具体内容。这可能是为什么。有什么想法吗?我回答的最后一行是你的问题吗?对于选项没有显示的问题,我认为是因为我有这样的选项:'如果($key==$productName){echo“selected=\\”selected\“>;};`然后我将其更改为:
if($key==$productName){echo“selected=\\”selected\;}echo“>”
我相信这就是选项不显示的原因。我现在将尝试使用您的额外行修复选项不显示错误。修复了它!!哇…基本上我将它更改为$key=$rows['productid']最后!哈哈!!非常感谢你提供的帮助。真的很感谢…我还有一件重要的事情要做,但我很难过一直问你:$非常感谢你的回复和帮助。我现在已经修复了它,这是因为我关闭了回声中的一个小“>”!太离谱了,对吗?现在的问题是,所选的没有根据用户最初的选择显示:'(
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\"";
      if ($id == $key){
        $page .= ' selected="selected"';
      }
   $page .= ">$value</option>\n";

//close the foreach
}

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

print $page;
?>
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 ?>
if ($value == $productName){