Adnan Chowdhury Ответов: 1

Ограничьте количество людей, присоединяющихся к определенной группе


Я пытаюсь создать регистрационную форму в PHP с помощью базы данных MYsqli, одна из реализаций, которую я пытаюсь сделать, - это возможность для пользователя выбрать группу при регистрации, в выпадающем списке будет доступно 10 групп, и только 3 человека могут присоединиться к группе, если более 3 человек попытаются присоединиться к группе, будет выдана ошибка, останавливающая их присоединение к группе, до сих пор я мог ограничивать только одну группу за раз.

Что я уже пробовал:

<?php

// Enable error reporting for mysqli and connect to MySQL
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = new mysqli('connection', 'name', 'password', 'databasename');
$link->set_charset('utf8mb4'); // Mandatory charset!

$groupnumber = 8; // <-- this is your input value

// Prepare -> bind -> execute -> get result
$stmt = $link->prepare('SELECT COUNT(*) FROM student WHERE groupnumber=?');
$stmt->bind_param('s', $groupnumber);
$stmt->execute();
$result = $stmt->get_result();
$numberOfRows = $result->fetch_row()[0]; // COUNT(*) will be in the first row in the first cell

// Rest of your logic follows
if ($numberOfRows < 3) {
    echo 'you have successfully joined';
} else {

    'you cannot join this group';
}

phil.o

Почему бы вам просто не показать те группы, которые не заполнены в первую очередь? Зачем давать пользователю возможность выбрать группу, которая уже заполнена? Я был бы раздражен, если бы мне представили такой интерфейс.

Adnan Chowdhury

как бы или посмотреть на это, это тоже был вариант, но я не мог его решить

phil.o

Ну, вы, должно быть, используете запрос для заполнения combobox, не так ли? Я полагаю, что вы не жестко кодируете группы. Тогда просто представь WHERE пункт, исключающий те группы, которые уже заполнены.

Adnan Chowdhury

Выберите * из списка студентов
Где группа> 3;

неужели я сделаю что-то подобное? как бы я это сделал, извините, я очень новичок в программировании

phil.o

Извините, у меня нет обязательной схемы базы данных, чтобы выдавать какой-либо соответствующий sql-код.
Пожалуйста, используйте Улучшить вопрос виджет, который появляется при наведении курсора на ваш вопрос, и предоставляет по крайней мере соответствующие части студенческих и групповых таблиц.

1 Ответов

Рейтинг:
2

CHill60

Если вы предоставите свои структуры таблиц, мы можем быть более конкретными, помогая вам, но в то же время...

Чтобы получить список отображаемых групп, сделайте что-то вроде этого

select groupnumber from students group by groupnumber having count(*) < 3
Вот некоторая справочная информация: SQL HAVING with GROUP BY | примеры[^]