PHP、MySQL : Seat Number Not Assigning Properly

标签 php mysql

我已经为我的航空公司预订网站创建了自动分配座位的代码。
起初,当我在特定日期为 4 人预订时,效果很好,即为乘客分配 1A、1B、1C、1D。
但下次,当我为 4 人预订与之前不同的日期时,它分配不正确,即分配了 1A、1B、2A、2B,而不是 1A、1B、1C、1D。

这是我正在使用的代码片段。

<?php
$seat="";  
$s="";
function f1() 
{
  require 'connection.php'; 
$from=$_SESSION['fro']; 
  $to=$_SESSION['to']; 
  $date1=$_SESSION['dep']; 
  $air=$_SESSION['airl']; 
  $count=1; 
$n=array("A", "B", "C", "D");

while($count<=5)    
      {

  for($x=0; $x < count($n); $x++)
    {
  global $seat;
      $check="
SELECT * 
  FROM passenger_records 
 WHERE pas_depdate='$date1' 
   AND pas_air='$air' 
   AND pas_frmcity='$from' 
   AND pas_tocity='$to' 
   AND (pas1_seat='$seat' OR pas2_seat='$seat') 
    OR (pas3_seat='$seat' OR pas4_seat='$seat')";
      $result=$conn->query($check);
        if($result->num_rows > 0)
    {
     $seat=$count.$n[$x];
    }
      }           
$check="
SELECT * 
  FROM passenger_records 
 WHERE pas_depdate='$date1' 
   AND pas_air='$air' 
   AND pas_frmcity='$from' 
   AND pas_tocity='$to' 
   AND (pas1_seat='$seat' OR pas2_seat='$seat') 
   OR (pas3_seat='$seat' OR pas4_seat='$seat')";
            $result=$conn->query($check);
           if($result->num_rows > 0)
            {
             $count++;
            }
           else
             break;
    }
    if($count==6)
    {
      $seat="";
    }
return $seat;
}
    if($cls=="First Class")
    {
       if(!$pas1=="")
          {

       $seat1=f1();
       echo $seat1."<BR>";
   $sq = "UPDATE `passenger_records` SET `pas1_seat` = '{$seat1}' WHERE `passenger_records`.`pas_id` = '$id'";
   $result=$conn->query($sq);

      }
   if(!$pas2=="")
      {

       $seat2=f1();
   $sq = "UPDATE passenger_records SET pas2_seat = '{$seat2}' WHERE passenger_records.pas_id = '$id'";
   $result=$conn->query($sq);
   echo $seat2."<BR>";
      }
   if(!$pas3=="")
      {

       $seat3=f1();
   $sq = "UPDATE passenger_records SET pas3_seat = '{$seat3}' WHERE passenger_records.pas_id = '$id'";
   $result=$conn->query($sq);
   echo $seat3."<BR>";
      }
   if(!$pas4=="")
      {
       $seat4=f1();
   $sq = "UPDATE `passenger_records` SET `pas4_seat` = '{$seat4}' WHERE `passenger_records`.`pas_id` = '$id'";
   $result=$conn->query($sq);
   echo $seat4."<BR>";
      }
}
?>

请帮助并修复错误,因为我非常需要将项目提交给学校 很快。

最佳答案

您用于检查座位的 select 语句不正确。

测试第三和第四座位位置的条件是 通过上层“OR”条件与其余条件分隔

SELECT * 
FROM passenger_records 
WHERE pas_depdate='$date1' 
AND pas_air='$air' 
AND pas_frmcity='$from' 
AND pas_tocity='$to' 
AND (pas1_seat='$seat' OR pas2_seat='$seat') 
OR (pas3_seat='$seat' OR pas4_seat='$seat')

替换为以下格式的查询

SELECT * 
FROM passenger_records 
WHERE pas_depdate='$date1' 
AND pas_air='$air' 
AND pas_frmcity='$from' 
AND pas_tocity='$to' 
AND (pas1_seat='$seat' OR pas2_seat='$seat' OR pas3_seat='$seat' OR pas4_seat='$seat')

关于PHP、MySQL : Seat Number Not Assigning Properly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50418952/

相关文章:

php - MYSQL 连接查询不显示特定条件不起作用?

javascript - codeigniter ajax 中的 gzip 压缩不起作用

php - 如何在 Bisna 中正确加载 DoctrineExtensions?

php - 如何使用PHP/MySQL限制用户在一个月内只能上传三张图片

php - 根据表单包含的输入数量自动执行 VALUE

mysql - 获取列与记录的总和

php - Laravel 编辑本地化

php - Laravel 注销,添加一个监听器

php - MySQL 查询结果的版本控制

MySQL 列;在结果集中分成两部分