根据 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);
我需要一点启动。
我们刚刚在学校学习 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);