2010-04-08 99 views
1

我正在使用一个表单,用户可以编辑条目。一切都在填充,一切都很好,除了我无法下拉显示他们已经分配了图像的项目。从mysql的下拉列表中获取正确的记录

$project_qry = "SELECT * from projects ORDER BY title ASC"; 
$project_res = mysql_query($project_qry); 

$project_drop = "<select name=\"project_id\">\n"; 
while ($row = mysql_fetch_array($project_res)) 
    { 
    if ($project_id == $row[title]) 
     { 
      $project_drop .= "<option value=\"$row[id]\" selected>$row[title]</option>\n"; 
     } 
    else 
     { 
      $project_drop .= "<option value=\"$row[id]\">$row[title]</option>\n"; 
     } 
} 
$project_drop .= "</select>\n"; 

我确定这是一件非常简单的事,但我很难过。

回答

3
{ 
    if ($project_id == $row[id]) 
     { 
      $project_drop .= "<option value=\"$row[id]\" selected=\"selected\">$row[title]</option>\n"; 
     } 
    else 
     { 
      $project_drop .= "<option value=\"$row[id]\">$row[title]</option>\n"; 
     } 
} 

您需要比较值而不是标题。它是获得发布的值($ _POST)

selected =“selected”使其符合XHTML标准。

+0

要添加到此答案,您应该始终引用像这样的关联索引:$ row ['id']。你也应该使用花括号将数组转换为字符串:$ s =“{$ row ['id']}”; – webbiedave 2010-04-08 18:46:38

+0

在双引号字符串中引用数组键不是必需的。 PHP假定它是一个字符串键并作相应的处理。只有在输出多维数组值时,或者绝对必须使用带引号的键语法时,才需要大括号表示法。 – 2010-04-08 19:06:29

+0

真棒添加到答案! – 86Stang 2010-04-08 19:44:28

0

bigstylee正确回答。我也建议分开数组和字符串的值:

$project_drop .= "<option value='". $row['id'] ."'>".$row['title']."</option>"; 

也放下\ n。输出\ n不会在浏览器中产生换行符。这是没有必要的。

+0

我在我的代码中也使用\ n。生成的html格式更好,这有助于调试,特别是当您在选择中有大量选项时。 – webbiedave 2010-04-08 18:52:38

+0

只是一个小小的修复:把价值(撇号')价值... “

+0

哎呀,谢谢dar7。 @webbiedave:谢谢你的输入。 DOM树如何对它做出反应? – Kel 2010-04-08 19:06:11