2012-12-20 90 views
0

第一個ID首先感謝所有人對我以前的問題給出的積極迴應。顯示選定項目後的數據

現在我得到了另一個需要幫助的問題。

我有一個項目列表的下拉菜單。該列表在while循環內生成。下面是代碼:

$query = "SELECT Key, Short FROM product WHERE Active = 1 OR Short LIKE 'Blue%'"; 
$run = mysql_query($query) or die(mysql_error()); 

echo 'Product: <br />'; 
?> 

<select id="select2" name="select2"> 
<?php 
$ids = 0; 
echo "<option selected='selected'>-Select product-</option>"; 
while($rows = mysql_fetch_assoc($run)) { 
    echo "<option value=$ids>".$rows['Short']."</option>"; 
    $ids++; 
} 
?> 
</select><br /><br /> 

現在我需要做的是建立在下面這取決於他們的選擇從下拉菜單中選擇這一個,演出合同另一個下拉菜單。他們選擇的每個項目也都有一個名爲Key的編號。現在在稱爲合同的另一個表格中,我用相同的值Key存儲了所有合同。所以...在第二個下拉菜單中,我必須根據他們在第一個下拉菜單中選擇的項目來顯示合同。

我真的很希望它很清楚明白,我有點困惑。

更新:好吧,這裏是新代碼:

的index.php

$("select#select2").change(function(){ 
    $.ajax({ 
     type: "GET", 
     url: "process.php", 
     data: "selected_key=" + $(this).val(), 
     success: function(result) { 
      $("select#text2").html(result); 
     } 
    }); 
}); 

</script> 

<select id="text2" name="text2"> 

</select> 

這裏是我的process.php

<?php ## URL_TO_GET_CONTRACTS_FOR_KEY ## 
$selectedKey = $_GET['selected_key']; 
$query = "SELECT * FROM contacts WHERE Key = '".$selectedKey."'"; 
$run = mysql_query($query); 
while($row = mysql_fetch_assoc($run)) { 
    echo "<option value='..'>..</option>"; 
    } ?> 

,但我不能看到顯示在我的東西text2下拉菜單。

+0

**注意!**的下一個主要版本PHP是*棄用函數的'mysql_'系列。現在將是[切換到PDO](http://php.net/book.pdo)或[mysqli](http://php.net/book.mysqli)的好時機。 – Charles

回答

2

認爲你最好使用期權價值$行[ '關鍵']在第一個下拉菜單,然後添加一個jQuery的選擇器獲取所選值並獲取該密鑰的相應合約。

應該是這樣的..

PHP代碼

$query = "SELECT Key, Short FROM product WHERE Active = 1 OR Short LIKE 'Blue%'"; 
$run = mysql_query($query) or die(mysql_error()); 
echo 'Product: <br />'; ?> 
<select id="select2" name="select2"> 
<?php 
echo "<option selected='selected'>-Select product-</option>"; 
while($rows = mysql_fetch_assoc($run)) { 
    echo "<option value='".$rows['Key']."'>".$rows['Short']."</option>"; 
} 
?> 
</select> 

jQuery代碼

$("select#select2").change(function(){ 
    $.ajax({ 
     type: "GET", 
     url: "URL_TO_GET_CONTRACTS_FOR_KEY", 
     data: "selected_key=" + $(this).val(), 
     success: function(result) { 
      $("select#NEWSELECT").html(result); 
     } 
    }); 
}); 

說明: URL_TO_GET_CONTRACTS_FOR_KEY是一個URL,你必須寫一個PHP文件。在該文件中,您可以訪問$ _GET ['selected_key'],使用該值獲取該密鑰的合同。在該文件中,您應該回顯第二個選擇的「」標籤。就像這樣:

<?php ## URL_TO_GET_CONTRACTS_FOR_KEY ## 
$selectedKey = $_GET['selected_key']; 
$query = .. 
$run = .. 
while($row = mysql_fetch_assoc($run)) { 
    echo "<option value='..'>..</option>"; 
} ?> 

NEWSELECT應該由選擇的id其中返回的選項應該被放置在被替換

+0

嘿,我把URL放在url下? 然後我如何將選定的一個放入另一個下拉菜單中? – Smiley

+0

編輯上面的帖子:添加了解釋部分。這應該對你有幫助 – ennovativemedia

+0

好的,謝謝你的幫助:)所以我需要把文件(網址)? – Smiley

1

PHP是服務器端只用PHP的,你需要AJAX你不能做到這一點(如果你想這樣的無刷新頁面)

只是做出選擇下拉AJAX調用下來,並顯示另一個


  1. 整個ext/mysql PHP擴展,其中p提供以前綴mysql_命名的所有函數,爲officially deprecated as of PHP v5.5.0,將來將被刪除。所以請使用PDOMySQLi

良好的閱讀

  1. The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
+0

他可以做到刷新頁面 –

+0

從來沒有使用ajax,是否有可能使用jQuery來做,並且可以幫助更多一點嗎? – Smiley

+0

@ user1914940肯定http://chat.stackoverflow.com/rooms/20546/actionscript –

0

有辦法做到這一點,但他們會很麻煩,並且與AJAX煩人。 (我的意思是通過先得到所有必需的數據,但這是一個壞主意)。

爲什麼AJAX

AJAX可以發送和從其他網頁接收數據,而不是重新加載整個網頁。您上面編寫的PHP將僅向瀏覽器輸出HTML。因此,要運行更多的PHP,您需要在文件中存儲其他代碼並運行該代碼。

如何使用它會使用jQuery

一個簡單的方法。這將與您的jQuery在客戶端

$("select#select2").change(function(){ 
$.ajax({ 
    type: "POST", 
    url: "url_to_contacts", 
    data: "reqd_key=" + $(this).val(), 
    success: function(result) { 
     $("select#select3").html(result); 
     } 
    }); 
}); 

將會有上面提到的單獨的PHP文件。可以使用$_POST獲取變量這將包含查詢並且它將輸出HTML。該輸出HTML將被投入作爲新的選擇HTML由線$("select#select3").html(result);

建議做AJAX一些研究試圖在此之前,並瞭解如何動態編輯頁面

+0

我需要提供哪些網址?所有數據都來自數據庫。 – Smiley

相關問題