PHP, MySql: номер места не назначен должным образом

0

Я сделал код для автоматического назначения места для моего сайта бронирования авиабилетов.
Сначала, когда я бронирую 4 человека на конкретную дату, он работает хорошо, т.е. он назначает 1А, 1В, 1С, 1Д для пассажиров.
Но в следующий раз, когда я заказываю для 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>";
      }
}
?>

Пожалуйста, помогите и исправьте ошибку, поскольку мне нужно отправить проект в школу очень скоро.

  • 0
    Пожалуйста, сделайте отступ в своем коде правильно, чтобы его было легче читать и следить за процессом. Кроме того, когда вы публикуете кучу кода, с которым у вас возникают проблемы, вы должны включать в себя структуру таблицы, пример данных, комментарии о том, что предполагается делать различными частями, а также о том, какую отладку вы сделали, и результат этого. В основном сузить вопрос.
Теги:

1 ответ

0
Лучший ответ

Неверный ваш выбор для проверки мест.

Условия для проверки положения 3-го и 4-го сидений отделены от остальных условий условным условным обозначением верхнего уровня

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')
  • 0
    Спасибо за исправление кода. Я очень благодарен за вашу помощь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню