如何在php中编辑编辑表单中的下拉框

时间:2013-10-29 21:30:43

标签: php jquery html mysql forms

更新到下面:

我稍微更改了代码并且取得了一些成功,但我还是有一件事情。我改变了行

<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] =&gt; 4 [id] =&gt; 4 [1] =&gt; 6 [brokername] =&gt; 6 [2] =&gt; Kims Boat [boatname] =&gt; Kims Boat)

所选用户的正确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表,一个名为brokerlist,有两个字段id和name。第二个表称为boatlist,包含三个字段id,brokername和boatname。 brokername字段包含brokerlist.id字段的值和输入的boatname文本。

我创建了php添加表单,将数据添加到两个正常工作的表中。我已经创建了一个php编辑表单来编辑可正常工作的brokerlist表。我的问题在于我称之为testsitboat.php的形式。我想要做的是允许用户使用从mysql表brokerlist填充的下拉框更改testsitboat.php表单中的字段brokername,但也使用当前条目中选择的select。

我的表单当前所在的位置是提交请求并更改boatname字段中的任何值,但不会更新brokername字段。

非常感谢大家的帮助,我希望我的描述能够充分。

我的testsitboat.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>

2 个答案:

答案 0 :(得分:0)

更改以下行:

$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_而不是*

答案 1 :(得分:0)

将行更改为

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

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

谢谢大家的指导! :)