如何在 PHP 的编辑表单中填充下拉框


how to populate a dropdown box in a edit form in php

>更新到下面:

我稍微更改了代码并取得了一些成功,但我仍然在一件事上。我换了线

<option value="<?php echo $row[brokername]; ?>" <?php if ($row[brokername] == $brokerlistrow[id]) { echo selected; } ?> ><?php echo $brokerlistrow[name]; ?></option>

<option value="<?php echo $brokerlistrow[name]; ?>" <?php if ($row[brokername] == $brokerlistrow[id]) { echo selected; } ?> ><?php echo $brokerlistrow[name]; ?></option>
<?php } ?> </select>

现在它显示正确的选择名称,并实际上在数据库中保存了更改的值,但是,它不是保存名称 ID 号,而是保存实际名称。 $row的print_r给了我:

数组 ( [0] => 4 [id] => 4 [1] => 6 [经纪人名称] => 6 [2] =

> 金氏船 [船名] => 金氏船 )

该选定用户的正确 brokerlist.id 是 6,但不是将 6 保存到 boatlist.name 而是保存 brokerlist.name 字段而不是 brokerlist.id。

我可以更改什么以使其保存 brokerlist.id 而不是物理名称? :)

提前谢谢你!

(这是新的编辑页面代码以防万一:

<?php
    include_once('db.php');     
    if(isset($_GET['edit']))
    {
    $id = $_GET['edit']; 
    $res= mysql_query("SELECT * FROM boatlist WHERE id='$id'"); 
    $row= mysql_fetch_array($res);   
    $brokerlistquery = mysql_query("SELECT * FROM brokerlist");
    print_r($row);
    }

    if( isset($_POST['newbrokername']) && isset($_POST['newboatname']))    
       {    
         $newbrokername = $_POST['newbrokername'];
         $newboatname = $_POST['newboatname'];     
         $id= $_POST['id'];
         $sql = "UPDATE boatlist SET brokername='$newbrokername', boatname='$newboatname' WHERE id='$id'";
         $res= mysql_query($sql) or die("Could not update".mysql_error());
         echo "<meta http-equiv='refresh' content='0;url=testaddboat.php'>";
    }

?>
<table class="centerwithroom">    
<form action="testeditboat.php" method="POST">    
<tr>    
<td>New Broker Name </td><td>
<select name='newbrokername'>
  <?php
    while ($brokerlistrow = mysql_fetch_array($brokerlistquery)) {
  ?>
<option value="<?php echo $brokerlistrow[name]; ?>" <?php if ($row[brokername] == $brokerlistrow[id]) { echo selected; } ?> ><?php echo $brokerlistrow[name]; ?></option>
<?php } ?> </select>
</td>
<tr>
<td>Boat Name:</td><td><input type="text" name="newboatname" value="<?php echo $row[boatname]; ?>"/></td>
</tr>    
</tr>
<td></td><td><input type="submit" value=" Update "/></td>
</tr>
<input type="hidden" name="id" value="<?php echo $row[id]; ?>"/>    
</form>
</table>

(ORIG POST从这里开始)

这是我的第一篇文章,我会尽量彻底。这只是一个基本的形式,我根本没有在其中添加任何安全性,因为我只是想让它工作,然后:)作为编程新手,我的代码对你们中的一些专家来说可能看起来很糟糕,我希望你能给出任何例子。

进入项目。我有两个 mysql 表,一个称为代理列表,有两个字段 id 和名称。第二个表称为 boatlist,其中包含三个字段 ID、代理名称和船名。代理名称字段包含 brokerlist.id 字段的值和输入的船名文本。

我已经创建了php添加表单以将数据添加到两个正常工作的表中。我创建了一个php编辑表单来编辑正常工作的经纪人列表表。我的问题在于我称之为testeditboat.php的形式。我正在尝试做的是允许用户使用一个下拉框更改 testeditboat.php 表单中的字段代理名称,该下拉框从 mysql 表代理列表中填充,但也使用当前条目的选择。

我的表单目前所处的位置是它提交请求并将更改船名字段中的任何值,但不会更新经纪人名称字段。

提前非常感谢大家的帮助,希望我已经足够描述了。

我的testeditboat.php表单的代码如下:

<?php
    include_once('db.php');     
    if(isset($_GET['edit']))
    {
    $id = $_GET['edit'];    
    $res= mysql_query("SELECT * FROM boatlist WHERE id='$id'");    
    $row= mysql_fetch_array($res);   
    $brokerlistquery = mysql_query("SELECT * FROM brokerlist");
    }

    if( isset($_POST['newbrokername']) && isset($_POST['newboatname']))    
       {    
         $newbrokername = $_POST['newbrokername'];
         $newboatname = $_POST['newboatname'];     
         $id= $_POST['id'];
         $sql = "UPDATE boatlist SET brokername='$newbrokername', boatname='$newboatname' WHERE id='$id'";
         $res= mysql_query($sql) or die("Could not update".mysql_error());
         echo "<meta http-equiv='refresh' content='0;url=testaddboat.php'>";
    }

?>
<table class="centerwithroom">    
<form action="testeditboat.php" method="POST">    
<tr>    
<td>New Broker Name </td><td>
<select name='newbrokername'>
  <?php
    while ($brokerlistrow = mysql_fetch_array($brokerlistquery)) {
  ?>
<option value="<?php echo $row[brokername]; ?>" <?php if ($row[brokername] == $brokerlistrow[id]) { echo selected; } ?> ><?php echo $brokerlistrow[name]; ?></option>
<?php } ?> </select>
</td>
<tr>
<td>Boat Name:</td><td><input type="text" name="newboatname" value="<?php echo $row[boatname]; ?>"/></td>
</tr>    
</tr>
<td></td><td><input type="submit" value=" Update "/></td>
</tr>
<input type="hidden" name="id" value="<?php echo $row[id]; ?>"/>    
</form>
</table>

更改以下行:

$row= mysql_fetch_assoc($res); //this fetches the array in associative mode

更改以下行:

<option value="<?php echo $row[brokername]; ?>" <?php if ($row[brokername] == $brokerlistrow[name]) { echo selected; } ?> ><?php echo $brokerlistrow[name]; ?></option>

你在哪里比较$row[brokername] == $brokerlistrow[id]这似乎是不正确的。你必须比较$row[brokername] == $brokerlistrow[name]

注意:停止使用 mysql_* 扩展程序改用 mysqli_*

通过将行更改为

<option value="<?php echo $brokerlistrow[id]; ?>" <?php if ($row[brokername] == $brokerlistrow[id]) { echo selected; } ?> ><?php echo $brokerlistrow[name]; ?></option>
<?php } ?> </select>

现在,它保存了正确的值,并在"编辑"下拉框中显示正确的焦点。

谢谢大家的指导! :)