Я сделал код для автоматического назначения места для моего сайта бронирования авиабилетов.
Сначала, когда я бронирую 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>";
}
}
?>
Пожалуйста, помогите и исправьте ошибку, поскольку мне нужно отправить проект в школу очень скоро.
Неверный ваш выбор для проверки мест.
Условия для проверки положения 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')