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

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

问题描述:

我有一个小问题。我有一个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表单时,它会显示从数据库中检索的产品名称(在文本字段中)。但问题是我想将产品名称存储为用户已选择的下拉列表框,然后选择该列表框。

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

我希望这样做会有用吗?为什么我的选项值根本没有显示,其次他们也没有显示SELECTED选项(从数据库中检索)。

请帮忙吗?

+0

你没有结束你的foreach循环 – ioums 2013-03-13 17:15:16

+0

@ioums很抱歉,我已经结束了。刚刚忘了最后}现在编辑它:) – Jsmith 2013-03-13 17:17:38

+0

也许只是另一个错字,但它应该在 – ioums 2013-03-13 17:20:08

专注于这一个领域,除非它是一个复制错误,否则您应该得到一个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){ 
+0

好吧,我得到它的工作......我决定做的一切在PHP标签..这是我的意思是错误是我在回显 'echo“

>错误。PHP中\ “>”; echo“”; // \t \t回声 “的产品:”; \t \t回声 “的产品:”; echo“
+0

'\t foreach($ productarry as $ key => $ value){ \t echo“”; } // foreach循环 回声“”的端部;' 好了,所以至少现在的选项显示。然而,另一个织补问题:?“( 基本上页面显示的下拉即第一个选项‘cholcate’,而不是具体是什么用户已保存在数据库中为什么会这是任何想法 – Jsmith 2013-03-13 19:43:02

+0

是最后一行?我的回答您的问题 – UnholyRanger 2013-03-13 19:47:25

这可能不是该这么好的地方,但因为我看到吨的代码,每天就是可怕的我想我会附和。

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

<?php 

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

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; 
?> 
+0

非常感谢您的回复和帮助。我现在已经修复了它,这是因为我正在关闭回声里面的一个小'>'!离谱的权利?现在的问题是SELECTED不显示基于用户的原始选择是什么:'( – Jsmith 2013-03-13 19:44:38