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