使用“联接表”保存从下拉菜单中选择的信息


Using Join Tables to Save Info Selected from Drop-down Menus

我正在从书籍和在线资源中学习PHP和MySQL。作为一个"随学随用"项目,我一直在创建一个网站,允许我对我的电影收藏进行编目。我创建了一个数据库,并设置了一系列表来保存必要的信息。

我正在构建一个页面,允许我输入电影的数据。当谈到使用"联接表"时,我遇到了一个障碍。我找不到任何信息来帮助我,我希望这里有人能帮忙。

我可以创建一个给定表中所有记录的下拉列表,但我不知道如何使用用户从下拉列表中选择的内容。我想做的是给出两个下拉列表,让用户从列表a中选择一个项目,并根据需要从列表B中选择多个项目,然后将所有信息保存到各个表中。

更具体的细节:

我有4张桌子:

movie_info (movie_id, movie_title, movie_year, genre_id)
movie_genres (movie_genre_id, movie_genre_name)
movie_directors (movie_director_id, movie_director_name)
movies_directors_join (movies_directors_join_id, movie_id, movie_director_id)

在创建电影的网页上,我想显示一个字段,用户可以在其中键入电影名称,并在另一个字段中键入年份。我能做到。

我想展示一个不同流派的下拉列表,我可以使用我写的函数创建:

function query_genre () {
    $myData = mysql_query("SELECT * FROM movie_genres ORDER BY movie_genre_name ASC");
    while ($record = mysql_fetch_array($myData)){
        echo '<option value = ' . $record['movie_genre_id'] . '>' .
        $record['movie_genre_name'] . ' </option>';
    }
}

然后称之为:

<p>Choose a Genre
     <select name="dropdown">
         <?php query_genre() ?>
     </select>
</p>

我希望用户选择一种类型,并使所选类型的genre_id成为movie_info表中的genre_id。我不能那样做。

我想要一个不同控制器的下拉列表,我可以使用类似于上面的函数来创建它。

一部电影可以有多个导演,所以我想让用户从下拉列表中选择一个导演,并将其"添加"到电影信息中。如果需要,用户可以选择另一个导演,并添加他,直到列出所有导演。

一旦标题、年份、类型和导演都到位,用户可以单击"提交",一条记录将添加到movie_info,一条或多条记录将被添加到moves_directors_join。

使用以下代码可以创建第一个下拉列表。

  <?php
    $sql_manager ="SELECT * FROM movie_genres ORDER BY movie_genre_name ASC";
    $rslt_manager = $obj -> select($sql_manager); //$obj is object of db class.(create   one)
    ?>
     <select name="movie">
        <option value=''>===Select===</option>
              <?
                 for($mg=0;$mg<count($rslt_manager);$mg++)
                   {
               ?>
                   <option value="<?=$rslt_manager[$mg]['movie_genre_id'];?>"><? echo $rslt_manager[$mg]['movie_genre_name'];?></option>
                <?
                    }
                 ?>
         </select>

对于多选的第二个下拉菜单,您可以使用jquery multipleselect插件,它将为您提供复选框来选择多个值。

我设法找到了一种比上面建议的更简单的方法。我只需要添加"multiple"answers"[]"就行了。不需要任何jquery或上面建议的任何神秘的高级东西。耶!

以下是行之有效的方法:

<select name="dropdown_director[]" multiple>
                    <?php query_director() ?>
                </select>