我正在从书籍和在线资源中学习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>