AJAX for PHP简单表数据查询实例

本文介绍使用AJAXforPHP进行简单表数据查询的方法。包括搭建开发环境、编写PHP服务端代码实现数据查询及分页功能,并展示了如何通过AJAXWebShop3可视化工具配置界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AJAX for PHP简单表数据查询实例

功能介绍:AJAX WebShop 3Beta2开始支持PHP的开发了,AJAX WebShop集成了PHP5的开发环境,因此不需要额外安装配置PHP,本例将实现一个AJAX for PHP的简单数据查询操作,这个例子是单表操作,也可以实现主从表的数据查询。
.数据表说明
例子采用了Access数据库,当然你也可以使用mysql 或其他类型数据库,数据库名称为:demo.mdb,表名为product,创建字段分别是PRODUCT_ID, PRODUCT_NAME, PRODUCT_PRICE, PRODUCT_AREA
.实现数据查询
首先启动AJAX WebShop 3,在File中选择“New Project”建立新工程。





设置好New Project后,再打开“File”选择“New .PHP Service”,在弹出的对话框内目录输入子目录demo,设置”Class Name”为:simple_query;在ServiceType中选择“Query Data”点击“OK“后,向导将按默认模板生成php单表查询的代码。


输入以下数据库连接及sql代码(demo.mdb文件放在当前代码目录下)
$connstr = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath($_SERVER['PATH_TRANSLATED'])."/demo.mdb";
$sql     = "select * from product";
$sqlcount     =   "select count(*) from product";

  
分析testquery.php代码,主要的实现如下:
1.    
循环数据结构,用addField$xmlRequest填充字段(列):
         //fill metadata fields
         for ($i=1; $i<=$fields_count; $i++) {
             $fieldname = odbc_field_name($result_id, $i);
             $datatype   = odbc_field_type($result_id, $i);
             $xmlRequest->addField($fieldname, $datatype);
         }

2.
循环结果集记录,调用Append() SetValue方法,向xmlrequest每一行对应字段填充数据:
         //fill data rows
         for ($i=0; $i<$record_count; $i++) {
             odbc_fetch_row($result_id);
             if($i>=$recNo && $i<$recNo+$maxRows) {
                 $xmlRequest->append();
                 for ($j=1; $j<=$fields_count; $j++) {
                     $xmlRequest->setValueByIndex($j-1, odbc_result($result_id, $j));
                 }
             }
             if($i>=$recNo+$maxRows) break;
         }
3
     设置分页的相关参数,$xmlRequest->recNo是开始记录,$xmlRequest->maxRows是每页记录数,通过执行"select count(*) from product"得到$record_count记录总数:
         $sqlcount     =   "select count(*) from product";
         $result_id     = @odbc_do($connid, $sqlcount);
         if($result_id==null)
           throw new Exception($sqlcount);
         odbc_fetch_row($result_id);
         $record_count =   odbc_result($result_id,1);
         $xmlRequest->setRecordCount($record_count);
         $recNo         = $xmlRequest->recNo;
         $maxRows       = $xmlRequest->maxRows;
         if($maxRows==-1) $maxRows = $record_count;
4
     后台数据访问类建立好后,在“File”中选择“New Page”打开“New Page”对话框在“File Name”中设置页面名称,如本例“simple.htm”点击ok完成设置。


  






还有很多功能可以很简单的实现,这里就不一一介绍了,以后有时间我再说说如何做数据提交、分页及更复杂的主从表等数据操作。
下面附上详细的代码清单,供读者参考。
<?php
/**
* Title:
* Description:
* Copyright: Copyright (c) 2006
*
* $Author:
* $Date:
* $Revision:
*/
     header("Content-Type:text/xml");
     require_once('../joyistar/XmlRequest.php');
     $postdata   = file_get_contents("php://input");
     $xmlRequest = new XmlRequest();
     $xmlRequest->open($postdata);
     try {
         $connstr = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath($_SERVER['PATH_TRANSLATED'])."/demo.mdb";
         $sql     = "select * from product";
         $connid   = @odbc_connect($connstr,"","",SQL_CUR_USE_ODBC ) or die ("db connect error!");

         $sqlcount     =   "select count(*) from product";
         $result_id     = @odbc_do($connid, $sqlcount);
         if($result_id==null)
           throw new Exception($sqlcount);
         odbc_fetch_row($result_id);
         $record_count =   odbc_result($result_id,1);
         $xmlRequest->setRecordCount($record_count);
         $recNo         = $xmlRequest->recNo;
         $maxRows       = $xmlRequest->maxRows;
         if($maxRows==-1) $maxRows = $record_count;

         $result_id   = @odbc_do($connid, $sql);
         if($result_id==null)
           throw new Exception($sql);
         $fields_count = odbc_num_fields($result_id);
         //fill metadata fields
         for ($i=1; $i<=$fields_count; $i++) {
             $fieldname = odbc_field_name($result_id, $i);
             $datatype   = odbc_field_type($result_id, $i);
             $xmlRequest->addField($fieldname, $datatype);
         }          
         //fill data rows
         for ($i=0; $i<$record_count; $i++) {
             odbc_fetch_row($result_id);
             if($i>=$recNo && $i<$recNo+$maxRows) {
                 $xmlRequest->append();
                 for ($j=1; $j<=$fields_count; $j++) {
                     $xmlRequest->setValueByIndex($j-1, odbc_result($result_id, $j));
                 }
             }
             if($i>=$recNo+$maxRows) break;
         }
         odbc_close($connid);

           echo $xmlRequest->getXml();
     }
     catch (Exception $e) {
         $xmlRequest->setError($e->getTraceAsString());
           echo $xmlRequest->getXml();
         throw $e;
     }
?>

设置好数据连接后,“DataSet1“Active”属性设置为“true”如图;
  同时选择DBGrid1DBNavigatorDBEdit等界面对象,在DataSet属性中选择数据源 “DataSet 1” 。完成数据库连接;另外,DBEdit需要选择设置DataField属性,指定要绑定的字段,点击“run”查看运行效果。

webshop的元件选项板“Data Access ”“DBControl”中,拖拉向表单加入DataSet和数据感应控件DBNavigatorDBEditDBGrid等,简单地可视化拖拉建立界面,点击组件,会在右侧出现相应属性。
选择DataSet1,在“OpenURL”属性中添加web service“demo/simple_query.php”
打开WebShop中的“Run”启动”Start WebServer”服务,Apache HttpServer将启动。
成功启动 “WebServer”服务后,在DataSet1“Fields”属性中添加数据字段,方法为点击右侧“…”弹出Fields对话框,在页面单击右键,在弹出选项中选择“Add Field”在弹出的“Field List”中点击 “Refresh”会在列表中显示数据表 “Product ”的字段名,全部选中后,点击“ok”完成设置(操作见下图)。

在弹出的New Project对话框中设置projectname web server本例中设置projectname为:php_example和设置web server为:PHP。如果要修改工程路径,请在Directory中设置要存放的路径。

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值