PHP if statemet检查可用位置

PHP if statemet检查可用位置,php,Php,我正在尝试检查是否有可以预订活动的地方,我正在使用if语句进行预订。If语句检查bookedPlaces是否少于可用的总位置数,以及是否有可用的位置,它应该允许在activityEvent表中预订和插入clientEvent并更新bookingPlaces。如果没有空位,则应全部预订。它总是暗示它已经被预订满了。我也不知道如何在一个问题中插入和更新 <?php session_start(); require("connection.php"); $con=mysqli_connect

我正在尝试检查是否有可以预订活动的地方,我正在使用if语句进行预订。If语句检查bookedPlaces是否少于可用的总位置数,以及是否有可用的位置,它应该允许在activityEvent表中预订和插入clientEvent并更新bookingPlaces。如果没有空位,则应全部预订。它总是暗示它已经被预订满了。我也不知道如何在一个问题中插入和更新

<?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));
}
?>
我给你一个选项:
我假设bookedPlaces和noOfPlaces中的某些行为空,因此您必须对它们进行比较。
您可以创建如下计数器函数:

function counter($row){
$mysqli = new mysqli("localhost", "root", "", "first");
$res = $mysqli->query("SELECT COUNT({$row}) FROM records WHERE {$row} !='' ");  // !=0 or !=[what's your no value]
$row = $res->fetch_row();
return $row[0];
}
现在你可以使用

if(counter('bookedPlaces') < counter('noOfPlacest') {
if(柜台('bookedsplaces')

在这个选项中,保持fetch\u assoc查询的原样。

看起来整个if-else块
if($booked<$noofPlaces)
循环时在
之外。因此,
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 ";
    }
}
while($row=$result->fetch_assoc()){
$booked=$row['bookedPlaces'];
$noopplaces=$row['noopplaces'];
如果($booked<$noofPlaces){
回声“您已预订”;
$sql=“插入到clientEvent(clientID,activityEventID)值(“$clientID”,“$activityEventID”)”;
$sql=“update activityEvent set AvailablePlaces=($available-1),其中activityEventID=$activityEventID”;
回显“$sql”;
}
否则{
echo“预订满”;
}
}

我认为您的程序逻辑有问题。首先,如果每次$booked都被覆盖,为什么要循环返回结果?您希望$booked变量的内容是什么?接下来使用var_dump和dump$booked和$noofPlaces并用结果更新您的问题。感谢您的帮助,如果我这样做,它不会给出任何错误d它做了我想做的事情,但它不插入或更新数据库。它只检查并告诉我它是否已预订。你知道我如何修复它吗?@Nikos