根据 mysql 查询显示特定代码? (php)

Show certain code depending on mysql query? (php)

我需要一点启动。

我们刚刚在学校学习 php,我们有这个项目,我们正在制作一个电影浏览网站。所以我们希望能够 select 类型,并使用 MySQL 数据库显示该类型的所有电影。我们都清楚 SQL 查询等等,我的问题是如何让浏览器根据 SQL 查询显示电影?

让我解释一下。假设我们是 movies.com

所以在电影上。com/genre 是你 select 类型正确的地方,在电影上。com/display 是你应该看到类型 [=] 的电影的地方36=]编辑。因此,单击 "Comedy" 应该会带您去看电影。com/display 并且 只会向您显示 喜剧电影。选择 "Drama" 应该会带您到同一站点(电影。com/display)并只显示剧情电影。

这里的问题是我们不知道从哪里开始,当根据您在上一页中 select 编辑的内容切换页面以显示某些 sql 查询时,这变成了一个问题。我不确定如何 Google 它,但 link 或建议会有所帮助。我相信这真的不会太难。

提前致谢。

我建议选择 table 类型。这样您就可以轻松地为用户显示流派列表 select(即,您可以从 table 填充 HTML 表单 select 列表)。流派列表将有一个唯一的 id(整数)和一个文本描述,因此当生成的列表显示描述但有一个值是 id。

然后 table 电影(我想你已经有了)。每部电影将由唯一的整数 id 字段/

标识

最后 table 电影类型。这只是 link 电影的 ID 到电影的流派 ID。如果需要,您可以通过这种方式将电影 link 编辑为多种类型。

这样做还意味着您从 HTML 表单中 return 的值可以只是整数,这很容易变得安全(只需使用 php intval()功能)。

在使用中,您将提供一个流派列表作为 SELECT 列表。当用户 select 一个项目并提交表单时,selected 流派的 id 被 returned 到脚本。然后脚本可以执行查询,将 table 连接在一起,检查流派是否是已 returned 到脚本的 selected 流派。

例如

tbl_genres
id
genre_name

tbl_movies
id
movie_name

tbl_genre_movie
genre_id
movie_id

然后获取 returned 流派 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']);

从 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>

这里我们有一个带有select流派下拉菜单的表单。表单操作转到 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);