從我的申請,我送的用戶列表,我想搜索他們訂閱組:我有我的數據庫中許多不同的團體與許多不同的PHP代碼搜索多個單詞VARCHAR
$selectedUsers = ["John", "Carlos", "Anna", "Julia"]
用戶 他們每個人:
$football = ["**John**" ,"**Carlos**" ,"Daniel" ,"Rob" ,"Frank" ,"Bob"]
$cooking = ["**John**" , "**Anna**" , "**Julia**" , "Claudia" , "Rob" , "Adriana"]
$startups = ["**John**", "**Carlos**", "**Anna**", "**Julia**", "Rob", "Adriana"]
我想有輸出與selectedUsers量集團在它的排序列表:
$returnArray[0] = $startups //4 users inside group
$returnArray[1] = $cooking //3 users inside group
$returnArray[2] = $football //2 users inside group
這裏是我到目前爲止的代碼,但我使用的循環是基於我存儲在GROUP_ID,我想改變這種狀況:
<?php
//fetch groups with users
$returnValue = array();
$groupUsersNumber = 0;
$selectedUsers = htmlentities($_REQUEST["selectedUsers"]);
$lastGroupID = htmlentities($_REQUEST["lastGroupID"]); //remove
if($lastGroupID == ""){
$lastGroupID = getLastGroupID();
$lastGroupID = $lastGroupID + 1;
}
if($selectedUsers == ""){
//return all groups ordered by ID desc
$group = getGroupWithID($lastGroupID);
} else{
$usersArray = explode(', ', $selectedUsers);
$foundGroup = false;
while($foundGroup == false){
$group = getGroupWithID($lastGroupID);
$fetchedGroupUsers = explode(', ', $group["users"]);
for($i = 0; $i < count($usersArray); $i++){
if(in_array($usersArray[$i], $fetchedGroupUsers)){
$foundGroup = true;
break;
} else{
$lastGroupID = $group["group_id"];
}
}
}
}
for($i = 0; $i < count($usersArray); $i++){
if(in_array($usersArray[$i], $fetchedGroupUsers)){
$groupUsersNumber = $groupUsersNumber + 1;
}
}
if(empty($group))
{
$returnValue["status"]="403";
$returnValue["message"]="No more groups with that users.";
echo json_encode($returnValue);
return;
} else{
$returnValue=$group;
$returnValue["groupUsersNumber"]=$groupUsersNumber;
}
echo json_encode($returnValue);
?>
是否有任何其他的方式有更好/更有效的方式來搜索我的數據庫?不勝感激!
我沒有發現任何與數據庫相關的代碼。 – arkascha
你如何將它們存儲在數據庫中?如果一個正確的規範化數據庫,那麼在php – Kickstart
中進行任何處理之前,如果你有一個數據庫,那麼在SQL中執行此操作可能會更容易,請「描述」它。因此,用戶和組之間的關係(理想情況下多對多)將幫助我們揭示更好的解決方案。 – marmeladze