2014-12-19 261 views
-1

我已经建立了一个php表单,它向我们的数据库注册了一个项目,它具有从我们的客户/供应商数据库填充的下拉菜单。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注入问题,目前这个网站是内部的。

任何帮助,将不胜感激。

感谢

+3

转义它们请停止使用***已弃用的'mysql'扩展名***,[读取红色框](http://www.php.net) /的mysql_connect)。学习使用'PDO'或'mysqli'代替('i'代表改进) –

+2

只要看看你的代码是如何着色的。 – Pinoniq

+0

OP,我知道我的SQL等不是借口,你不得不使用该代码,停止。 –

回答

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

谢谢Seunhaab,问题解决了! – Dan

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回声

$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>'; 

您将在此基础上,你必须传递值$clientValue得到选择。

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>'; 
    } 
} 
0

我也建议你改变旧的扩展的MySQL。目前我看不到任何SQL注入问题,但即使它是内部的,也应该注意它,因为从不同的原因,你会忘记稍后再进行消毒。如果你正在写它,然后正确地写。

现在,对于这个问题,你没有正确使用引号,因此错误。不要使用相同类型的报价,但改变它们,就像这样:

echo '<select name="client">'; 

或者,如果你使用双引号进行连结,使用单内。 如果你不得不使用相同的,请用\