PHP下拉选择

时间:2014-12-19 13:41:00

标签: php mysql

我已经设置了一个将项目注册到我们数据库的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注入问题,目前该网站是内部的。

任何帮助都将不胜感激。

感谢

4 个答案:

答案 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">';

或者,如果使用双引号进行连接,请使用单个内部。 如果您必须使用相同的,请使用\

转义它们