2014-02-05 45 views
0

我從數據庫填充組合框,問題是當我從組合框中選擇一個項目並嘗試保存到數據庫中的另一個表時,它將選擇記錄ID列而不是項目本身。 這是我如何填充組合框。從組合框插入使用php

<label>State</label> 
<select name="state" class="state" onChange="display(this.value)" width="142" style="width: 142px"> 
<option value="" selected="selected">-- Select State --</option> 
<?php 
$query="select * from tbl_state"; 
$query_result=mysql_query($query)or mysql_error(); 
          while($row=mysql_fetch_array($query_result)) 
         { 
?> 
<option value="<?php echo $row['id']; ?>"><?php echo $row['state_name']; ?></option> 
<?php 
} 
?> 

    </select> 
<div id="show_city" style="position: relative" height:5px;> 
    <label>LGA</label> 
     <select name="city" class="lga" width="142" style="width: 142px"> 
     <option value="" selected="selected">-- Select LGA --</option> 
     </select> 
</div> 
</p> 

數據庫連接

$state    = $_POST['state']; 
$city    = $_POST['city']; 

$sql="INSERT INTO members (state, city) 
VALUES ('$state', '$city')"; 

NB。我正在使用JavaScript來填充組合框。

+1

我不明白這個問題。 – Strawberry

+0

我有兩個組合框從數據庫動態填充兩個表格,當我從「狀態」選擇項目時,「lga」組合框填充了來自tbl_lga的項目。 這裏的問題是,我在窗體中使用這些組合框,所以我想要的是提交表單數據,包括從兩個組合框中選擇的項目到我的數據庫中的另一個表格。 – Crossyde

回答

0

當表單發送一個組合的選定項目時,它將發送所選選項的值,而不是文本。如果要發送文本,請爲每個組合添加一個隱藏輸入,然後在組合的onclick事件中調用一個將文本填充到隱藏輸入的函數。

selectState = function() { 
    $('#hiddenInputField').val($("select[name='state'] option:selected").text()); 
} 

然後在服務器端,您必須獲得輸入隱藏字段的值而不是選擇字段。

+0

感謝這種方法...雖然我嘗試使用它,但似乎沒有得到它的工作。 – Crossyde

1

當您提交表單時,只會發送字段名稱及其值。在你的情況下,當用戶選擇狀態並按下提交時,當你在選項值標籤中指定行標識時,將發送行標識。

要麼你可以使用<option value="<?= $row['state_name'] ?>"> ... </option>"然後直接拿到州名INI PHP:

$state = $_POST['state']; 

或離開填充代碼現在,通過使用記錄ID查詢數據庫獲取國家名稱。

$state_id = intval($_POST['state']); 
    $city_id = intval($_POST['city']); 

    $sql = "SELECT `state_name` FROM tbl_state WHERE id=$state_id"; 
    $query_result = mysql_query($sql) or mysql_error(); 

    $state = mysql_result($query_result, 0); 
    echo $state; 

getcity.php

<?php 
$con=mysql_connect('localhost','root','') or die('Mysql not connected'); 
mysql_select_db('thriftdb',$con) or die('DataBase not connected'); 

$state_id=$_REQUEST['state_id']; 

$query="select * from lga where state_id='$state_id'"; 

?> 
<label>LGA</label> 
<select name="city" width="142" style="width: 142px"> 
<option value="" selected="selected">-- Select LGA --</option> 
<?php 
$query_result=mysql_query($query)or mysql_error(); 
while($row=mysql_fetch_array($query_result)) 
{ 
?> 
<option value="<?php echo $row['id']; ?>"><?php echo $row['lga_name']; ?></option> 
<?php 
} 
?> 
</select> 

數據庫結構如下 'LGA' 表有...

lga_id --- state_id --- lga_name 

'狀態' 表中有

state_id --- state_name 
+0

感謝您的幫助...我有點失落,雖然...嘗試使用這個,但字段返回空白... – Crossyde

+0

@Crossyde你使用哪一個?第一個還是第二個? –

+0

我嘗試過在不同的場合使用兩個......雖然 – Crossyde