Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中提交表单时遇到的问题_Php_Forms_Post - Fatal编程技术网

在php中提交表单时遇到的问题

在php中提交表单时遇到的问题,php,forms,post,Php,Forms,Post,我正在为大学做一个数据库项目,我在这里遇到了一个问题 <?php //error_reporting(); require 'core/init.php'; require 'db/connect.php'; require 'functions/security.php'; ?> <html> <head> <title>Make a reservation</title> <meta

我正在为大学做一个数据库项目,我在这里遇到了一个问题

<?php
//error_reporting();
require 'core/init.php';
require 'db/connect.php';
require 'functions/security.php';
?>

<html>
    <head>
        <title>Make a reservation</title>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="css/common.css">
    </head>
    <body>

        <?php require 'parts/header.php'; ?>
        <hr>

        <?php
        $query = "SELECT * FROM service WHERE id=" . $_POST['ids'];         
        if ($result = $db->query($query)) {
            if ($result->num_rows) {

                $service_info = $result->fetch_object();
                $result->close();
            }
        }


        $query = "SELECT name FROM tour WHERE id =" . $service_info->idtour;
        if ($result = $db->query($query)) {
            if ($result->num_rows) {

                $tour_name = $result->fetch_object();
                $result->close();
            }
        }

        $query = "SELECT SUM(nrseats) AS res_seats FROM reservation_service WHERE idservice =" . $service_info->id;
        $nr_reservations_info = $db->query($query);
        $nr_reservations = $nr_reservations_info->fetch_row();
        $nr_reservations_info->close();
        $count = $service_info->nrseats - $nr_reservations[0];
        if($count === 0){
                echo "<script>alert('There are no more places available for this tour. You are being redirected for the main page!')</script>";
                echo "<script>window.open('index.php','_self')</script>";
            }
        else{
            $count = $service_info->nrseats;
        }
        ?> 

        <form action="" method="POST">
            <div class="registering">
                <table>
                    <tbody>    
                        <tr>
                            <td>
                                <label for="tname">Related tour</label>
                            </td>
                            <td>
                                <label for="splace"><br>Service name</label>
                            </td><p><br></p>
                    </tr>
                    <tr>
                        <td>
                            <input type="text" readonly="" name="tour" id="tour" required="" autofocus="" value="<?php echo $tour_name->name ?>">
                        </td>
                        <td>
                            <input type="text" readonly="" name="name" id="name" required="" value="<?php echo $service_info->name ?>">
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <label for="sprice"><br>Price (€)</label>
                        </td>
                        <td>
                            <label for="sdescription"><br>Description</label>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input type="number" name="price" id="price" readonly="" required="" value="<?php echo $service_info->price ?>">
                        </td>
                        <td>
                            <input type="text" name="description" id="description" required="" readonly="" value="<?php echo $service_info->description ?>">
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <label for="sseats"><br>Seats left</label>
                        </td>
                        <td>
                            <label for="snreservations"><br>Number of reservations (people)</label>
                        </td>
                    </tr>
                    </tr>
                    <tr>
                        <td>
                            <input type="number" name="nrseats" id="nrseats" required="" value="<?php echo $count ?>" readonly="">
                        </td>
                        <td>
                            <input type="number" name="nrreservations" id="nrreservations" required="" value="1">
                        </td>
                        <td>
                            <input type="hidden" name="ids"  required="" value="<?php $service_info->id ?>">
                        </td>
                    </tr>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <label for="next"><br></label>
                            <input type="submit" value="Next">
                        </td>
                    </tr>
                    </tbody>
                </table>            
            </div>
        </form>
    </body>
</html>

<?php

if (!empty($_POST)) {

    if (isset($_POST['name'], $_POST['ids'], $_POST['tour'], $_POST['price'], $_POST['description'], $_POST['nrseats'], $_POST['nrreservations'])) {

        $_POST = array_map("trim", $_POST);

        $name = $_POST['name'];
        $tour = $_POST['tour'];
        $price = $_POST['price'];
        $description = $_POST['description'];
        $nrseats = $_POST['nrseats'];
        $nrreservations = $_POST['nrreservations'];
        $ids = $_POST['ids'];

        if (!empty($name) && !empty($ids) && !empty($tour) && !empty($price) && !empty($description) && !empty($nrseats) && !empty($nrreservations)) {

            $query = "SELECT id FROM customer WHERE email='" . $_SESSION['user_email'] . "'";
            if ($result = $db->query($query)) {

                $id_user = $result->fetch_object();
                $result->close();
            }

            $query = "SELECT id FROM reservation WHERE idtour={$service_info->idtour} AND idcustomer={$id_user->id}";
            if ($result = $db->query($query)) {
                if ($result->num_rows) {

                    $id_reservation = $result->fetch_object();
                    $result->close();
                }
            }

            $query = "SELECT * FROM reservation_service WHERE idservice=" . $service_info->id;
            if ($result = $db->query($query)) {

                if ($result->num_rows) {
                    $reservation_service_exists = $result->fetch_object();

                if ($nrreservations < 1) {
                    echo "<script>alert('Your  must make a reservation for, at least, one person!')</script>";
                    echo "<script>window.open('new_reservation_service.php','_self')</script>";
                } else if ($count - $nrreservations < 0) {
                    echo "<script>alert('You can not make the reservation because there are only " . $count . " seats available in this tour!')</script>";
                    echo "<script>window.open('new_reservation_service.php','_self')</script>";
                } else if ($result->num_rows) {

                    $query = "SELECT * FROM reservation WHERE idcustomer= '" . $id_user->id . "' AND idtour= '" . $service_info->idtour . "'";
                    if ($result = $db->query($query)) {

                        if ($result->num_rows) {
                            $reservation_exists = $result->fetch_object();
                            $result->close();

                            if ($reservation_exists->idcustomer === $id_user->id) {
                                if ($reservation_exists->id === $reservation_service_exists->idreservation) {
                                    echo "<script>alert('You already made a reservation for this service. Please see your reservation panel!')</script>";
                                    echo "<script>window.open('reservations.php','_self')</script>";
                                }
                            }
                        }
                    } 
                }
            }else {

                        $query = "INSERT INTO reservation_service (idreservation, idservice, date, nrseats) VALUES (?, ?, NOW(), ?)";
                        $insert = $db->prepare($query);
                        $insert->bind_param('iii', $id_reservation->id, $service_info->id, $nrreservations);
                        $insert->execute();
                        echo "<script>alert('You successfully made a reservation! You are being redirected to your reservations page')</script>";
                        echo "<script>window.open('reservations.php','_self')</script>";
                    }
                }            
        }
    }
}
?>
我从上一页收到一个id,名为$_POST['ids'],并以这种形式将相同的值发送到一个隐藏字段中,以便它可以执行某种循环

但是,当我单击submit按钮时,我在$service_info上遇到了很多错误,页面上没有加载任何信息。我尝试过做var_dump()所有的事情,但我就是找不到这里的问题所在

<?php
//error_reporting();
require 'core/init.php';
require 'db/connect.php';
require 'functions/security.php';
?>

<html>
    <head>
        <title>Make a reservation</title>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="css/common.css">
    </head>
    <body>

        <?php require 'parts/header.php'; ?>
        <hr>

        <?php
        $query = "SELECT * FROM service WHERE id=" . $_POST['ids'];         
        if ($result = $db->query($query)) {
            if ($result->num_rows) {

                $service_info = $result->fetch_object();
                $result->close();
            }
        }


        $query = "SELECT name FROM tour WHERE id =" . $service_info->idtour;
        if ($result = $db->query($query)) {
            if ($result->num_rows) {

                $tour_name = $result->fetch_object();
                $result->close();
            }
        }

        $query = "SELECT SUM(nrseats) AS res_seats FROM reservation_service WHERE idservice =" . $service_info->id;
        $nr_reservations_info = $db->query($query);
        $nr_reservations = $nr_reservations_info->fetch_row();
        $nr_reservations_info->close();
        $count = $service_info->nrseats - $nr_reservations[0];
        if($count === 0){
                echo "<script>alert('There are no more places available for this tour. You are being redirected for the main page!')</script>";
                echo "<script>window.open('index.php','_self')</script>";
            }
        else{
            $count = $service_info->nrseats;
        }
        ?> 

        <form action="" method="POST">
            <div class="registering">
                <table>
                    <tbody>    
                        <tr>
                            <td>
                                <label for="tname">Related tour</label>
                            </td>
                            <td>
                                <label for="splace"><br>Service name</label>
                            </td><p><br></p>
                    </tr>
                    <tr>
                        <td>
                            <input type="text" readonly="" name="tour" id="tour" required="" autofocus="" value="<?php echo $tour_name->name ?>">
                        </td>
                        <td>
                            <input type="text" readonly="" name="name" id="name" required="" value="<?php echo $service_info->name ?>">
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <label for="sprice"><br>Price (€)</label>
                        </td>
                        <td>
                            <label for="sdescription"><br>Description</label>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <input type="number" name="price" id="price" readonly="" required="" value="<?php echo $service_info->price ?>">
                        </td>
                        <td>
                            <input type="text" name="description" id="description" required="" readonly="" value="<?php echo $service_info->description ?>">
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <label for="sseats"><br>Seats left</label>
                        </td>
                        <td>
                            <label for="snreservations"><br>Number of reservations (people)</label>
                        </td>
                    </tr>
                    </tr>
                    <tr>
                        <td>
                            <input type="number" name="nrseats" id="nrseats" required="" value="<?php echo $count ?>" readonly="">
                        </td>
                        <td>
                            <input type="number" name="nrreservations" id="nrreservations" required="" value="1">
                        </td>
                        <td>
                            <input type="hidden" name="ids"  required="" value="<?php $service_info->id ?>">
                        </td>
                    </tr>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <label for="next"><br></label>
                            <input type="submit" value="Next">
                        </td>
                    </tr>
                    </tbody>
                </table>            
            </div>
        </form>
    </body>
</html>

<?php

if (!empty($_POST)) {

    if (isset($_POST['name'], $_POST['ids'], $_POST['tour'], $_POST['price'], $_POST['description'], $_POST['nrseats'], $_POST['nrreservations'])) {

        $_POST = array_map("trim", $_POST);

        $name = $_POST['name'];
        $tour = $_POST['tour'];
        $price = $_POST['price'];
        $description = $_POST['description'];
        $nrseats = $_POST['nrseats'];
        $nrreservations = $_POST['nrreservations'];
        $ids = $_POST['ids'];

        if (!empty($name) && !empty($ids) && !empty($tour) && !empty($price) && !empty($description) && !empty($nrseats) && !empty($nrreservations)) {

            $query = "SELECT id FROM customer WHERE email='" . $_SESSION['user_email'] . "'";
            if ($result = $db->query($query)) {

                $id_user = $result->fetch_object();
                $result->close();
            }

            $query = "SELECT id FROM reservation WHERE idtour={$service_info->idtour} AND idcustomer={$id_user->id}";
            if ($result = $db->query($query)) {
                if ($result->num_rows) {

                    $id_reservation = $result->fetch_object();
                    $result->close();
                }
            }

            $query = "SELECT * FROM reservation_service WHERE idservice=" . $service_info->id;
            if ($result = $db->query($query)) {

                if ($result->num_rows) {
                    $reservation_service_exists = $result->fetch_object();

                if ($nrreservations < 1) {
                    echo "<script>alert('Your  must make a reservation for, at least, one person!')</script>";
                    echo "<script>window.open('new_reservation_service.php','_self')</script>";
                } else if ($count - $nrreservations < 0) {
                    echo "<script>alert('You can not make the reservation because there are only " . $count . " seats available in this tour!')</script>";
                    echo "<script>window.open('new_reservation_service.php','_self')</script>";
                } else if ($result->num_rows) {

                    $query = "SELECT * FROM reservation WHERE idcustomer= '" . $id_user->id . "' AND idtour= '" . $service_info->idtour . "'";
                    if ($result = $db->query($query)) {

                        if ($result->num_rows) {
                            $reservation_exists = $result->fetch_object();
                            $result->close();

                            if ($reservation_exists->idcustomer === $id_user->id) {
                                if ($reservation_exists->id === $reservation_service_exists->idreservation) {
                                    echo "<script>alert('You already made a reservation for this service. Please see your reservation panel!')</script>";
                                    echo "<script>window.open('reservations.php','_self')</script>";
                                }
                            }
                        }
                    } 
                }
            }else {

                        $query = "INSERT INTO reservation_service (idreservation, idservice, date, nrseats) VALUES (?, ?, NOW(), ?)";
                        $insert = $db->prepare($query);
                        $insert->bind_param('iii', $id_reservation->id, $service_info->id, $nrreservations);
                        $insert->execute();
                        echo "<script>alert('You successfully made a reservation! You are being redirected to your reservations page')</script>";
                        echo "<script>window.open('reservations.php','_self')</script>";
                    }
                }            
        }
    }
}
?>

预订


在表单内部更改您创建的隐藏输入:

 <input type="hidden" name="ids"  required="" value="<?php $service_info->id ?>">

您面临什么样的错误?首先:您的表单action为空(action=“”)。第二,诺伊斯·马诺,哦,上帝。你到底想用这段代码做什么?它完全没有结构。我在其中发现了许多可能的错误。@bcesars未定义变量:service\u info,试图获取非对象的属性,致命错误:调用非对象的成员函数fetch\u row()。但这只有在我单击“提交”按钮后才会发生,这很奇怪。@ErasmoOliveira该操作是空的,因为我没有将信息定向到另一个页面。插入查询位于底部。