Я пытаюсь проверить, есть ли доступные места для бронирования деятельности, и я использую инструкцию if для этого. Если инструкция проверяет, если зарезервированныеМатериалы меньше общего количества доступных мест, и если есть доступные места, это должно позволять заказывать и вставлять в clientEvent и обновлять места бронирования в таблице activityEvent. Если нет доступных мест, он должен полностью откликнуться на Fully Booked. Это всегда эхо, что он полностью забронирован. Я не уверен, как вставлять и обновлять в одном quesry.
<?php
session_start();
require("connection.php");
$con=mysqli_connect("$mysql_host","$mysql_user","$mysql_password","$mysql_database");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql ="select bookedPlaces, noOfPlaces from activityEvent";
$result = mysqli_query($con,$sql);
$clientID=$_SESSION['clientID'];
$activityEventID =$_SESSION['activityEventID'];
while($row = $result->fetch_assoc())
{
$booked =$row['bookedPlaces'];
$noofPlaces = $row['noOfPlaces'];
}
if($booked < $noofPlaces)
{
echo "You have booked ";
$sql="Insert into clientEvent(clientID, activityEventID) Values('$clientID','$activityEventID')";
$sql= "update activityEvent set AvailablePlaces = ($available -1) where activityEventID = $activityEventID";
echo "$sql";
}
else
{
echo "Fully booked ";
}
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
?>
Я даю вам вариант: я полагаю, что некоторые строки в файлах reservedPlaces и noOfPlaces имеют значение NULL, поэтому вы должны их сравнить. Вы можете создать функцию счетчика следующим образом:
function counter($row){
$mysqli = new mysqli("localhost", "root", "", "first");
$res = $mysqli->query("SELECT COUNT({$row}) FROM records WHERE {$row} !='' "); // !=0 or !=[what your no value]
$row = $res->fetch_row();
return $row[0];
}
Теперь вы можете использовать
if(counter('bookedPlaces') < counter('noOfPlacest') {
В этом случае оставьте свой запрос fetch_assoc таким, какой он есть.
Похоже, что весь, если-иначе блок, if($booked < $noofPlaces)
находится за пределами вашего в while
цикла. Таким образом, оператор if
вычисляет неожиданные значения.
Скорректированный код должен выглядеть так.
while ($row = $result->fetch_assoc()) {
$booked = $row['bookedPlaces'];
$noofPlaces = $row['noOfPlaces'];
if ($booked < $noofPlaces) {
echo "You have booked ";
$sql = "Insert into clientEvent(clientID, activityEventID) Values('$clientID','$activityEventID')";
$sql = "update activityEvent set AvailablePlaces = ($available -1) where activityEventID = $activityEventID";
echo "$sql";
}
else {
echo "Fully booked ";
}
}