Как перенаправить с помощью заголовка и генерировать PDF на сервер только после запроса UPDATE в PHP - PullRequest
0 голосов
/ 25 июня 2019

У меня есть страница со списком клиентов. Когда я открываю модальный режим, появляется эта опция для назначения драйвера, и есть перенаправление заголовка, которое работает правильно с сообщением об успехе. Все, что я хочу сделать, - это когда мы назначаем драйвер, драйвер показывает сообщение, а также загружает файл FPDF на сервер, чтобы я мог отправить его по электронной почте.

Я пытался добавить код PDF в IF (isset ($ result)) , но когда я запускаю его, он загружает PDF или отображает его, но так как перенаправление не работает, поэтому имя драйвера не изменяется (перед обновлением страницы), и сообщение об успехе не отображается

Мой код без PDF-кода:

<?php
require_once '../connection/connection.php';

header("Access-Control-Allow-Origin: *");

if (isset($_POST['assign-driver'])) {

    if (empty($_POST['assignDriver'])) {
        header("location:booking.php?failDriverAssign= Please select the driver!");
    } 

    else { 
        $booking_id = $_POST['booking_id'];
        $assignDriver = $_POST['assignDriver'];

        $query = "UPDATE add_booking SET assigned_driver='$assignDriver' WHERE Booking_ID=$booking_id";
        $result = mysqli_query($conn, $query);

        if (isset($result)) {
            header("location:booking.php?passDriverAssign= Driver has been assigned. Booking Confirmation has been sent to Driver and Customer!");
        } 

        else {
            header("location:booking.php?failDriverAssign= Something went wrong. Check back in few minutes!");
        }
    }
}

Мой код с кодом PDF:

<?php
require_once '../connection/connection.php';
header("Access-Control-Allow-Origin: *");
require ('FPDF/fpdf.php');

//A4 width: 219mm
//default margin: 10mm each side
//writable horizontal: 219-(10*2)=189mm

$sql = "SELECT * FROM add_booking INNER JOIN customers ON add_booking.customer_ID = customers.ID ORDER BY Booking_ID DESC";
$count = 1;

//Values I want to show in PDF
//Values I want to show in PDF
foreach ($conn->query($sql) as $row) {
    $updatecount = $count++;
    $first_name = $row[first_name];
    $last_name = $row[last_name];
    $email = $row[email];
}
//Values I want to show in PDF
//Values I want to show in PDF

if (isset($_POST['assign-driver'])) {

    if (empty($_POST['assignDriver'])) {
        header("location:booking.php?failDriverAssign= Please select the driver!");
    } 

    else { 
        $booking_id = $_POST['booking_id'];
        $assignDriver = $_POST['assignDriver'];

        $query = "UPDATE add_booking SET assigned_driver='$assignDriver' WHERE Booking_ID=$booking_id";
        $result = mysqli_query($conn, $query);

        if (isset($result)) {

            // PDF CODE

                $pdf = new FPDF('P', 'mm', 'A4');
                $pdf->AddPage();

                //set font to arial, bold, 14pt
                $pdf->SetFont('Arial', 'B', 14);

                //Cell (width, height, text, border, end line, {align})

                $pdf->Cell (130, 5, '', 1, 0);
                $pdf->Cell (70, 5, '', 1, 0);


                $pdf->Output();

            // PDF CODE

            header("location:booking.php?passDriverAssign= Driver has been assigned. Booking Confirmation has been sent to Driver and Customer!");
        } 

        else {
            header("location:booking.php?failDriverAssign= Something went wrong. Check back in few minutes!");
        }
    }
}

Когда пользователь назначает драйвер, он обновляет веб-страницу и показывает сообщение об успешном завершении, тогда PDF-файл должен быть загружен на сервер без вывода сообщений.

...