sql模式,获取正确的数据

smdnsysy  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(272)

这是我的数据库模式,如果用户选中了复选框,则每个复选框都将添加到保留的座位中。
我上传了旧的模式,最新的模式在reservation表中有一个外键。这就是全部。

这就是ui的样子,我是通过下面的代码得到这些复选框的

if (!isset($_SESSION['id'])) {
    header("Location: login.php?error=not_login");
    exit();
    } else {
            if (isset($_POST['submit'])) {
                $temp_branch_id = $_POST['branch'];
                $temp_movie_id = $_POST['movie'];
                $temp_screening_id = $_POST['screening'];

            $seats = $mysqli->query("
SELECT seat.id
     , s.row
     , s.number
  FROM movies m
  JOIN screening n
    on m.id = n.movie_id 
  JOIN branches b
    on n.branch_id = b.id 
  JOIN seats s
    on b.id = s.branch_id 
 WHERE n.id = $temp_screening_id
") 
            or die($mysqli->error);

        } 
    }
?>

<div class="theatre">
   <h1>Please select a seat  </h1>
</div>  

 <form method="post" action="includes/seats_reservation.inc.php">
      <div>
      <input type="hidden" name="screening_id" value="<?= $temp_screening_id ?>">
         <?php 
            $i=1;
            while ($row = mysqli_fetch_array($seats)) {
            ?>
             <input type="checkbox" name="seats_check[]" id="<?= $row['id']; ?>" value="<?= $row['id']; ?>/>
            <label for="<?= $row['id']; ?>"><?php echo $row['row'].$row['number'] ?></label>
            <?php if ($i%10 == 0) { ?>
                  </div>
                  <div>
            <?php }
                    $i++;
                    }
            ?>
      </div>

      <button type="submit" class="btn btn-primary" name="submit">
      Submit
      </button>
   </form>


我想要完成的是,如果复选框已经基于一个筛选id被选中,那么我想禁用它们,但是每当我查询数据时,这就是我得到的。我想让所有的座位在选定的放映时间他们的状态,如果他们是积极的或没有。
我只是关注这篇文章,但我似乎不能使它工作。我的模式有问题吗?
http://www.vertabelo.com/blog/technical-articles/a-database-model-for-a-movie-theater-reservation-system

9lowa7mx

9lowa7mx1#

你的问题不远了。您所需要做的就是测试是否存在保留,并将该值作为列返回。
如果某个座位已预订,并且预订已激活,则该座位不可用,否则可以预订。

SELECT s.*, IF(r.id AND sr.id, 0, 1) AS available
FROM seats s
INNER JOIN branch b 
    ON b.id = s.branch_id 
    AND b.id = :branchId
INNER JOIN screening sc 
    ON b.id = sc.branch_id 
    AND sc.id = :screeningId
LEFT JOIN seat_reserved sr 
    ON s.id = sr.seat_id 
    AND sc.id = sr.screening_id
LEFT JOIN reservation r
    ON r.id = sr.reservation_id
    AND r.active = 1;

然后需要为设置参数绑定 :branchId 以及 :screeningId .

相关问题