检索连接三个表的外键值

时间:2015-12-22 18:30:37

标签: php mysql

我有三个数据库表:大厅,电影和放映,如下所示。 database tables

在我的放映台中,我将movie_id和hall_id分别作为外键,分别引用了桌子电影和大厅。

在我的添加详细信息表单中添加筛选的详细信息时,我想分别从桌子大厅和电影中显示可用电影标题和大厅标题的下拉菜单。

但是在我提交表格之后,我想要各自电影和大厅的ID,而不是保存在放映台中的标题。

我如何在PHP中实现这一点?

我加入了这三张桌子。

$sql="SELECT scr_id,scr_date,scr_start,scr_end,m.movie_id,h.hall_id 
        FROM screening as scr
        join movie as m on scr.movie_id=m.movie_id 
        join halls as h on scr.hall_id=h.hall_id";

这是我的添加详细信息表单: add detail form

以下是我用来添加详细信息的表单。我已经评论了前两个元素,因为我无法推导出添加这些元素的逻辑。

<?php
    if(isset($_GET['action'])&&$_GET['action']=="add")
    {

  ?>
<div class="cover">
<h1>Add Schedule</h1>

    <form action="scheduleact.php" method="post">
       <!-- <label for="title">Movie Title</label><input type="text" name="title" value=""/>
          <label for="hall">Hall</label><input type="text" name="hall" value=""/>  -->     
        <label for="date">Date</label><input type="date" name="date"/>
        <label for="start">Start Time</label><input type="time" name="start"/> 
        <label for="end">End Time</label><input type="time" name="end"/>                                             
        <p><input type="submit" name="addschedule" value="submit"/></p>
    </form>
</div>
<?php
    }
?>

这是scheduleact.php

function addschedule($date,$start,$end)
            {
                $sql="insert into screening (movie_id,hall_id,scr_date,scr_start,scr_end) values ('$movid','$hallid',$date','$start','$end')";
                $this->exeQuery($sql) or die(mysql_error());
            }
<?php
    include_once("../class/db_inc.php");

    if(isset($_POST['addschedule'])&&($_POST['addschedule']=='submit'))
    {
        //$movid=$_POST[''];
        //$hallid=$_POST[''];
        $date=$_POST['date'];
        $start=$_POST['start'];
        $end=$_POST['end'];
        $schedule->addschedule($date,$start,$end);
        echo "<script>alert('added successfully');</script>";
        echo "<script>window.location='index.php?obj=viewschedule';</script>";
    }
?>

1 个答案:

答案 0 :(得分:0)

我认为将表格加在一起并不是填充下拉菜单所需的方法。您可以执行两个单独的查询,一个用于电影,一个用于大厅。这是一个一般的例子。有一些缺失的部分,因为我不知道你用什么来运行你的查询,但希望这可以给你一个大致的想法。

<select name="movie_id">
<?php
$movies_sql = 'SELECT movie_id, movie_title FROM movie';
//execute your query
while ($row = $query_result->fetch) {
    echo "<option value=\"$row[movie_id]\">$row[movie_title]</option>";
}
?>
</select>

<select name="hall_id">
<?php
$halls_sql = 'SELECT hall_id, hall_title FROM halls';
//execute your query
while ($row = $query_result->fetch) {
    echo "<option value=\"$row[hall_id]\">$row[hall_title]</option>";
}
?>
</select>

当您检索已存储的筛选记录并希望包含相关信息(电影和大厅)时,您将主要需要加入表格。