我的想法: 我有一個用戶數據庫,每個用戶都有一個自動增加的id號字段,以及其他各個字段的詳細信息。我想在用戶記錄中存儲一個包含一系列朋友的字段。我想要最有效的方式來存儲並能夠搜索每個用戶的朋友ID數組字段,並列出每個用戶搜索的朋友ID。假設某些時候可能會有一百萬個用戶,其中每個用戶的陣列中都有一百萬個「朋友ID」,我不認爲讓他們分開逗號會很高效,任何解決方案?它可以存儲在一個blob中並逐位搜索? (比如每人一點,所以一個1k的blob可以存儲多達1024個朋友組合)我認爲另一個表是最好的解決方案。這是一個多對多的關係,我已經爲用戶朋友建立了一個單獨的表:usrfrnd_tbl 與列UserFriendID(唯一的關鍵),UserID,FriendID 在我應用Jquery自動完成到朋友的註冊表單字段:當訪問者類型現有用戶的名稱到此輸入字段,首先,腳本搜索名稱存在,完成它(如果存在),添加逗號。用戶可以輸入第二,第三...現有的用戶名到這個字段,每次腳本都會自動完成。現在我想創建一個php文件,它將搜索這些用戶名的id,創建id的數組,將它添加到db表中的「usrfrnd_tbl」新用戶「FriendID」字段中。問題: 1.如何做?現在,在提交註冊表之後,如何獲取已編寫名稱的id的數組,並將它提交給usr_table的「friends」字段? 2.我只需要書面姓名和全名。我不需要價值。我可以如何從jquery代碼中刪除它? 對不起我的英文不好 我的代碼:幫助!用戶註冊問題!
HTML
<form action="index.php" method="post">
<input class="std" type="text" name="friends" id="friends"/>
<input type="submit" name="submit">
</form>
jQuery的
$(function() {
function split(val) {
return val.split(/,\s*/);
}
function extractLast(term) {
return split(term ).pop();
}
$("#friends")
// don't navigate away from the field on tab when selecting an item
.bind("keydown", function(event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).data("autocomplete").menu.active) {
event.preventDefault();
}
})
.autocomplete({
source: function(request, response) {
$.getJSON("search.php", {
term: extractLast(request.term)
}, response);
},
search: function() {
// custom minLength
var term = extractLast(this.value);
if (term.length < 2) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function(event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.item.value);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(", ");
return false;
}
});
});
的search.php
$db = new mysqli('localhost', 'user' ,'pass', 'db') or die(mysqli_errno());
$q = strtolower($_GET["term"]);
if (!$q) return;
$query = $db->query("select id, fullname from usr_table where fullname like '$q%'") or die(mysqli_errno());
$results = array();
while ($row = mysqli_fetch_array($query)) {$results[] = array ("id" => $row[0] , "label" => $row[1], "value" => $row[1]);}
echo json_encode($results);
註冊表單中帶有自動完成腳本的朋友文本框(支持來自userstable「fullname」列的多個詞完成)。現在問題1:如何從文本輸入字段獲取名稱數組,並用php查找這些姓名的id?問題2:如果註冊表中的新用戶id未知,註冊表將如何將其ID放到第二個(朋友)表中? – 2011-06-16 21:05:50
我不明白你的意思是由文本輸入數組。請給出一個用戶將進入文本框的例子。 – 2011-06-16 21:20:50
例如,如果訪客寫入「胡」腳本從用戶表中找到「Sid Hussain」,則完成它,添加逗號,用戶可以添加儘可能多的他想要的用戶名。每次腳本工作。我想要得到這個用逗號分隔的用戶名到php數組,搜索這個用戶名一個一個的id並添加到好友表中。但是第二次懷孕發生?但是如果註冊表中的新用戶身份不明,註冊表將如何將其ID添加到第二個(朋友)表中? – 2011-06-16 21:29:05