Когда я передаю массив в качестве переменной сеанса и вызываю его в отдельном файле php, отображается только последний элемент массива - PullRequest
0 голосов
/ 07 апреля 2020

Я создал тег div, который содержит информацию о билетах (информация берется из базы данных). Div также содержит кнопку выбора, которая позволяет пользователю выбрать билет, который он хочет. Это должно перенаправить их на отдельную страницу файла php, которая содержит всю информацию о выбранном ими билете (страница подтверждения). Однако, когда пользователь выбирает билет, который он желает, переменная сеанса php, в которой я хранил информацию, отображает только последний элемент массива. Как я могу это изменить?

Код SearchTicket:

<?php
include "header.php";
include_once "includes/db.inc.php";
session_start();

?>

<!DOCTYPE html>
<head>
<link rel="stylesheet" href="styles/index.css?<?php echo time(); ?>">
</head>
<body>
<?php
$origin = $_POST['Origin'];
$destination = $_POST['Destination'];
$Departuredate = $_POST['DepartureDate'];
$AdultPassengers = $_POST['adultpassengers'];
$ChildPassengers = $_POST['childpassengers'];
$query = "SELECT * FROM `tickets` WHERE origin='$origin' AND destination='$destination' AND departure_date='$Departuredate' ";
$result = mysqli_query($conn, $query);
$resultCheck = mysqli_num_rows($result);
?>

<div id="SearchEnquiry">
<?php echo $origin . '&nbsp;'; echo '-&nbsp;' . $destination . '&nbsp;:&nbsp;'; echo $Departuredate . '&nbsp;:&nbsp;'; echo 'Adult:' .  $AdultPassengers . '&nbsp;:&nbsp;'; echo 'Child:' .  $ChildPassengers; ?>
    </div>
    <div id="FilterButtons">
    <button id="Cheapest">Cheapest</button>
    <button id="Fastest">Fastest</button>
    <button id="Best">Best</button>
    </div>

    <?php

    if($resultCheck > 0)
    {
    while ($row = mysqli_fetch_array($result))
    {
        $adultprice = $row['adult_price'] * $AdultPassengers;
        $childprice = $row['child_price'] * $ChildPassengers;
        $totalprice = $adultprice + $childprice;
        $departuretime = $row['departure_time'];
        $arrivetime = $row['arrival_time'];




     ?> 


    <form method="post" action="Confirmation.php" >
    <div id="SearchResult"> 
    <text id="Departtext">Depart at:</text>
    <text> <?php echo $departuretime ?> </text>
    <text id="ArriveText">Arrive at:</text>
    <text id="Arrival"> <?php echo $arrivetime?> </text>
    <text>Total price: </text>
    <text> <?php echo $totalprice ?> </text> 
    <input type="submit" name="addtocart" id="Cart" value="Select"></input>

    <?php 
    $_SESSION['departuretime']=$departuretime; 
    $_SESSION['arrivetime']=$arrivaltime;
    $_SESSION['price']=$totalprice;
    ?>

    </div>

     <?php

    }
}
    ?>
    </body>
    </html>

Подтверждение. php Код:

<?php
include "header.php";
include_once "includes/db.inc.php";
session_start();
?>

<html>
<head>
</head>
<body>
<?php
echo $_SESSION['departuretime'];
echo $_SESSION['arrivetime'];
echo $_SESSION['price'];
?>
</body>
</html>

1 Ответ

0 голосов
/ 07 апреля 2020

Вы перезаписываете свою переменную Session в l oop снова и снова.

Создайте ее так, чтобы каждый раз в l oop значения присваивались как дочерний массив.

$_SESSION['departuretime'][] = $departuretime; 
$_SESSION['arrivetime'][] = $arrivaltime;
$_SESSION['price'][] = $totalprice;

И используйте print_r(), чтобы напечатать его:

<?php
  print_r($_SESSION['departuretime']);
  print_r($_SESSION['arrivetime']);
  print_r($_SESSION['price']);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...