Условия: как минимум 1, как максимум 3 строки, где userid=$_SESSION['id']
; наличие для этих строк в столбцах active
значений 1, 2 или 3 (обязательно все три, без повторений).
Задача: узнать, имеется ли в БД для этих строк значения active
= 1, 2 или 3. Если какое-либо из значений отсутствует, записать их по порядку (сортировка -
значения столбца level
по убыванию), затем редирект. Если все значения присутствуют, сделать новую проверку по level
и если порядок строк при сортировке по lvl
изменился, перезаписать значения (1, 2, 3).
Пробный код:
$check_main=$mysqli->query("SELECT `active` FROM `characters` WHERE `userid`='".$_SESSION['id']."' AND (`active`='1' OR `active`='2' OR `active`='3')");
// пытаемся узнать, есть ли значения 1, 2 или 3
$check_main=$check_main->fetch_assoc();
if($check_main_second==false) {
// если отсутствуют, внесение
$select_char=$mysqli->query("SELECT `level` FROM `characters` WHERE `userid`='".$_SESSION['id']."' ORDER BY `level` DESC LIMIT 1,1");
$select_char->fetch_assoc();
$mysqli->query("UPDATE `characters` SET `active`='1' WHERE `userid`='".$_SESSION['id']."' AND `level`='".$select_char."'");
$select_char=$mysqli->query("SELECT `level` FROM `characters` WHERE `userid`='".$_SESSION['id']."' ORDER BY `level` DESC LIMIT 2,2");
$select_char->fetch_assoc();
$mysqli->query("UPDATE `characters` SET `active`='2' WHERE `userid`='".$_SESSION['id']."' AND `level`='".$select_char."'");
$select_char=$mysqli->query("SELECT `level` FROM `characters` WHERE `userid`='".$_SESSION['id']."' ORDER BY `level` DESC LIMIT 3,3");
$select_char->fetch_assoc();
$mysqli->query("UPDATE `characters` SET `active`='3' WHERE `userid`='".$_SESSION['id']."' AND `level`='".$select_char."'");
exit(redirect("../URL"));
}
Страшный код, при котором невозможна конвертация в строку, а также отсутствует проверка при наличии значений. Много условий, как это выполнить ума не приложу.
наличие ... в столбцах active значений 1, 2 или 3 (обязательно все три, без повторений)
Если список возможных значений active исчерпывается этими значениями, то
HAVING COUNT(active) = 3
AND SUM(DISTINCT active) = 6
Если нет, то второе условие усложнится до
AND SUM(DISTINCT CASE WHEN active IN (1,2,3) THEN active END) = 6
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
подскажите делаю парсерто есть беру ключи из файла, но бывает несколько тысяч ключей и очень тормозит
Нужно что-бы куки отправлялись таким образом А не так
ЗдравствуйтеНемного не могу разобраться с рекурсией, а именно как его построить
В API указан лимит, на вывод значений, если я ставлю лимит 999999 то просто белый экран, если не более 1000 такое происходит, ошибок никаких нетуУбираю...