基于数据库值创建HTML表

时间:2015-11-20 20:47:10

标签: php html mysql sql database

我有一个包含演员,角色和电影信息的数据库。 在HTML页面上,我让用户输入一个actor的名字和姓氏。

然后将此表单提交到我的PHP页面,在该页面中查看我的数据库,并向用户提供包含以下信息的3列html表:演员所在的电影名称,演员扮演的角色以及年份电影。

所有这些信息都在单独的数据库表中。每个表的外观示例如下:

演员表包含:

  以下列方式存储

'id','first_name','last_name'和'gender' - (933,'Actor','Name','M')

角色表包含:

  

'actor_id','movie_id','角色以下列方式存储 - (16844,10920,'角色')

电影表包含:

  

'id','name','year','rank'以下列方式存储 - (306032,'Snatch。',2000,7.9)

我必须查看并将所有数据关联到表格中。这就是我到目前为止所做的:

{{1}}

我的解决方案有效 - 只是一种平庸的做法

1 个答案:

答案 0 :(得分:0)

您尚未指定变量$firstname$lastname。除此之外,每次if条件都是错误的。

if ($row['first_name'] = $firstname && $row['last_name'] = $lastname) {

应该是:

if ($row['first_name'] == $firstname && $row['last_name'] == $lastname) {

同时检查您要对echo $row['first_name'][0];

执行的操作

请注意,mysql_*函数已弃用,因此您最好使用mysqli或PDO。

修改

您可以使用以下查询选择在电影中播放的所有演员。您可以调整以仅采用更改SELECT子句或使用WHERE

所需的信息
$sql = "
    SELECT aa.id AS actor_id, aa.first_name, aa.last_name, cc.name, cc.year
    FROM actor AS aa
    INNER JOIN role AS bb
    ON aa.id = bb.actor_id
    INNER JOIN movies AS cc
    ON cc.id = bb.movie_id";

编辑2:(来自评论)

您可以使用以下代码:

$conn = mysqli_connect("localhost", "db_username", "your_password", "your_database");
$query = "
    SELECT aa.id AS actor_id, aa.first_name, aa.last_name, cc.name AS movie_name, cc.year AS release_year
    FROM actor AS aa
    INNER JOIN role AS bb
    ON aa.id = bb.actor_id
    INNER JOIN movies AS cc
    ON cc.id = bb.movie_id";
$result = mysqli_query($conn, $query);

echo '
    <table>
        <thead>
            <tr>
                <th>Actor id</th>
                <th>Firstname</th>
                <th>Lastname</th>
                <th>Movie name</th>
                <th>Release date</th>
            </tr>
        </thead>
        <tbody>';
while($row = mysqli_fetch_array($result)) {
    echo '<td>'.$row['actor_id'].'</td>';
    echo '<td>'.$row['first_name'].'</td>';
    echo '<td>'.$row['last_name'].'</td>';
    echo '<td>'.$row['movie_name'].'</td>';
    echo '<td>'.$row['release_year'].'</td>';
}
echo '
        </tbody>
    </table>';