De ma demande, j'envoie une liste d'utilisateurs que je veux rechercher le groupe auquel ils sont abonnés:code php pour rechercher plusieurs mots dans varchar
$selectedUsers = ["John", "Carlos", "Anna", "Julia"]
J'ai dans ma base de données de différents groupes avec de nombreux les utilisateurs chacun d'entre eux:
$football = ["**John**" ,"**Carlos**" ,"Daniel" ,"Rob" ,"Frank" ,"Bob"]
$cooking = ["**John**" , "**Anna**" , "**Julia**" , "Claudia" , "Rob" , "Adriana"]
$startups = ["**John**", "**Carlos**", "**Anna**", "**Julia**", "Rob", "Adriana"]
la sortie Je veux avoir la liste est triée des groupes avec le montant des selectedUsers en elle:
$returnArray[0] = $startups //4 users inside group
$returnArray[1] = $cooking //3 users inside group
$returnArray[2] = $football //2 users inside group
Voici le code que j'ai jusqu'à présent, mais la boucle j'utilise est basé sur le group_id que j'ai emmagasinés et je veux changer cela:
<?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);
?>
est-il un autre moyen d'avoir un meilleur/moyen plus efficace de rechercher dans ma base de données? Apprécié!
Je ne trouve aucun code lié à la base de données. – arkascha
Comment les stockez-vous dans une base de données? Si une base de données correctement normalisée, il serait probablement plus facile de le faire en SQL avant tout traitement en php – Kickstart
si vous avez une base de données, s'il vous plaît 'describe'. Ainsi, la relation entre utilisateurs et groupes (idéalement plusieurs à plusieurs) nous aidera à exposer une meilleure solution. – marmeladze