讓我前言本答案與我的你的問題的理解:你有兩個並排側下拉菜單。在其中選擇一個選項會導致另一個選項成爲當前選項。根據你的標籤,它看起來像你正在構建完整的堆棧。這很好,這對你來說是一次很好的學習經歷。
讓我們看看我認爲作爲一種可能的解決方案,回到前面,在建立對系統的熟悉程度時迭代一兩次。
底層這裏是你的MySQL數據庫(我暫時假設這已經建好了,所以如果不是,請告訴我,我會爲此答案添加一些相關信息)。您的網站通過PHP與此數據庫進行交互,或者更具體地說,通過PHP MySQL Improved Extension(http://php.net/manual/en/book.mysqli.php)進行交互。
您將需要的第一個PHP腳本是從數據庫獲取數據的腳本。我會逐行拋出一些示例代碼並解釋一切。
$itemID = $_POST["itemID"];
我們將在一分鐘內瞭解到這是與POST請求相關的數據。我們將使用它來告訴我們的數據庫我們正在尋找哪一行。
$mydatabase = new mysqli("databaseserver.com", "mysqlusername",
"mysqlpassowrd", "databasename");
此行建立您的站點(服務器端,而不是客戶端)和您的數據庫服務器之間的連接。如果它們託管在同一臺機器上,並且MySQL在本地主機上運行,則可以將localhost作爲數據庫服務器位置。
接下來,我建議你檢查錯誤處理函數的PHP文檔。我不想在這裏過於細化。
之後,執行您的查詢。
$result = $mydatabase->query("SELECT * FROM mytable WHERE itemID = " . strval($itemID));
這裏,$result
是數據類型「MySQLi結果」。你可以用這個做更多的錯誤處理,但接下來的基本步驟是將你的結果轉化爲更友好的數據。一排的數據可以變成一個PHP關聯數組,像這樣:
$row = $result->fetch_assoc();
有很多其他選擇這裏,所以檢查的文檔,如果這個方法不剪你。在用echo
「返回」這些數據之前,您需要將其解析爲更有用的形式。例如,如果您查詢的MySQL表只有一列INTEGER類型,並且它包含產品ID,則可能會與$data = $row["productID"]
脫節。
非常重要的注意事項:配置不當PHP是網絡上最常見的漏洞之一,特別是涉及到POST的情況(更多詳情參見下文)。請閱讀文檔並確保您在此處採取所有相關的預防措施。如果您從上面複製並粘貼我的示例,那麼您將很容易受到SQL注入的影響。
向上移動一層,您需要將此數據傳輸到您的客戶端腳本(閱讀javascript)。爲了看這是如何完成的,我們需要備份一個步驟,看看原始請求是如何執行的。我建議爲此使用jQuery;它很容易,它很受歡迎,而且有很好的文檔記錄。
要運行我們剛剛討論過的PHP腳本,您需要執行某種請求。基於這種設置的性質,它看起來像是一個POST
。一個POST
看起來有點像這樣在jQuery的:
$.post("grabdata.php", {"item":$('#itemID').val()}, function(response){
console.log(response);
document.mydata = response;
}
此功能將打印grabdata.php最後echo
到控制檯然後保存響應爲您document
對象的屬性(基本上使得全局可訪問) 。有更好的方法來做到這一點,以保持你的全球空間更清潔,但這對我的簡單例子來說是個訣竅。它們之間的中間部分就是您要「發佈」到grabdata.php的數據。在你的情況下,你想得到一個產品ID給定一個物品ID(?),反之亦然。這是一個單向版本的例子。查詢http://api.jquery.com/jQuery.post/瞭解更多詳情。
頂層:顯示。這最後一部分非常簡單。現在,您已經存儲在document.mydata
您的產品ID,所有你需要做的就是用jQuery快速值更新:
$('#productID').val(document.mydata);
請你記住,我在這裏已經掠過了很多細節。我只是想給出一個這樣的系統如何工作的概述。請閱讀我鏈接到的文檔,並儘快回覆更具體的問題。
祝你好運!
你可以在你的問題中發佈你的代碼嗎? – BRoebie
幫助我編寫如何從數據庫動態下拉數據。 –
那麼首先不要使用'mysql_ *'函數,因爲它已被廢棄使用'mysqli_ *'或PDO。 – BRoebie