根据 mysql 查询显示某些代码?(菲律宾比索)


Show certain code depending on mysql query? (php)

我需要一点启动。

我们只是在学校学习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']);