ホームページ > php教程 > php手册 > Smarty サンプル チュートリアル --- ADODB を使用したデータベースへの接続 (2)

Smarty サンプル チュートリアル --- ADODB を使用したデータベースへの接続 (2)

WBOY
リリース: 2016-06-21 09:08:50
オリジナル
1176 人が閲覧しました

ado|连接数据库

同样,我在关键的地方加了数标,下面来说明一下它们的含义:

1. 建立一个连接对象$conn,大家在这里要注意的是它的初始不是以$conn = new ADONewConnection($dbType)这样的形式出现的,也就是说

,ADONewConnection不是一个class,你不能使用new 对它进行初始化.看看它的源码你就会明白,这只不过是一个函数.

2. 这个就不用说了吧?打开一个News的数据库,主机为:localhost, 用户名为root, 密码为""

3. 一个查询语句,注意,这里要将查询的字段使用AS关键字来重新标识,名称为你在模板中设置的模板变量的名称.

4. 使用Execute来执行这个查询,结果返回一个RecordSet数据集

5. 这里有个方法:$rs->GetArray($num) 这个在上边介绍过,它是要从$rs这个数据集中返回$num行,结果为一个可被Smarty所识别的二维数

据.这样ADODB就自动为我们构建起了这样的结构,而在我们以前的例子中,都是使用一个循环构建这样的数组的.

6. 这一句我看也不用说了吧?

7. 关闭内存中的相关资源.

大家可以看看,整个程序中再没有出现什么while语句,程序整体结构显的非常清楚,这就是为什么ADODB+Smarty是黄金组合的原因.不过话也

说回来了,简单有简单的问题,不知大家想过没有,这里对显示的新闻标题的长度没有控制,也就是说,如果某条新闻标题的长度超出一行显示的范

围,它就是自动折行到下一行,那么整个的版面就会变乱,所说大家自已适自己的情况来决定是否这样使用吧当然,你也可以使用像上一节中介

绍的那样,使用一个循环语句重构这个二维数组,使它符合你的用途,怎么做大家自己去想吧,参考PHPLIB中的做法,上节我介绍过了...

再来看看新闻页吧

=============================================================
news.php
=============================================================
/*********************************************
*
* 文件名: news.php
* 作 用: 新闻显示程序
*
* 作 者: 大师兄
* Email: teacherli@163.com
*
*********************************************/
include_once("./comm/mySmarty.class.php"); file://包含smarty的扩展类文件
include_once("./comm/adodb/adodb.inc.php"); file://包含ADODB主执行文件

$smarty = new MySmarty(); file://建立smarty实例对象$smarty

$conn = ADONewConnection("mysql"); file://初始化ADODB
$conn->Connect("localhost", "root", "", "News"); file://连接数据库

$NewsID = $_GET["id"]; file://获取新闻编号
$NewsType = $_GET["type"]; file://要显示的新闻类型
switch($NewsType)
{
case 1:
$dbName = "tb_news_CH";
break;
case 2:
$dbName = "tb_news_IN";
break;
case 3:
$dbName = "tb_news_MU";
break;
}

$strQuery = "SELECT vcNewsTitle AS NewsTitle, ltNewsContent AS NewsContent FROM " . $dbName;
1. $row = &$conn->GetRow($strQuery); file://返回一个一维数组,下标为模板变量名

$smarty->display($row);
unset($row);

$conn->Close();
?>
=============================================================
说明一下关键的地方,其实在news.php中也只有一个地方值的说明一下了.

1. $conn->GetRow($strQuery):这一句返回一个一维数组,返回的形式为:

$array = ("NewsTitle"=>"xxxx", "NewsContent"=>"yyyyy...")
明白如果使用$smarty($array)后Smarty会干什么吗?对了,就是相当于:
$smarty->assign("NewsTitle", "xxxx");
$smarty->assign("NewsContent", "yyyyy...");

简单吧,确实很简单

下面再来看看新闻列表:
================================================================
newsList.php
================================================================
/*********************************************
*
* 文件名: newsList.php
* 作 用: 新闻列表显示程序
*
* 作 者: 大师兄
* Email: teacherli@163.com
*
*********************************************/
include_once("./comm/mySmarty.class.php"); file://包含smarty的扩展类文件
include_once("./comm/adodb/adodb.inc.php"); file://包含ADODB主执行文件

$smarty = new MySmarty(); file://建立smarty实例对象$smarty

$conn = ADONewConnection("mysql"); file://初始化ADODB
$conn->Connect("localhost", "root", "", "News"); file://连接数据库

>file://ニュース番号を取得
$NewsType = $_GET["type"]; file://表示するニュースタイプ
switch($NewsType)
{
case 1:
$tbName = " tb_news_CH" ;
break;
case 2:
$tbName = "tb_news_IN";
break;
case 3:
$tbName = "tb_news_MU";
break;
}

$strQuery = "ニュースIDとしてiNewsIDを選択、vcNewsTitle AS NewsTitle FROM " . $tbName;
1. $rs = &$conn->GetAll($strQuery);
2. $smarty->assign("NewsType", $NewsType); file://この文 ニュース リストにリンクを掲載します
3. $smarty->assign("NewsList", $rs);
unset($rs);
$conn->close();

$smarty-> display ("newsList.tpl");
?>
==================================== ==== ==========================
それぞれについて説明しましょう:

1: この関数は次のとおりです。良いことに、その機能は $strQuery によってクエリされたすべてのデータを Smarty によって認識できる 2 次元配列に結合することです

覚えておいてください: RecordSet ではなく 2 次元配列を返すので、直接使用できます。
2. ニュースタイトルへのリンク時にGETパラメータtype=XXを要求するためです

ADODBを使用する際に注意すべき点がいくつかあります
1. 初期化方法はありません。オブジェクトではないので、 new を使用します
2. メソッド: 基本的に、すべてのメソッドの名前は大文字で始まります。これは *NIX の習慣とは多少異なるようで、全体のスタイルとも異なります。 PHP ですので、

ここでは大文字と小文字の区別に注意してください。

さて、この Smarty シリーズのチュートリアルは基本的にここで完了しました。これらのいくつかの基本的なチュートリアルは、より多くの専門家がさらに多くのことを学ぶことを願っています。あなたの経験を書き留めて、みんなで改善しましょう




関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート