如何使用 php 在 mysql 中进行购票预订系统?

Posted

技术标签:

【中文标题】如何使用 php 在 mysql 中进行购票预订系统?【英文标题】:How do I make a reservation system for purchasing tickets in mysql using php? 【发布时间】:2015-06-28 08:54:17 【问题描述】:

两个有问题的场景:

如果 2 位用户想每人购买 1 张票,而 1 张票有库存怎么办? 如果 3 位用户想每人购买 1 张门票,但有 2 张门票有库存怎么办?

我希望能够在门票位于支付网关时“预订”门票。这意味着门票仍未购买,但当前保留给相关用户,因此当第一个用户仍在付款过程中时,其他用户无法购买。

我的数据库中有两个表:

1. Ticket_type_id:包含票据的类型

ticket_type-id 姓名 说明 stock_remaining

2. Ticket_purchased:包含所有已购买的门票

ticket_id ticket_type_id user_id

购买机票时,应从“stock_remaining”中减去正确的金额,并在该人在支付网关中时进行保留。只有在支付成功后,才能在第二个表中创建所有票,并且从“stock_remaining”中扣除是最终的。


到目前为止,我想出了以下过程(我的尝试代码):

当用户点击“签出”时,PHP 会话 就会启动。 php 开始一个数据库内的事务。此交易从门票库存总额中扣除并为给定用户生成门票,但不提交

如果以下任何查询失败,则整个事务回滚会话关闭,并为用户提供错误消息。但是,如果成功,支付网关将打开

一旦网关完成,支付成功,用户从网关返回我使用Volley向正在运行的session发送成功参数。如果事务提交成功,则回滚。

session_start(); 
    $response = array();
    begin(); // transaction begins

if (isset($_POST['ticketTypeId']) && isset($_POST[‘ticketQuantity’]) && isset($_POST['userId']))

$ticketTypeId = $_POST['ticketTypeId'];             
$ticketQuan = $_POST['ticketQuantity'];
        $userId= $_POST['userId'];

    $query1 = check if quantity required is available   
    $query2 = deduct quantity from total remaining
ForLoop(ticket quantity)
$query3 = generate one ticket for user


    if(!success)
        // On SUCCESS
        $response["success"] = 1;
            echo json_encode($response);
    else
        // On Failed
        $response["success"] = 0;
            echo json_encode($response);

            rollback(); // transaction rolls back
        exit;
   



if (isset($_POST['Transaction']))

$transaction =  $_POST['Transaction'];
    if($transaction == 1) 
        // On Success
        $response["success"] = 1;
            echo json_encode($response);
         commit(); // transaction is committed
         exit; 
    else
        // On Failed
        $response["success"] = 0;
            echo json_encode($response);
        rollback(); // transaction rolls back
                exit;
    

我不知道如何重新连接到会话,所以我不知道这是否有效。

【问题讨论】:

您好,请考虑发布您的尝试(代码)。没有人愿意完成你的工作:) 【参考方案1】:

对于销售 1 张票的问题情况,当 2 张请求它时,您可能希望在有人将其放入购物车后锁定 1 张票或/并且您可以在 mysql 上使用事务。

同样的问题也发生在信用卡上。当两辆购物车试图同时拉动最大信用额度时。只有第一个得到服务.. 希望 ;)

【讨论】:

以上是关于如何使用 php 在 mysql 中进行购票预订系统?的主要内容,如果未能解决你的问题,请参考以下文章

计算机毕业设计ssm+vue基本微信小程序的电影票务系统-电影票预订系统

PHP/MySQL 中的预订日期可用性范围

用C语言如何对MySQL数据库进行操作

Eclipse+Java+Swing+Mysql实现电影购票系统建议收藏

12306买票怎么选座位

基于Ecliopse+Mysql+Tomcat开发得酒店预订管理系统