В основном я пытаюсь ограничить то, что может видеть пользователь, зарегистрированный в системе, в зависимости от того, каков его рейтинг. Содержимое - несколько строк, все с разными требованиями к рангам. Если у пользователя нет требуемого ранга, он не сможет просмотреть эту строку. Однако моя проблема заключается в том, что если одна строка имеет более высокий ранг, чем любые строки ниже нее, и у пользователя нет этого ранга, все строки ниже также не будут видны.Ограничить содержание по рангу пользователей
public function Categories() {
global $Template, $CatArray;
$CatArray = array();
$PermissionTable = array();
$QueryCat = $this->mysqli->query("SELECT * FROM categories ORDER BY id ASC");
while($FetchCat = $QueryCat->fetch_array()) {
$PermissionTable["category"] = array("id" => $FetchCat["id"]); // store category ID as an id sub-array
$data = explode(",", $FetchCat["ranks"]); // the ranks row in the database contains all ranks that can see this category, so here we split them up.
foreach($data as $number) {
$PermissionTable["category"] += array(
"rank" => $data // apply rank requirements in a sub-array again
);
}
if(in_array($Template["user"]["user_group"], $PermissionTable["category"]["rank"])) { // here, if the users rank is in the rank sub-array, they will be able to see it
$CatArray[] = $FetchCat;
} else { // otherwise display nothing
$CatArray[] = null;
}
}
$Template["CatArray"] = $CatArray;
return $CatArray;
}
UPDATE: Это то, что я имею в виду
Можете ли вы не просто добавьте текущий ранг пользователя к запросу, например 'WHERE rowRank <= userRank' – RiggsFolly
Нет, потому что таблица рангов выглядит как 1,2,3,4,5 и т. д., поэтому я не могу использовать <= opreator (его ограничение не ограничивается минимальным ранг, но какие ранги он написал в таблице) –
Пожалуйста, покажите нам свою структуру базы данных и реальный пример того, что вам нужно сделать. Например, пользователь X имеет 1,4,8 разряда, ему нужно видеть категории a, b и c. –