Я Хава сделать функцию бронирования класса
Я хочу повторить заявление, если пользователь забронирует класс, который уже забронирован.
Я проверяю его, чтобы убедиться, что оператор ifelse работает, но SQL INSERT внутри ELSE {} запускается один раз после IF {}
Я не знаю почему и не могу найти в чем ошибка
$class=$_POST['class'];
$time=$_POST['time'];
$date=$_POST['date'];
$type=$_SESSION['type'];
$query=mysql_query("SELECT * FROM classroom");
while($row=mysql_fetch_array($query))
{
if ($row['name']==$class && $row['date']==$date && $row['time']==$time)
{
echo "The class at this time already been booked.";
}
else
{
mysql_query("INSERT INTO classroom(name,date,time,bookedby) VALUES('$class','$date','$time','$type')");
if ($_SESSION['username']=='admin') {
mysql_query("UPDATE classroom SET status='yes' WHERE name='$class' AND date='$date' AND time='$time'");
}
echo "booking submitted";
break;
}
}
Используемая вами логика неверна. Попробуйте этот код вместо этого.
$class=$_POST['class'];
$time=$_POST['time'];
$date=$_POST['date'];
$type=$_SESSION['type'];
$query=mysql_query("SELECT * FROM classroom where name='$class' && date='$date' && time='$time'");
if(mysql_num_rows($query)>0)
{
echo "The class at this time already been booked.";
}
else
{
mysql_query("INSERT INTO classroom(name,date,time,bookedby) VALUES('$class','$date','$time','$type')");
if ($_SESSION['username']=='admin') {
mysql_query("UPDATE classroom SET status='yes' WHERE name='$class' AND date='$date' AND time='$time'");
}
echo "booking submitted";
break;}
Я только что изменил твой код. Лучше изучить использование mysqli / pdo и заменить использование mysql, поскольку оно устарело.
Также лучше изменить имя столбца date на другое, так как date является предопределенным ключевым словом mysql. Несмотря на то, что он не включен в зарезервированные слова, и MySQL разрешает использование «date», я считаю, что не следует использовать его, так как это может привести к путанице, а также к некоторым конфликтам, в некоторых случаях возвращая ошибку.
Других решений пока нет …