php - 从多个表获取信息到一个 div(HTML、PHP 和 MySQL)

标签 php javascript mysql html

我正在为特定文件制作一个电影预订/观看网站。有多个相同和不同格式(vcd、dvd、vhs)的电影。数据库中有两个表,一个仅用于电影的标题、导演等一般信息,另一个表专门用于电影的信息。磁盘如字幕、语言、磁盘数量。

我在显示搜索结果时创建了一个 div。搜索结果中只有电影名称,并且它们附近有一个展开按钮,单击该按钮时,页面右侧会出现一个信息 div,显示有关电影的所有信息。但是,我上面提到的多部电影都存在一个问题。我无法为多部电影做到这一点。

我希望页面仅显示重复电影的一个标题,当我单击展开按钮时,我希望它显示重复电影的所有副本的所有详细信息(可能有一个下拉框,并且用户选择格式然后根据选择显示信息)

我该怎么做?数据库函数和 php 代码是什么?

我对各种想法或代码持开放态度

谢谢

最佳答案

简短的答案是 $mysqli 或 $mysql 返回多行,您需要循环遍历它们。

一个不错的初始方法可能是。请注意,这并未经过优化(您可能希望在单个 WHERE IN 请求中获取所有电影的所有磁盘,然后分配它们。但这是让您开始的第一步。

电影表:

id (PRIMARY KEY)
title
director

磁盘表

id (PRIMARY KEY)
film_id
subtitle
language

PHP:

class DB {
    private static $mysqli;
    public static function getDB() {
        if(!isset($this->mysqli)) {
            $this->mysqli = new mysqli('localhost','user','password','db');
        }
        return $this->mysqli();
    }
    public static function closeDB() {
        $mysqli->close();
        unset($mysqli);
    }
}
class Disk {
    private $id;
    private $film_id;
    private $subtitle;
    private $language;
    public static function GetByFilmId($id) {
        $id= DB::getDB()->real_escape_string($id);
        $query = sprintf("SELECT * FROM movie where title = '%i1'",$id);
        $result = DB::getDB()->query($query);
        $disks = array();
        while ($disk = $result->fetch_object("Disk")) {
            $disks[] = $disk;
        }
        $result->close();
        return $disks;
    }
    public render() {
?>
<div class="disk">
    <div><?php echo $this->subtitle; ?></div>
</div>
<?php
    }
}
class Movie {
    private $id;
    private $title;
    private $director;
    public static function GetByTitle($title) {
        $title = DB::getDB()->real_escape_string($title);
        $query = sprintf("SELECT * FROM movie where title = '%s1'",$title);
        $result = DB::getDB()->query($query);
        $movies = array();
        while ($movie = $result->fetch_object("Movie")) {
            $movies[] = $movie;
        }
        $result->close();
        return $movies;
    }
    public __construct() {
        $this->getDisks();
    }
    public getDisks() {
        $disks = Disks::GetByFilmId($this->id);
    }
    public render() {
?>
<div class="movie">
<div><?php echo $this->title; ?></div>
<div class="disks">       
<?php 
foreach($disks as $disk) {
   $disk->render();   
}
?>
</div>
<?php
    }
}
$movies = Movie::GetByTitle($_GET['title']);
DB::closeDB();
?>
<html>
<head>
    <title>MovieLand :: Movies Named <?php echo $_GET['title']; ?></title>
</head>
<body>
<h1>A List of Movies</h1>
<div class="movies">
<?php
foreach($movies as $movie) {
    $movie->render();
}
?>
</div>
</body>
</html>

关于php - 从多个表获取信息到一个 div(HTML、PHP 和 MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594438/

相关文章:

php - 有一个 MySQL 数据库,PHP 表单不工作,但连接成功

javascript - Aurelia DI 通过抽象基和/或接口(interface)获取类的实例

javascript - 获取 JSON 名称的值

mysql - 我想动态创建存储过程以逗号分隔的列和值

mysql - 相当于 "SELECT * FROM (SELECT table_name FROM...)"的东西?

php - 如何查找/插入缺失序列(自动增量)ID 中的数据?

php - CodeIgniter MSSQL 连接

php - Mysql 选择入数组

Javascript 选择值加载

mysql - Spring Boot + Liquibase:通信链接失败