根据mysql查询显示某些代码? (PHP)

时间:2015-01-02 09:34:13

标签: php mysql sql-server

我需要一点kickstart。

我们刚刚在学校学习php,我们有一个项目,我们正在建立一个电影浏览网站。因此,我们希望能够选择流派,并使用MySQL数据库显示该流派的所有电影。我们都清楚SQL查询等等,我的问题是我如何根据SQL查询使浏览器显示电影?

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

所以在movies.com/genre上你可以选择正确的流派,而在movies.com/display上,你可以看到所选流派的电影。因此,点击“喜剧”应该会带您到movies.com/display并向您显示喜剧电影。选择“戏剧”应该会带你到同一个网站(movies.com/display),只显示戏剧电影。

问题在于我们只是不知道从哪里开始,在切换页面以显示某些sql查询时会出现问题,具体取决于您在上一页中选择的内容。我不知道如何谷歌它,但只是一个链接或建议将有所帮助。我敢肯定它真的不会太难。

提前致谢。

2 个答案:

答案 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']);