我已经设置了一个将项目注册到我们数据库的php表单,它有一个从我们的客户/供应商数据库中填充的下拉列表。
我还设置了一个编辑这些项目的功能,我遇到的问题是,当我进入我的编辑页面时,它只显示客户/供应商名称,而不是在下拉列表中,而是一个值框 - 有没有办法让编辑页面显示下拉列表,但也可以在原始供应商/客户上选择?
注册项目页面
<?php
$result = mysql_query('SELECT name FROM customers ORDER BY name ASC');
echo '<select name='client'>';
while($row = mysql_fetch_assoc($result))
{ `
echo '<option value = ''.$row[name].''>'.$row[name].'</option>';
}`
echo '</select>';
?>
修改页面
<input type='text' name='client' value='<?php echo $client; ?>'/>
我尝试了一些教程和代码调整但仍然遇到错误。我知道我的sql注入问题,目前该网站是内部的。
任何帮助都将不胜感激。
感谢
答案 0 :(得分:1)
而不是$row[name]
您应该使用$row['name']
$client= "<select name='client'>"; // you had error here also.
while($row = mysql_fetch_assoc($result))
{
$client.= "<option value = '".$row['name']."'>'".$row['name'].'</option>';
}
$client.= '</select>';
现在回显$client
以获得dropdown.no需要现在构建单独的选择标记。
对于这样的选定用途:
$client1= "<select name='client'>";
while($row = mysql_fetch_assoc($result))
{
if($row['name'] == $clientValue){
$client.= "<option selected='selected' value = '".$row['name']."'>'".$row['name'].'</option>';
}else{
$client1.= "<option value = '".$row['name']."'>'".$row['name'].'</option>';
}
}
$client1.= '</select>';
在$client1
的回音上,您将根据您必须传递的值$clientValue
进行选择。
答案 1 :(得分:0)
对于初学者,这里有语法错误:
echo '<select name='client'>';
(整个代码中可能存在更多引用错误,但我离题了......)
至于使用下拉列表,您要查找的是selected
属性。当您构建页面元素以在“编辑”页面上显示表单时,可能您拥有要显示的值。当循环找到与该值匹配的元素时,请选择它:
while($row = mysql_fetch_assoc($result))
{
if ($knownValue == $row[name]) {
echo '<option selected value = ''.$row["name"].''>'.$row["name"].'</option>';
} else {
echo '<option value = ''.$row["name"].''>'.$row["name"].'</option>';
}
}
答案 2 :(得分:0)
在您的编辑页面上:
<?php
$result = mysql_query('SELECT name FROM customers ORDER BY name ASC');
echo "<select name=\"customer\">";
while($row = mysql_fetch_assoc($result))
{
if ($row['name'] == $client)
{
echo "<option selected value=\"" . $row['name'] . "\">" . $row['name'] . "</option>";
}
else
{
echo "<option value=\"" . $row['name'] . "\">" . $row['name'] . "</option>";
}
}
echo "</select>";
?>
答案 3 :(得分:0)
我还建议您更改mysql的旧扩展名。我现在看不到SQL注入问题,但即使它是内部的,你也应该照顾它,因为从不同的原因你会忘记稍后清理它。如果您正在编写它,请正确写入。
现在出现问题,您没有正确使用引号,因此错误。不要使用相同类型的引号,而是更改它们,如下所示:
echo '<select name="client">';
或者,如果使用双引号进行连接,请使用单个内部。 如果您必须使用相同的,请使用\
转义它们