我需要一点kickstart。
我们刚刚在学校学习php,我们有一个项目,我们正在建立一个电影浏览网站。因此,我们希望能够选择流派,并使用MySQL数据库显示该流派的所有电影。我们都清楚SQL查询等等,我的问题是我如何根据SQL查询使浏览器显示电影?
让我解释一下。假设我们是movies.com
所以在movies.com/genre上你可以选择正确的流派,而在movies.com/display上,你可以看到所选流派的电影。因此,点击“喜剧”应该会带您到movies.com/display并向您显示仅喜剧电影。选择“戏剧”应该会带你到同一个网站(movies.com/display),只显示戏剧电影。
问题在于我们只是不知道从哪里开始,在切换页面以显示某些sql查询时会出现问题,具体取决于您在上一页中选择的内容。我不知道如何谷歌它,但只是一个链接或建议将有所帮助。我敢肯定它真的不会太难。
提前致谢。
答案 0 :(得分:1)
从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);
答案 1 :(得分:0)
我建议有一个流派表。这样,您可以轻松地显示类型列表供用户选择(即,您可以从该表填充HTML表单选择列表)。类型列表将具有唯一的id(整数)和文本描述,因此当您生成的列表显示描述但具有id的值时。
然后有一张电影表(我猜你已经有了这个)。每部电影都将由唯一的整数id字段/
标识最后一张电影到流派的表格。这只是将电影的id链接到电影的类型的id。这样,如果需要,您可以将电影链接到多个类型。
这样做也意味着从HTML表单返回的值可以只是整数,这很容易安全(只需使用php intval()函数)。
在使用中,您将提供一个类型列表作为SELECT列表。当用户选择项目并提交表单时,所选类型的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']);