代码如下:
//搜索暂时没做,数据是出来了,但是却没法显示
<script type="text/javascript" src="./js/jquery.js"></script>
<script type="text/javascript" src="./js/ext-base.js"></script>
<script type="text/javascript" src="./js/ext-all.js"></script>
<script type="text/javascript" src="./js/ext-lang-zh_cn-min.js"></script>
<script type="text/javascript"><br>ext.quicktips.init(); //初始化快速提示对象<br>function test() {<br> ext.msg.alert('title','test-yii-ext');<br>}<br>function rendersex(value) {<br> if (value == 'male') {<br> return "<span style='color:red;font-weight:bold;'>红男<img src='./images/male.jpg' / alt="解析Extjs与php数据交互(增删查改)_PHP" >";<br> } else {<br> return "<span style="max-width:90%">绿女<img src='./images/female.png' / alt="解析Extjs与php数据交互(增删查改)_PHP" >";<br> }<br>}<br>function init() <br>{<br><br> //1、创建url访问类。<br> var url = 'index.<a style="max-width:90%" title= "php" href="https://www.php.cn/zt/15714.html" target="_blank">php';<br> var _proxy = new ext.data.httpproxy({url:url});<br> //2、数据问题参数<br> var _jsonproperty = "totalproperty";<br> //数据根目录参数<br> var _jsonroot = "root";<br> //record显示列表对应关系<br> var _record = [{name:'id'},<br> {name:'name'},<br> {name:'pass'},<br> {name:'sex'},<br> {name:'email'}];<br> //创建jsonreader对象,需要设置记录总数,根目录名称,记录映射<br> var _reader = new ext.data.jsonreader({totelpropetty:_jsonproperty,root:_jsonroot},_record);<br> /**<br> * 封装一个客户端的record对象缓存,为gridpanel提供数据入口<br> * 需要两个必须的参数<br> * 1、提供数据的地址:proxy 代理类<br> * 2、数据的读取方式:reader 类,这里通过jsonreader读取<br> */<br> var _store = new ext.data.store({<br> proxy:_proxy,<br> reader:_reader<br> });<br> /**<br> columnmodel<br> * 数据在页面上显示标题信息,<br> * 顺序和record对应<br> * sortable 是否排序<br> * dataindex 进行对应的列,对应record中的name<br> * <br> * handler方法中 第一个参数表示父类的对象,本例中为gridpanel对象。<br> * 第二个参数表示第几行。<br> * 第三个参数表示第几列。<br> */<br> var _cm = new ext.grid.columnmodel([<br> new ext.grid.rownumberer(),<br> new ext.grid.checkboxselectionmodel(), <br> {header:"id",dataindex:"id",width:50,sortable:true,menudisabled:true},<br> {header:"用户名",dataindex:"name",width:80,sortable:true},<br> {header:"密码",dataindex:"pass",width:175,sortable:true},<br> {header:"性别",dataindex:"sex",width:145,sortable:true,renderer:rendersex},<br> {header:"电子邮箱",dataindex:"email",width:150,sortable:true}<br> ]);<br>/////////////////////////搜索<br> var logins = new ext.form.formpanel({<br> id:'myform',//分配表单id<br> title: '按用户名搜索',<br> width: 400,<br> defaulttype: 'textfield',<br> frame: true,<br> // method: 'post',<br> collapsible: true,//可折叠<br> bodypadding: 5,<br><br> layout: 'column',//列布局<br><br> margin: '0 0 10 0',<br> items: [{<br> fieldlabel: '姓名',<br> labelwidth: 40,<br> id: 'name'<br> }],<br> buttons: [{<br> // xtype: 'button',<br> text: '搜索',<br> margin: '0 0 0 5',<br> handler: search<br> },{<br> // xtype: 'button',<br> text: '隐藏',<br> margin: '0 0 0 5',<br> handler: hide<br> }],<br><br> renderto: "search"<br> })<br> logins.hide();<br> function hide()<br> {<br> logins.hide();<br> }<br>///////////////////////////////////////////////////////<br><br> ///////////////////////////////////////////////////////////////////////////////////////////<br> //获取数据<br> var ds = new ext.data.store({<br><br> //proxy告诉我们从哪获得数据,ext.data.memoryproxy专门解析js变量<br> //proxy:new ext.data.memoryproxy(data),<br> //通过http获取数据<br> proxy:new ext.data.httpproxy({<br> url:url}),<br><br> //获取json数据<br> reader:new ext.data.jsonreader({<br> totalproperty:'totalproperty',<br> root:'root'<br> },ext.data.record.create([<br> {name:'id'},<br> {name:'name'},<br> {name:'pass'},<br> {name:'sex'},<br> {name:'email'}<br> ]))<br> });<br>//////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br> //自动分页<br> var _pagesize = 16;<br> var _toolbar = new ext.pagingtoolbar({<br> store:ds,<br> pagesize:_pagesize,<br> displayinfo:true,<br> displaymsg:'显示第{0}条到第{1}条记录,一共{2}条',<br> emptymsg:'暂无数据'<br> });<br><br> //顶部工具栏按钮<br> var t_toolbar = [<br> {id:"adddata",text:"用户添加",handler:adduser},"-",<br> {id:"updatedata",text:"用户修改",listeners:{"click":updateuser}},"-",<br> {id:"deletedata",text:"删除选中用户",handler:removeuser},"-",<br> {id:"test",text:"测试选中",handler:chkselects},"-",<br> {id:"search",text:"搜索",handler:jump}<br> ];<br> /**<br> * gridpanel对象<br> * 数据列表页面<br> * 必须设置 store 数据访问对象和标题栏显示信息<br> * 即 store和columnmodel对象<br> */<br> var _grid = new ext.grid.gridpanel({<br> headerastext: false, // 如果有标题栏, 隐藏标题栏<br> collapsible: true,//可折叠<br> height:500,<br> width:1100,<br> frame:true,//圆角边框<br> store:ds,<br> title:'测试yii整合ext',<br> cm:_cm,<br> bbar : _toolbar,<br> tbar : t_toolbar<br> });<br> ds.load({params:{start:0,limit:_pagesize}});<br> _grid.render('test_id');<br><br> //_grid.render();<br> /* 用户信息录入框,验证 */<br> var fpanel;<br> function f(){<br> fpanel = new ext.form.formpanel<br> ({ <br> frame : true,//边框圆角并且有背景色 <br> labelalign : 'right', <br> waitmsgtarget : true, <br> autoscroll : true, <br> buttonalign : 'center', <br> items : [<br> {xtype:"hidden",name:"id"}, <br> {xtype:"textfield",fieldlabel:"用户名",name:"name",anchor : "-20",allowblank:false,//是否允许为空<br> blanktext:"用户名不允许为空!",labelwidth : 20},<br> {xtype:"radiogroup",fieldlabel:"性别",columns:2,allowblank:false,blanktext:"性别不允许为空!",items:[{boxlabel:'男',name:'sex',inputvalue:'male'},{boxlabel:'女',name:'sex',inputvalue:'female'}]},<br> {xtype:"textfield",fieldlabel:"密码",name:"pass",allowblank:false,//是否允许为空<br> blanktext:"密码不允许为空!",anchor : "-20"},<br> {xtype:"textarea",fieldlabel:"电子邮箱",name:"email",allowblank:false,//是否允许为空<br> blanktext:"邮箱不允许为空!",anchor : "-20"}<br> ]<br> });<br>}<br><br> var win;<br> /* 增加用户 */<br> function adduser() <br> {<br> f();<br><br> win = new ext.window<br> ({ <br> title:"新增用户",<br> id:"win",<br> //animel:"fly",<br> //layout:"fit",<br> width:350, <br> height:250, <br> closeaction : "close", <br> plain : true, <br> modal : true,// 模态窗口,当打开当前窗口时,后面的内容被遮挡 <br> bodystyle:"padding:3px 0 0 3px", <br> layout:"form", <br> labelwidth:55, <br> items:[fpanel], <br> buttons:[<br> {text:"保存", handler :function()<br> { <br> //在保存的时候,因为id值为空,所以不能转换到后台,后台报类型转换异常,可以将id设值为0, <br> //在后台处理的时候,对于值为0的id不获取 <br> fpanel.findbytype("hidden")[0].setvalue(0); <br> fpanel.getform().submit({<br> url : "add.php",<br> method : "post",<br> waitmsg : "保存数据...",<br><br> success : function(form, action) { <br> // 业务成功 <br> ext.messagebox.alert('提示','添加成功!');<br> win.close();<br> ds.load({params:{ start:0,limit:_pagesize} });<br> }, <br> failure : function(form, action) { <br> // 业务失败<br><br> <br> obj = ext.util.json.decode(action.response.responsetext);<br> ext.messagebox.alert('提示', obj.errors.reason);<br> win.close();<br><br> ds.load({params:{ start:0,limit:_pagesize} });<br> } <br> }); <br> } <br> },<br> { <br> text:"重置",handler:function()<br> { <br> fpanel.getform().reset(); <br> } <br> }<br> ] <br> })<br> win.show();<br> // 因为重复使用window,有可能在修改后fpanel中还存在数据,所以要先重置<br><br> fpanel.getform().reset();<br> }<br><br> <br> /* 修改用户信息 */<br> function updateuser() <br> {<br> var win_2;<br> var a = 3;<br> f();<br> var selectedrecord = _grid.getselectionmodel().getselected(); <br> // 获得多个数据 <br><br> if (selectedrecord == undefined || selectedrecord == null)<br> { <br> ext.messagebox.alert("提示", "请先选择一条记录!"); <br> } else { <br> win_2 = new ext.window<br> ({ <br> title : "修改用户", <br> width : 350, <br> height : 250, <br> closeaction : "hide", <br> plain : true, <br> modal : true,// 模态窗口,当打开当前窗口时,后面的内容被遮挡 <br> bodystyle : "padding:3px 0 0 3px", <br> //layout : "form",<br> layout:"fit", <br> labelwidth : 55, <br> items : [fpanel], <br> buttons : [<br> {text:"修改", handler:function() <br> {fpanel.getform().submit<br> ({ <br> url:"edit.php", <br> method:"post", <br> waitmsg:"数据修改中...", <br> success:function(form,action)<br> { <br> win_2.hide(); <br> ext.messagebox.alert("提示","数据修改成功"); <br> _ds.reload(); <br> },<br> failure : function(form, action) { <br> win_2.hide();<br> ext.messagebox.alert("提示","<font color='red'>数据修改失败");<br> _ds.load();<br> } <br> }); <br> } <br> },<br> {<br> text : "重置",handler:function() <br> {<br> fpanel.getform().reset();<br> } <br> },<br> {<br> text: '关闭',handler: function()<br> {<br> win_2.close();<br> }<br> }<br> ] <br> });<br> }<br> win_2.show();<br> // 将选中的数据load到window中显示 <br> //alert(win_2);<br> win_2.getcomponent(0).getform().loadrecord(selectedrecord); <br><br> }<br><br> /* 删除用户 */<br> function removeuser(btn) <br> { <br> var selectedrecord = _grid.getselectionmodel().getselected(); <br> if (selectedrecord == undefined || selectedrecord == null) <br> { <br> ext.messagebox.alert("提示", "请先选择一条记录!"); <br> } else { <br> ext.messagebox.confirm("提示信息", "确定要删除吗?", function(btn) <br> { <br> if (btn == "yes") <br> { <br> ext.ajax.request(<br> { <br> url:"del.php", <br> method:"post", <br> params:{id : selectedrecord.data.id},<br> success:function(request, options)<br> { <br> var jsonrequest = ext.util.json.decode(request.responsetext);<br><br> if (jsonrequest == true) <br> {<br> ext.msg.alert("提示信息", "删除成功");<br> _grid.getstore().remove(selectedrecord); <br> ds.reload(); <br> } else { <br> ext.msg.alert("提示信息", "<font color='red'>删除失败"); <br> } <br> }, <br> failure : function() <br> { <br> ext.messagebox.show<br> ({ <br> title : "提示消息", <br> msg : "删除时发生错误" <br> }); <br> } <br> }); <br> } <br> }) <br> }<br> }<br><br> <br><br> function chkselects()<br> { <br> var selects = _grid.getselectionmodel().getselections(); <br> alert("选中的总数为:"+selects.length); <br><br> }<br>////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br> function search(){<br> //fpanel.gridpanel().reset();init();<br><br> logins.getform().submit({ //提交表单事件<br><br> //clientvalidation: true,<br> method:"post", //提交方式(postt和get)<br> url:"search.php", //表单提交url地址<br> waitmsg:"请稍等,正在搜索...", //提交未完成提示框内容<br> waittitle:"正在搜索", //提示框标题信息<br> });<br> var url = 'search.php';<br> // store.proxy=new ext.data.httpproxy({url:url}); <br> ds.reload();<br> //_proxy = new ext.data.httpproxy({url:url}); <br> //ds.load({params:{start:0,limit:_pagesize}});<br> //_grid.render('test_id');<br><br> }<br> function jump()<br> {<br> logins.show();<br> }<br> //////////////////////////////<br><br>}<br>ext.onready(init);<br></script>
Index.php文件
复制代码 代码如下:
header("Content:text/html;charset=utf-8");
$link = mysql_connect("localhost","root","123456")or die('error'.mysql_error());
mysql_select_db("stu",$link);
mysql_query('set names utf8');
$sql = "select count(*) num from men";
$num = mysql_query($sql);
$count = mysql_fetch_array($num);
$start = $_POST['start'];
$limit = $_POST['limit'];
$sql2 = "SELECT * FROM men limit {$start},{$limit}";
/*
if (!$_POST)
{
$sql2 = "SELECT * FROM member";
} else {
$sql2 = "select * from member limit {$start},{$limit}";
}
*/
$data = array();
$result = mysql_query($sql2);
while(!!$info = mysql_fetch_array($result,MYSQL_ASSOC))
{
$data[] = $info;
}
//$j = json_encode($data);
$j = "{totalProperty:100,root:".json_encode($data)."}";
echo $j;
?>
Add.php文件如下:
复制代码 代码如下:
header("Content:text/html;charset=utf-8");
$link = mysql_connect("localhost","root","123456")or die('error'.mysql_error());
mysql_select_db("stu",$link);
mysql_query('set names utf8');
$name = $_POST['username'];
$pwd = $_POST['password'];
$time = $_POST['regTime'];
$email = $_POST['email'];
/*
$name = 'aaaa';
$pwd = 'aaaa';
$time = '2011-12-31';
$email = 'aaaa';*/
$sql = "INSERT INTO men (username,password,regTime,email) VALUES ('{$name}','{$pwd}','{$time}','{$email}')";
//mysql_query($sql)
if (mysql_query($sql))
{
echo 'ok';
}
?>
Del.php文件如下:
复制代码 代码如下:
header("Content:text/html;charset=utf-8");
$link = mysql_connect("localhost","root","123456")or die('error'.mysql_error());
mysql_select_db("stu",$link);
mysql_query('set names utf8');
$id = $_POST['id'];
$sql = "DELETE FROM men WHERE id={$id}";
if (mysql_query($sql))
{
echo 1;
} else {
echo 0;
}
?>
数据库文件men.sql
数据库名叫:stu
表名为:men
可以把下面的复制到一个文本文档里,然后新建stu数据库,导入就可以。
复制代码 代码如下:
-- phpMyAdmin SQL Dump
-- version 2.11.2.1
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2012 年 01 月 11 日 10:02
-- 服务器版本: 5.0.45
-- PHP 版本: 5.2.5
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- 数据库: `stu`
--
-- --------------------------------------------------------
--
-- 表的结构 `men`
--
CREATE TABLE `men` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(50) collate utf8_unicode_ci NOT NULL,
`pass` varchar(32) collate utf8_unicode_ci NOT NULL,
`sex` varchar(10) collate utf8_unicode_ci NOT NULL,
`email` varchar(50) collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=28 ;
--
-- 导出表中的数据 `men`
--
INSERT INTO `men` (`id`, `name`, `pass`, `sex`, `email`) VALUES
(1, '赵四', '123456', 'female', '646588973@qq.com'),
(2, '测试修改', '123456', 'male', 'test@qq.com'),
(8, '赵勇2', '123456', 'male', 'sfsf@qq.com'),
(9, '赵勇3', '123456', 'male', 'sfsf@qq.com'),
(10, '赵勇5', '123456', 'male', 'sfsf@qq.com'),
(11, 'asdfsf', 'asfsfsf', 'male', 'safsf'),
(18, '12', '123', 'male', '123'),
(19, '123', '123', 'female', '123'),
(20, '123123', '123', 'female', '123'),
(21, 'safdsdf', 'sdf', 'female', 'sdf'),
(22, 'sdfsdf', 'sdfsdf', 'male', 'sdf'),
(23, 'test', 'test', 'male', 'test@qq.com'),
(24, 'saf', 'asdfs', 'male', 'asdf'),
(25, 'dfgdfg', 'dfgdfg', 'male', 'dfgdfg'),
(26, 'ertert', 'erter', 'male', 'tertert'),
(27, '1asdf', 'sdf', 'male', 'sdf');











