2013-10-29 61 views
0

更新到下面:如何在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給我:

Array([0] => 4 [id] => 4 [1] => 6 [brokername] => 6 [2] => Kims Boat [boatname] => 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字段的值和文本輸入的船名。

我已經創建了php添加表單,以將數據添加到兩個正常工作的表中。我已經創建了一個php編輯表單來編輯可正常工作的brokerlist表。我的問題在於我稱之爲testsitboat.php的表單。我想要做的是允許用戶更改被測試的.boat.php表單中的字段brokername,並使用從mysql表代理列表中填充的下拉框,但也使用當前條目的選定內容。

我的表單現在的地位在於它提交請求並將更改boatname字段中的任何值,但不會更新brokername字段。

非常感謝大家的幫助,希望我已經足夠描述了。

我的測試船的代碼。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> 

回答

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_ *分機通過改變行

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

使用mysqli_而不是*

+0

感謝您的迴應,我試着改變兩者。當我改變id來命名時,它會丟失選擇的選定焦點,並只顯示列表中的第一個名字,而不是數據庫中的名字。此外,即使船名字段將更新,該字段仍不會更新。 謝謝你的所有建議:)還有什麼我們可以嘗試? –

+0

'$ row [brokername]'和'$ brokerlistrow [id]'的值是什麼? – Deepak

+0

'print_r($ row)'的值是什麼? – Deepak