構建簡易新聞站點:首頁顯示三類新聞(國內/國際/娛樂)標題列表,點擊進入詳情頁。使用 Smarty + 原生 mysql_* 函數 + MySQL 數據庫。
CREATE DATABASE News;
USE News;
CREATE TABLE tb_news_ch ( -- 國內新聞
iNewsID INT(11) PRIMARY KEY AUTO_INCREMENT,
vcNewsTitle VARCHAR(50) NOT NULL,
ltNewsContent LONGTEXT NOT NULL
);
CREATE TABLE tb_news_in ( -- 國際新聞
iNewsID INT(11) PRIMARY KEY AUTO_INCREMENT,
vcNewsTitle VARCHAR(50) NOT NULL,
ltNewsContent LONGTEXT NOT NULL
);
CREATE TABLE tb_news_mu ( -- 娛樂新聞
iNewsID INT(11) PRIMARY KEY AUTO_INCREMENT,
vcNewsTitle VARCHAR(50) NOT NULL,
ltNewsContent LONGTEXT NOT NULL
);
i_int、vc_varchar、lt_longtext),閱讀即知類型+Web (站點根目錄)
|-- +comm (Smarty 庫文件)
| |-- Smarty.class.php, Smarty_Compiler.class.php, Config_File.class.php
| |-- +plugins (插件目錄)
|-- +cache (緩存目錄,需寫權限)
|-- +templates (模板目錄)
| |-- header.tpl, index.tpl, foot.tpl, news.tpl
|-- +templates_c (編譯目錄,需寫權限)
|-- +css, +image, +media
|-- index.php, news.php
|-- indexbak.htm, newsbak.htm (效果參考圖)
|-- 數據庫建立文件.txt, 例程說明.txt
<?php
include_once("./comm/Smarty.class.php");
$smarty = new Smarty();
$smarty->template_dir = "./templates";
$smarty->compile_dir = "./templates_c";
$smarty->cache_dir = "./cache";
$smarty->cache_lifetime = 3600;
$smarty->caching = true;
$smarty->left_delimiter = "<{";
$smarty->right_delimiter = "}>";
// 連接數據庫
$link = mysql_connect("localhost", "root", "") or die("DB連接失敗");
mysql_select_db("News", $link);
mysql_query("SET NAMES GBK");
// 查詢三類新聞各 5 條
$categories = array('ch'=>'國內新聞', 'in'=>'國際新聞', 'mu'=>'娛樂新聞');
foreach ($categories as $key => $title) {
$sql = "SELECT iNewsID, vcNewsTitle FROM tb_news_$key ORDER BY iNewsID DESC LIMIT 5";
$res = mysql_query($sql, $link);
$list = array();
while ($row = mysql_fetch_assoc($res)) $list[] = $row;
$smarty->assign("news_$key", $list);
$smarty->assign("title_$key", $title);
}
$smarty->display("index.tpl");
?>
<?php
// 類似初始化...
$id = intval($_GET['id']);
$type = $_GET['type']; // ch/in/mu
$sql = "SELECT * FROM tb_news_$type WHERE iNewsID=$id";
$row = mysql_fetch_assoc(mysql_query($sql, $link));
$smarty->assign("news", $row);
$smarty->display("news.tpl");
?>
{section name=i loop=$news_ch}
<a href="news.php?type=ch&id={$news_ch[i].iNewsID}">{$news_ch[i].vcNewsTitle}</a><br>
{/section}
{* 同理循環 news_in, news_mu *}
生產環境請使用 PDO 或 MySQLi,mysql_* 函數已棄用(PHP 7.0+ 移除)。本教程為教學演示,實戰請升級數據庫層。