站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
▼
建站程序
开发
服务器
办公软件
开发教程
▼
服务器教程
软件使用教程
运营教程
热门电子书
▼
CSS教程
WordPress教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
热点词条
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Xoops模块开发应用实例1
”(章节)
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
===数据表=== 模块除了包含页面,通常还会包含保存在[[数据库]]中的数据表,在XOOPS系统中,为模块的数据库访问提供方便的封装,安装模块时将自动创建指定的数据表以及记录,在卸载模块时将自动删除指定的数据表。在安装的过程中,XOOPS为数据表自动添加表前缀。为了便于访问数据表,XOOPS还提供了相应的类。接下来本例将讲解数据表的安装、卸载以及访问。 本例的文件夹结构如下: <pre> /modules/moddevsql /images /logo.png /sql /mysql.sql /index.php /xoops_version.php </pre> 其中xoops_version.php的内容如下: <pre> /modules/moddevsql/xoops_version.php <?php $modversion['name'] = "模块开发 - 数据库"; $modversion['version'] = 0.01; $modversion['description'] = "演示数据库的使用"; $modversion['author'] = <<<AUTHOR 胡争辉 QQ: 443089607 QQMail: hu_zhenghui@qq.com GTalk: huzhengh GMail: huzhengh@gmail.com Skype: huzhenghui" AUTHOR; $modversion['credits'] = ""; $modversion['license'] = "版权所有"; $modversion['image'] = "images/logo.png"; $modversion['dirname'] = "moddevsql"; $modversion["hasMain"] = 1; $modversion["sqlfile"]["mysql"] = "sql/mysql.sql"; $modversion["tables"][] = "moddevsql_contact"; ?> <pre> 其中sqlfile参数表示该模块包括创建数据表的脚本,键值[[mysql]]表示当前的XOOPS系统采用mysql数据库时所使用的创建数据表脚本的路径,该路径为相对于模块根目录的路径。 <pre> $modversion["sqlfile"]["mysql"] = "sql/mysql.sql"; </pre> 本例中的创建数据表脚本的内容如下。 <pre> /modules/moddevsql/sql/mysql.sql CREATE TABLE `moddevsql_contact` ( `id` int(10) unsigned NOT NULL auto_increment, `firstname` text NOT NULL, `lastname` text NOT NULL, `QQ` text NOT NULL, `QQMail` text NOT NULL, `GTalk` text NOT NULL, `GMail` text NOT NULL, `Skype` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; INSERT INTO `moddevsql_contact` (`id`, `firstname`, `lastname`, `QQ`, `QQMail`, `GTalk`, `GMail`, `Skype`) VALUES (1, '争辉', '胡', '443089607', 'hu_zhenghui@qq.com', 'huzhengh', 'huzhengh@gmail.com', 'huzhenghui'); </pre> 安装该模块时,XOOPS系统会自动解析该脚本,并为表名增加相应的前缀,从安装过程中可以看到创建的表以及插入的数据,如图1-20安装数据库模块所示。 <div> [[Image:xop77.jpg]] </div> 在安装带数据库的模块时,首先会查找数据库安装脚本。 SQL file found at D:/wamp/www/xoopstutorial/modules/moddevsql/sql/mysql.sql. 然后解析脚本并执行,如果脚本中包含创建表的脚本,XOOPS系统将自动为建表脚本的表名加上前缀,然后创建数据库,如果数据表创建成功,则输出相应的信息。 Table xoops_moddevsql_contact created. 如果脚本中包含向数据表插入数据的脚本,XOOPS系统将自动为插入脚本世纪末表名加上前缀,然后插入数据,如果插入数据成功,则输出相应的信息。 Data inserted to table xoops_moddevsql_contact. 模块成功安装后,模块中的程序就可以访问该数据表了,本例中的index.php文件的功能就是访问moddevsql_contact数据表,代码如下。 <pre> /modules/moddevsql/index.php <?php require_once dirname(__FILE__)."/../../mainfile.php"; /* @var $xoopsDB XoopsMySQLDatabaseProxy */ $sql = "SELECT * FROM ".$xoopsDB->prefix("moddevsql_contact"); $result = $xoopsDB->query($sql); include XOOPS_ROOT_PATH."/header.php"; ?> <table> <tr> <th> id </th> <th> first name </th> <th> last name </th> <th> QQ </th> <th> QQ Mail </th> <th> Google Talk </th> <th> Google Mail </th> <th> Skype </th> </tr> <?php while (false !== ($data = $xoopsDB->fetchArray($result))) { ?> <tr> <td> <?php echo htmlspecialchars($data["id"]); ?> </td> <td> <?php echo htmlspecialchars($data["firstname"]); ?> </td> <td> <?php echo htmlspecialchars($data["lastname"]); ?> </td> <td> <?php echo htmlspecialchars($data["QQ"]); ?> </td> <td> <a href="mailto:<?php echo htmlspecialchars($data["QQMail"]); ?>"> <?php echo htmlspecialchars($data["QQMail"]); ?> </a> </td> <td> <?php echo htmlspecialchars($data["GTalk"]); ?> </td> <td> <a href="mailto:<?php echo htmlspecialchars($data["GMail"]); ?>"> <?php echo htmlspecialchars($data["GMail"]); ?> </a> </td> <td> <?php echo htmlspecialchars($data["Skype"]); ?> </td> </tr> <?php } ?> </table> <?php include XOOPS_ROOT_PATH."/footer.php"; ?> </pre> 为了获取数据,首先要构造[[SQL]],代码如下。 <pre> $sql = "SELECT * FROM ".$xoopsDB->prefix("moddevsql_contact"); </pre> 这里用到了$xoopsDB类的prefix函数。$xoopsDB是XOOPS系统提供的数据库访问类,其中封装了与数据库交互的基本函数。由于 XOOPS系统自动为表增加前缀,因此在模块中使用表名时,需要调用$xoopsDB类的prefix函数为表增加前缀,prefix函数的定义如下。 <pre> /class/database/database.php function prefix($tablename='') {} </pre> 构造了SQL之后,就可以查询数据库并获得结果集。 <pre> $result = $xoopsDB->query($sql); </pre> 这里用到了$xoopsDB类的query函数,该函数用于在数据库执行查询,query函数的定义如下。 <pre> /class/database/mysqldatabase.php function query($sql, $limit=0, $start=0) {} </pre> query函数是对mysql_query函数的简单封装。获取了结果集后,就可以循环访问该结果集获取数据行了。 <pre> while (false !== ($data = $xoopsDB->fetchArray($result))) { </pre> 这里用到了$xoopsDB类的fetchArray函数,该函数用于获取结果集中的数据行。fetchArray函数的定义如下。 <pre> /class/database/mysqldatabase.php function fetchArray($result) {} </pre> fetchArray函数是对mysql_fetch_assoc函数的简单封装,获取的数据也是一个关联数组。该页面的运行效果如图1-21显示查询数据库的结果所示。 <div> [[Image:xop78.jpg]] </div> 由于XOOPS系统中既可以安装模块,还可以卸载模块,所以为安装模块的过程设置了脚本之外,还需要为卸载模块的过程设置所需要删除的数据表。相关信息也是定义在xoops_version.php文件中。 <pre> $modversion["tables"][] = "moddevsql_contact"; </pre> 其中键值tables代表在卸载时需要删除的数据表,该键值下面的每一项都是一个在卸载时需要删除的数据表的名称,在卸载过程中,XOOPS系统会自动为表名增加相应的前缀。并且会输出相应的信息,如图1-22卸载数据库模块所示。 <div> [[Image:xop79.jpg]] </div> 如果在xoops_version.php设置了tables键值,则XOOPS系统在卸载模块时会执行删除数据表的过程,并输出相应的信息。 Deleting module tables... 删除每个表也会输出相应的信息。 Table xoops_moddevsql_contact dropped.
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)