【问题标题】:Needing help in displaying information in php在 php 中显示信息时需要帮助
【发布时间】:2016-08-01 14:02:27
【问题描述】:

我正在做一个附带项目,过去几天我取得了一些不错的进展,但我遇到了一个问题。我正在使用 php、mysql 和 bootstrap。副项目正在处理电影收藏。我得到的大部分信息都显示了我想要的方式,但类型。我可以在 mysql 端使用 groupconcat 显示所有类型,但我希望它们成为链接,以便用户可以单击它们并打开一个包含该类型所有电影的页面。如果我不使用 groupconcat,我只会显示一种类型。

这是在数据库中设置表的方式。

电影具有情节、时长、类型、类别等所有基本信息。主键是一个代码列。 Genres 是另一个包含所有流派信息的表。它也有一个代码pk。 然后有一个链接它们的 MovieGenres 表。

电影 |代码 | PK|

类型 |代码|PK| |类型| |全流派名称

电影类型 |电影代码|PK| |类型代码|PK|

任何帮助将不胜感激!

这是我的网站部分代码

<?php 
    require '../database.php';
    $Code = null;
    if ( !empty($_GET['Code'])) {
        $Code = $_REQUEST['Code'];
    }

    if ( null==$Code ) {
        header("Location: index.php");
    } else {
        $pdo = Database::connect();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "
          SELECT 
            Movies.Code, Title, Plot, Movies.Type, 
            Movies.Category, Image, Score, Rated, Alt, Status, 
            YearReleased, Duration, 
            SUBSTRING(Duration, 1, CHAR_LENGTH(Duration) - 3) AS Duration2, 
            TotalEps, Types.code as tcode, Types.Type as ttype,       
            Categories.Code as ccode, Categories.Category as ca, 
            Ratings.Code as rc, Ratings.Rating as rr, Genre 
          FROM Movies, Types, Categories, Ratings, MovieGenres, Genres 
          WHERE Movies.Type=Types.Code 
          AND Movies.Rated=Ratings.Code 
          AND Movies.Category=Categories.Code 
          AND Movies.Code=MovieGenres.MovieCode 
          AND MovieGenres.GenreCode=Genres.Code 
          AND Movies.Code = ?";
        $q = $pdo->prepare($sql);
        $q->execute(array($Code));
        $data = $q->fetch(PDO::FETCH_ASSOC);
        Database::disconnect();
    }
?>

<!DOCTYPE html>
<html lang="en">

<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>MovieDB - <?php echo $data['Title'];?></title>

    <!-- Bootstrap Core CSS -->
    <link href="../css/bootstrap.min.css" rel="stylesheet">

    <!-- Custom CSS -->
    <link href="../css/modern-business.css" rel="stylesheet">
    <link href="../css/custom.css" rel="stylesheet">
    <!-- Custom Fonts -->
    <link href="../font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->

</head>

<body>

    <!-- Navigation -->
    <?php include '../include/nav.php';?>

    <!-- Page Content -->
    <div class="container">

        <!-- Page Heading/Breadcrumbs -->
        <div class="row">
            <div class="col-lg-12">
                <h2 class="page-header"><?php echo $data['Title'];?>
                </h2>
            </div>
        </div>
        <!-- /.row -->

        <!-- Portfolio Item Row -->
        <div class="row">
            <div class="col-md-4">
                <img class="img-responsive" src="../Images/<?php echo $data['Image'];?>" alt="">
            </div>


<div class="col-md-8 hidden-sm hidden-xs">
    <ul class="nav nav-tabs">
        <li class="active"><a data-toggle="tab" href="#Plot">Plot</a></li>
        <li><a data-toggle="tab" href="#Details">Details</a></li>
    </ul>
    <div class="tab-content">
        <div id="Plot" class="tab-pane fade in active">
            <p><?php echo $data['Plot'];?></p>
        </div>
        <div id="Details" class="tab-pane fade">
            <li>Alternative Title:  <?php echo $data['Alt'];?></li>
            <li>Type:  <a href="../list/type.php?Code=<?php echo $data['tcode'];?>&Type=<?php echo $data['ttype'];?>"><?php echo $data['ttype'];?></a></li>
            <li>Rated:  <a href="../list/rating.php?Code=<?php echo $data['rc'];?>&Rating=<?php echo $data['rr'];?>"><?php echo $data['rr'];?></a></li>
            <li>Episodes:  <?php echo $data['TotalEps'];?></li>
            <li>Duration:  <?php echo $data['Duration2'];?></li>
            <li>Status:  <?php echo $data['Status'];?></li>
            <li>Genre:  <?php echo $data['Genre'];?></li>
            <li>Category:  <a href="../list/categories.php?Code=<?php echo $data['ccode'];?>&Category=<?php echo $data['ca'];?>"><?php echo $data['ca'];?></a></li>
            <li>Year Released:  <a href="../list/year.php?Year=<?php echo $data['YearReleased'];?>"><?php echo $data['YearReleased'];?></a></li>
            <li>Score:  <?php echo $data['Score'];?></li>
        </div>
    </div>
</div>

<div class="col-md-4 hidden-md hidden=-lg">
    <h3>Plot</h3>
    <p><?php echo $data['Plot'];?></p>
</div>
<div class="col-md-4 hidden-md hidden=-lg ">
    <h3>Details</h3>
    <ul>
            <li>Alternative Title:  <?php echo $data['Alt'];?></li>
            <li>Type:  <a href="../list/type.php?Code=<?php echo $data['tcode'];?>&Type=<?php echo $data['ttype'];?>"><?php echo $data['ttype'];?></a></li>
            <li>Rated:  <a href="../list/rating.php?Code=<?php echo $data['rc'];?>&Rating=<?php echo $data['rr'];?>"><?php echo $data['rr'];?></a></li>
            <li>Episodes:  <?php echo $data['TotalEps'];?></li>
            <li>Duration:  <?php echo $data['Duration'];?></li>
            <li>Genre:  <?php echo $data['Genre'];?></li>
            <li>Status:  <?php echo $data['Status'];?></li>
            <li>Category:  <a href="../list/categories.php?Code=<?php echo $data['ccode'];?>&Category=<?php echo $data['ca'];?>"><?php echo $data['ca'];?></a></li>
            <li>Year Released:  <a href="../list/year.php?Year=<?php echo $data['YearReleased'];?>"><?php echo $data['YearReleased'];?></a></li>
            <li>Score:  <?php echo $data['Score'];?></li>
    </ul>
    </div>
</div>

        <!-- /.row -->



        <hr>

        <!-- Footer -->
    <?php include '../include/footer.php';?>

    <!-- /.container -->

    <!-- jQuery -->
    <script src="../js/jquery.js"></script>

    <!-- Bootstrap Core JavaScript -->
    <script src="../js/bootstrap.min.js"></script>
</body>

</html>

【问题讨论】:

    标签: php mysql twitter-bootstrap-3


    【解决方案1】:

    您的数据库设计看起来没有问题:

    Movies { Code(PK), ... }
    Genres { Code(PK), Genre, Full_Genre_Name }
    MovieGenres { MovieCode, GenreCode }
    

    但是,您的 SQL 选择了所有内容,并且它包含多行相同的电影数据。您可能需要一个 SQL 来选择一部电影,另一个 SQL 来获取其所有类型:

    1) SELECT * FROM Movies WHERE Code = ?
    
    2) SELECT g.* 
    FROM Geners AS g 
    JOIN MovieGenres AS mg ON g.Code = mg.GenreCode
    WHERE mg.MovieCode = ?
    

    取决于你的实际页面情况,如果你的页面上已经有流派的选择选项,你可以重复使用它,2)SQL更改为:

    SELECT GenreCode from MovieGenres WHERE MovieCode = ?
    
    <?php
    // change to your db functions
    $movieGenres = $db->getAll($sql2); 
    // show clickable genres links: eg
    echo '<h3>Genres:</h3><p>';
    foreach ($movieGenres as $g) {
        echo '<a href="/genre/', $g['Code'] ,'">', $g['Genre_Full_Name'] ,'</a>; ';
    }
    echo '</p>';
    ?>
    

    【讨论】:

    • 感谢您的回复。想了想,不知道怎么用ph​​p实现
    • 现在我在一个标签部分有情节,在另一个标签部分有细节,我想把流派放在细节部分。
    • 如果这个答案对原始问题是正确的,你应该接受它,如果你有其他问题,请发布一个新问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 2022-11-19
    相关资源
    最近更新 更多