【问题标题】:Populate dropdown with database value使用数据库值填充下拉列表
【发布时间】:2014-08-27 23:45:39
【问题描述】:

我对 php 还是比较陌生,所以请多多包涵。我已经多次查看其他示例,但仍然无法弄清楚。

我有一个添加页面,其中有一个由查询填充的下拉列表。这根据需要工作。我的问题现在在一个编辑表单上,让下拉框显示数据库字段中的值。

<select name="lvmID" id="lvmID">

<option value="">--Select--</option>
<?php
include ('../datalogin.php');
$list=mysql_query("select luchtvaartmaatschappijID, luchtvaartmaatschappij from  
tbl_luchtvaartmaatschappij WHERE inactive='0' Order by luchtvaartmaatschappij ASC");
while($row_list=mysql_fetch_assoc($list)){    ?>

<option value="<?echo $row_list['luchtvaartmaatschappijID']; ?>">
<?echo $row_list['luchtvaartmaatschappij']; ?>          
</option>

         <?
         }
         ?>
</select>

这在“添加”表单上按预期工作。但是当我进入编辑表单以更改该页面的信息时。 Select 下拉列表仍然会填充,但我不知道如何获取它,以便不会选择存储值的数据库表中的值(而不是下拉列表中的值)。

所以值可能应该是“1747”“荷兰皇家航空公司”。我想不通,所以当我去 bijwerk.php 时,这个值还没有在下拉列表中被选中。

bijwerk.php - 从 tbl_vluchtgegevens 表中提取信息。

<body>
<?    include "datalogin.php";//database connection

$order = "select vg.*, lh.luchthavencode as vertrekluchthavencode, lh2.luchthavencode 
AS aankomstluchthavencode, lvm.luchtvaartmaatschappij AS lvmnaam, 
lvm.luchtvaartmaatschappijID, t.toestel AS toestelnaam, k.reisklass, r.reizen, 
k.reisklass, vt.vluchttype AS revenue

from tbl_vluchtgegevens vg

left join tbl_luchthaven lh
on vg.vertrekluchthaven = lh.luchthavenID

left join tbl_reizen r
on vg.reisID = r.reizenID  

left join tbl_luchthaven lh2
on vg.aankomstluchthaven = lh2.luchthavenID

left join tbl_toestel t
on vg.toestel = t.toestelID

left join tbl_klass k
on vg.reisklasse = k.klassID

left join tbl_vluchttype vt
on vg.vluchttype = vt.vluchttypeID

left join tbl_luchtvaartmaatschappij lvm
on vg.luchtvaartmaatschappij = lvm.luchtvaartmaatschappijID

WHERE gegevenID='$id'";
  $result = mysql_query($order);
  $row = mysql_fetch_array($result);
?>

<table border=1>
<tr>
<td width="646" align=center>bijwerk vluchtgegevens: <br>
ID = <? echo "$row[gegevenID]"?></td>
<td width="505" align=center>&nbsp;</td>
</tr>

<td><select name="lvmID" id="lvmID">

<option value="">--Select--</option>
<?php
include ('../datalogin.php');
$list=mysql_query("select luchtvaartmaatschappijID, luchtvaartmaatschappij from  
tbl_luchtvaartmaatschappij WHERE inactive='0' Order by luchtvaartmaatschappij ASC");
while($row_list=mysql_fetch_array($list)){    ?>

<option value="<?echo $row_list['luchtvaartmaatschappijID']; ?>" <?php echo    
($row_list['luchtvaartmaatschappijID'] == $_POST['lvmID']) ?    
'selected="selected"' : '' ?>>
<?echo $row_list['luchtvaartmaatschappij']; ?>          
</option>

     <?
     }
     ?>
</select></td>
      </table>
<?php
// close connection 
mysql_close();
?>
</body>
</html>

【问题讨论】:

  • 是的,您正在以正确的方式接近它。你面临什么问题?
  • 本页右下角相关问题列表中几乎所有问题都可能重复。
  • 嗨,第二个陆道。它可能是重复的,但我一直在查看这些示例,但我仍然无法弄清楚。所以请不要总是假设重复。
  • 我假设是重复的,因为它是重复的。如果您在理解特定问题时遇到问题,请提出类似“我看到了这个问题,但我无法理解它的具体部分,这是什么意思?”之类的问题

标签: php forms drop-down-menu


【解决方案1】:

您应该检查非活动字段实际上是字符串还是整数。如果是整数,则查询中不应使用引号,则应如下:

"select luchtvaartmaatschappijID, luchtvaartmaatschappij from  
tbl_luchtvaartmaatschappij WHERE inactive=0 Order by luchtvaartmaatschappij ASC"

另外,在您的 html 中,您应该将 selected="selected" 更改为 selected

无论如何,我建议您升级到mysqli 功能,因为mysql_ functions are deprecated 不再安全使用。在这里您可以找到有关如何升级的好建议:

  1. Updating from MYSQL to MYSQLI
  2. Upgrading to MySQLi - As easy as swapping out mysql for mysqli?

【讨论】:

  • 您好 clami219,我已经进行了所有这些更改,但仍然一无所获。是的,lvmID 的值(tbl_vluchtgegevens 数据等于 luchtvaartmaatschappijID 的字段)。所以我删除了''。我将 selected="selected" 更改为刚刚选中。我在上面发布了 bijwerk.php 的所有相关代码,也许其中的一些内容会产生额外的信息?
【解决方案2】:

因此,如果我得到了正确的结果,您希望调整您的 bijwerk.php 文件以自动获得正确的选定值。您可以通过修改循环来构建下拉列表来做到这一点:

while($row_list=mysql_fetch_assoc($list)){    ?>

<option value="<?echo $row_list['luchtvaartmaatschappijID']; ?>" <?php echo ($row_list['luchtvaartmaatschappijID'] == $_POST['luchtvaartmaatschappijID']) ? 'selected="selected"' : '' ?>>
<?echo $row_list['luchtvaartmaatschappij']; ?>          
</option>

         <?
         }
         ?>

$_POST 的值是所选 'luchtvaartmaatschappijID' 的当前值。

这是你说的吗?

【讨论】:

  • 嗨扬托。不,这也不起作用。我也尝试将 _POST 更改为 _GET,但这不起作用。
  • $_POST 或 $_GET 表示“luchtvaartmaatschappij”的当前值,因此您需要将其替换为正确的变量。
  • 嗨扬托。 $_GET['lvmID'] 是一个整数,应该是 luchtvaartmaatschappijID。 luchtvaartmaatschappij 是一个文本值。这可能是我的问题所在吗?
  • 不应该将bijwerk.php文件中的$_POST['lvmID']改成$row['lvm.luchtvaartmaatschappijID']?
  • 在 PHP 中:echo (1==1) ? '真假'; // 是的
猜你喜欢
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 2021-05-19
  • 1970-01-01
相关资源
最近更新 更多