PHP是一種服務(wù)器端腳本語(yǔ)言,能夠動(dòng)態(tài)生成網(wǎng)頁(yè)內(nèi)容。而仿豆瓣則是網(wǎng)站開發(fā)的一個(gè)經(jīng)典案例,具有很高的參考價(jià)值。在本文中,我們將深入了解如何使用PHP來(lái)實(shí)現(xiàn)一個(gè)仿豆瓣的網(wǎng)站。
首先,我們需要設(shè)計(jì)網(wǎng)站的頁(yè)面結(jié)構(gòu)。以仿豆瓣的電影頁(yè)面為例,該頁(yè)面包括了電影的基本信息、推薦電影、短評(píng)等模塊。可以使用HTML和CSS來(lái)設(shè)計(jì)網(wǎng)站頁(yè)面。以下是部分代碼:
<div class="movie-info"> <div class="introduction"> <h1></h1> <p></p> <p></p> </div> <div class="poster"></div> <div class="detail"> <ul></ul> </div> </div> <div class="recommend"> <h2>猜你喜歡</h2> <ul></ul> </div> <div class="comments"> <h2>短評(píng)</h2> <ul></ul> <form action="" method="post"> <textarea name="comment" rows="5" cols="50"></textarea> <input type="submit" value="提交" /> </form> </div>
在完成頁(yè)面設(shè)計(jì)之后,我們需要編寫PHP腳本來(lái)生成頁(yè)面內(nèi)容。以電影基本信息模塊為例:
<?php // 獲取數(shù)據(jù)庫(kù)連接 $pdo = new PDO("mysql:host=localhost;dbname=douban;", "root", "password"); // 獲取電影信息 $movie_id = $_GET['id']; $sql = "SELECT * FROM movie WHERE id = ?"; $stmt = $pdo->prepare($sql); $stmt->execute(array($movie_id)); $movie = $stmt->fetch(); // 生成HTML echo "<h1>$movie[title]</h1>"; echo "<p>導(dǎo)演:$movie[director]</p>"; echo "<p>主演:$movie[actor]</p>"; ?>
通過(guò)從URL獲取電影ID,并查詢數(shù)據(jù)庫(kù)獲取電影信息,我們可以動(dòng)態(tài)生成電影基本信息模塊的內(nèi)容。而推薦電影和短評(píng)模塊的內(nèi)容,則可以根據(jù)不同的算法和需求來(lái)生成。以下是部分示例代碼:
<?php // 生成猜你喜歡電影列表 $sql = "SELECT * FROM movie WHERE category = ?"; $stmt = $pdo->prepare($sql); $stmt->execute(array($movie['category'])); $movies = $stmt->fetchAll(PDO::FETCH_ASSOC); shuffle($movies); echo "<ul>"; for ($i = 0; $i < 5; $i++) { echo "<li><a href=\"movie.php?id={$movies[$i]['id']}\">{$movies[$i]['title']}</a></li>"; } echo "</ul>"; // 生成短評(píng)列表 if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 提交新短評(píng) $comment = $_POST['comment']; $sql = "INSERT INTO comment (movie_id, content) VALUES (?, ?)"; $stmt = $pdo->prepare($sql); $stmt->execute(array($movie_id, $comment)); } else { // 顯示短評(píng)列表 $sql = "SELECT * FROM comment WHERE movie_id = ?"; $stmt = $pdo->prepare($sql); $stmt->execute(array($movie_id)); $comments = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "<ul>"; foreach ($comments as $comment) { echo "<li>$comment[content]</li>"; } echo "</ul>"; } ?>
通過(guò)以上代碼,我們可以根據(jù)不同的數(shù)據(jù)和業(yè)務(wù)邏輯來(lái)動(dòng)態(tài)生成電影頁(yè)面的內(nèi)容。這樣的仿豆瓣網(wǎng)站,雖然功能上不如豆瓣強(qiáng)大、完善,但對(duì)于學(xué)習(xí)和研究PHP、Web開發(fā)等技術(shù),卻是一個(gè)很好的實(shí)踐案例。