我需要一点启动。
我们只是在学校学习php,我们有这个项目,我们正在制作一个用于电影浏览的网站。因此,我们希望能够选择流派,并使用MySQL数据库显示该流派的所有电影。我们都清楚SQL查询等等,我的问题是我如何根据SQL查询使浏览器显示电影?
让我解释一下。假设我们 movies.com
因此,movies.com/genre 是您正确选择流派的地方,movies.com/display 是您应该看到所选流派中的电影的地方。因此,单击"喜剧"应该会将您带到 movies.com/display 并仅向您展示喜剧电影。选择"戏剧"应将您带到同一站点(movies.com/display),并仅显示戏剧电影。
这里的问题是我们只是不知道从哪里开始,当根据您在上一页中选择的内容切换页面以显示某些 sql 查询时,这成为一个问题。我不确定如何谷歌它,但只是一个链接或建议会有所帮助。我相信这不会太难。
提前谢谢。
从 html 开始选择流派:
<form action="display.php" method="POST">
<select name="genre">
<option value="drama">Drama</option>
<option value="comedy">Comedy</option>
<option value="thriller">Thriller</option>
<option value="horror">Horror</option>
</select>
<input type="submit" value="Submit"/>
</form>
在这里,我们有一个带有下拉菜单的表单,用于选择流派。表单操作转到display.php
创建我们可以获取提交值的display.php
并将其放入查询中:
// get the submitted value
$genre = $_POST['genre'];
// set a default genre if the POST genre is empty
if(empty($genre)) {
$genre = 'comedy';
}
// connect to database
$link = mysqli_connect("localhost", "my_user", "my_password", "db_name");
// check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: (" . mysqli_connect_errno() . ") ";
}
// build the query
$query = "SELECT * FROM movie WHERE genre = '".$genre."'"; // unsafe !!
$query = "SELECT * FROM movie WHERE genre = '".mysqli_real_escape_string($link, $genre)."'"; // safer
// execute query
$result = mysqli_query($link, $query);
// check result
if (!$result) {
echo 'Query unsuccessfull!';
}
// show values
while($row = mysqli_fetch_assoc($result)) {
echo $row['title'];
echo $row['description'];
echo "<br/>";
}
// close connection
mysqli_close($link);
我建议有一个流派表。这样,您可以轻松地显示流派列表供用户选择(即,您可以从该表中填充HTML表单选择列表)。流派列表将具有唯一的 id(整数)和文本描述,因此当生成的列表显示描述时,但有一个值是 id。
然后有一个电影表(我想你已经有了这个)。每部电影将由唯一的整数 id 字段/
最后是电影类型表。这只会将电影的 id 链接到电影流派的 id。这样,如果需要,您可以将电影链接到多种类型。
这样做也意味着你从HTML表单返回的值可以只是整数,很容易变得安全(只需使用php intval()函数)。
在使用中,您将提供流派列表作为选择列表。当用户选择一个项目并提交表单时,所选流派的 ID 将返回到脚本中。然后,脚本可以执行将表连接在一起的查询,检查流派是否是已返回到脚本的选定流派。
例如。
tbl_genres
id
genre_name
tbl_movies
id
movie_name
tbl_genre_movie
genre_id
movie_id
然后获取返回的流派 ID 的详细信息:-
$sql = "SELECT *
FROM tbl_genres
INNER JOIN tbl_genre_movie
ON tbl_genres.id = tbl_genre_movie.genre_id
INNER JOIN tbl_movies
ON tbl_genre_movie.movie_id = tbl_movies.id
WHERE tbl_genres.id = ".intval($_POST['genre_id']);