![](/img/trans.png)
[英]fetch a foreign key data from mysql database into select dropdownlist using php
[英]Fetch data from mysql Foreign key table in php
我的數據庫中有3個表:
1.tblclient
2.tblbranch
3.tblclientbranch
|____tblclient_____| |______tblbranch____| |___tblclientbranch___|
| clientId {PK} | | branchId {PK} | | clientId {FK} |
| clientName | | branchName | | branchId {FK} |
| clientMob | | branchAddress | | |
| clientEmail | | | | |
我想知道如何從主表(tblclient和tblbranch)的tblclientbranch獲取數據。
根據數據庫,一個客戶端可以有多個分支。 我想將這兩個clientName和branchName都提取到兩個下拉菜單中。 如果我從下拉列表中選擇客戶端名稱,則branchName下拉列表僅能顯示該特定用戶的branchName / s。
任何解決方案都很棒!
提前致謝。
您需要在此處使用SQL連接。 內部聯接將需要進行匹配,在“有很多”的情況下將是正確的。 嘗試這樣的事情:
SELECT B.* FROM tblbranch B
INNER JOIN tblclientbranch CB on CB.branchId = B.branchId
INNER JOIN tblclient C ON CB.clientId = C.clientId
WHERE C.clientId = [YOUR CLIENT ID HERE]
使用這樣的查詢,如果傳入客戶端ID#3,它將基於該ID在該表中查找客戶端->分支連接,並返回該客戶端連接到的所有分支。
要回答有關下拉菜單的問題,您需要遍歷所有用戶並為每個用戶返回一個包含其分支名稱的數組,然后使用Javascript根據第一個下拉菜單中的選擇填充第二個下拉菜單,或者使用AJAX調用綁定到第一個下拉列表的change事件以及在第一個下拉列表中所做的選擇的值 (您將使用該值作為客戶ID),以從上述查詢中檢索結果並以此填充第二個下拉列表。
編輯:這是PHP和jQuery中的一個簡單示例,說明如何執行此操作:
get_branches.php (通過AJAX訪問,返回JSON)
<?php
function getBranchesForClient($client_id) {
// get the branches for a client
$query = $pdo->prepare('SELECT B.* FROM tblbranch B INNER JOIN tblclientbranch CB on CB.branchId = B.branchId INNER JOIN tblclient C ON CB.clientId = C.clientId WHERE C.clientId = :client_id');
$query->bindParam(':client_id', $client_id);
$results = $query->execute();
return $results->fetchAll(PDO::ASSOC);
}
echo json_encode(getBranchesForClient($_GET['client_id']));
這樣,您就可以吸引用戶,並輸出如下所示的選擇框:
<select name="clients" id="clients">
<?php
foreach($clients as $client) {
echo '<option value="' . $client['clientId'] . '">' . $client['clientName'] . '</option>';
}
?>
</select>
對於分支機構,您將有另一個選擇框,如下所示:
<select name="branches" id="branches"></select>
...然后,您將使用jQuery(例如)綁定此select的change事件以填充另一個select:
$('#clients').on('change', function() {
var client_id = $(':selected', this).val();
$.ajax({
url: 'get_branches.php',
data: { client_id: client_id },
type: 'GET',
dataType: 'JSON',
success: function(msg) {
// clear the select first
$('#branch_select').empty();
// add all new branches
for(i in msg) {
$('#branch_select').append('<option value="' + msg[i].branchId + '">' + msg[i].branchName + '</option>');
}
}
});
});
當然,還有許多其他方式可以做到這一點,這只是一個例子。 確保在執行MySQL查詢時在mysqli或PDO中使用參數綁定,以防止受到SQL注入等的影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.