解析Extjs与php数据交互(增删查改)

代码如下:

<html>
<head>
//搜索暂时没做,数据是出来了,但是却没法显示
<link rel="stylesheet" type="text/css" href="./js/resources/css/ext-all.css"/>
<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">
Ext.QuickTips.init(); //初始化快速提示对象
function test() {
 Ext.Msg.alert('title','test-yii-ext');
}
function renderSex(value) {
    if (value == 'male') {
        return "<span style='color:red;font-weight:bold;'>红男</span><img src='./images/male.jpg' />";
    } else {
        return "<span style='color:green;font-weight:bold;'>绿女</span><img src='./images/female.png' />";
    }
}
function init()
{

//1、创建url访问类。
 var url = 'index.php';
 var _proxy = new Ext.data.HttpProxy({url:url});
 //2、数据问题参数
 var _jsonProperty = "totalProperty";
 //数据根目录参数
 var _jsonRoot = "root";
 //Record显示列表对应关系
 var _record = [{name:'id'},
             {name:'name'},
             {name:'pass'},
             {name:'sex'},
             {name:'email'}];
 //创建JSONReader对象,需要设置记录总数,根目录名称,记录映射
 var _reader = new Ext.data.JsonReader({totelPropetty:_jsonProperty,root:_jsonRoot},_record);
 /**
  * 封装一个客户端的Record对象缓存,为GridPanel提供数据入口
  * 需要两个必须的参数
  * 1、提供数据的地址:Proxy  代理类
  * 2、数据的读取方式:Reader 类,这里通过JsonReader读取
  */
 var _store = new Ext.data.Store({
  proxy:_proxy,
  reader:_reader
 });
 /**
 ColumnModel
 * 数据在页面上显示标题信息,
 * 顺序和Record对应
 * sortable 是否排序
 * dataIndex 进行对应的列,对应Record中的NAME
 *
 * handler方法中 第一个参数表示父类的对象,本例中为GridPanel对象。
 * 第二个参数表示第几行。
 * 第三个参数表示第几列。
 */
 var _cm = new Ext.grid.ColumnModel([
  new Ext.grid.RowNumberer(),
  new Ext.grid.CheckboxSelectionModel(),                                    
  {header:"ID",dataIndex:"id",width:50,sortable:true,menuDisabled:true},
  {header:"用户名",dataIndex:"name",width:80,sortable:true},
  {header:"密码",dataIndex:"pass",width:175,sortable:true},
  {header:"性别",dataIndex:"sex",width:145,sortable:true,renderer:renderSex},
  {header:"电子邮箱",dataIndex:"email",width:150,sortable:true}
 ]);
/////////////////////////搜索
 var logins = new Ext.form.FormPanel({
   id:'myform',//分配表单id
    title: '按用户名搜索',
    width: 400,
    defaultType: 'textfield',
    frame: true,
   // method: 'POST',
    collapsible: true,//可折叠
    bodyPadding: 5,

layout: 'column',//列布局

margin: '0 0 10 0',
    items: [{
        fieldLabel: '姓名',
        labelWidth: 40,
        id: 'name'
    }],
    buttons: [{
       // xtype: 'button',
        text: '搜索',
        margin: '0 0 0 5',
        handler: search
    },{
        // xtype: 'button',
        text: '隐藏',
        margin: '0 0 0 5',
        handler: hide
    }],

renderTo: "search"
 })
 logins.hide();
 function hide()
 {
  logins.hide();
  }
///////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////
 //获取数据
 var ds = new Ext.data.Store({

//proxy告诉我们从哪获得数据,Ext.data.MemoryProxy专门解析js变量
  //proxy:new Ext.data.MemoryProxy(data),
  //通过http获取数据
  proxy:new Ext.data.HttpProxy({
   url:url}),

//获取json数据
  reader:new Ext.data.JsonReader({
   totalProperty:'totalProperty',
   root:'root'
  },Ext.data.Record.create([
     {name:'id'},
     {name:'name'},
     {name:'pass'},
     {name:'sex'},
     {name:'email'}
  ]))
 });
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //自动分页
 var _pageSize = 16;
 var _toolbar = new Ext.PagingToolbar({
  store:ds,
  pageSize:_pageSize,
  displayInfo:true,
  displayMsg:'显示第{0}条到第{1}条记录,一共{2}条',
  emptyMsg:'暂无数据'
 });

//顶部工具栏按钮
 var t_toolbar = [
  {id:"addData",text:"用户添加",handler:addUser},"-",
       {id:"updateData",text:"用户修改",listeners:{"click":updateUser}},"-",
       {id:"deleteData",text:"删除选中用户",handler:removeUser},"-",
       {id:"test",text:"测试选中",handler:chkSelects},"-",
       {id:"search",text:"搜索",handler:jump}
    ];
 /**
  * GridPanel对象
  * 数据列表页面
  * 必须设置 Store 数据访问对象和标题栏显示信息
  * 即 Store和ColumnModel对象
  */
 var _grid = new Ext.grid.GridPanel({
  headerAsText: false, // 如果有标题栏, 隐藏标题栏
  collapsible: true,//可折叠
  height:500,
  width:1100,
  frame:true,//圆角边框
  store:ds,
  title:'测试yii整合Ext',
  cm:_cm,
  bbar : _toolbar,
  tbar : t_toolbar
 });
 ds.load({params:{start:0,limit:_pageSize}});
 _grid.render('test_id');

//_grid.render();
 /* 用户信息录入框,验证  */
 var fpanel;
 function f(){
 fpanel = new Ext.form.FormPanel
 ({   
  frame : true,//边框圆角并且有背景色   
  labelAlign : 'right',   
  waitMsgTarget : true,   
  autoScroll : true,   
  buttonAlign : 'center',   
  items : [
           {xtype:"hidden",name:"id"},
     {xtype:"textfield",fieldLabel:"用户名",name:"name",anchor : "-20",allowBlank:false,//是否允许为空
               blankText:"用户名不允许为空!",labelWidth : 20},
           {xtype:"radiogroup",fieldLabel:"性别",columns:2,allowBlank:false,blankText:"性别不允许为空!",items:[{boxLabel:'男',name:'sex',inputValue:'male'},{boxLabel:'女',name:'sex',inputValue:'female'}]},
     {xtype:"textfield",fieldLabel:"密码",name:"pass",allowBlank:false,//是否允许为空
                       blankText:"密码不允许为空!",anchor : "-20"},
     {xtype:"textarea",fieldLabel:"电子邮箱",name:"email",allowBlank:false,//是否允许为空
                           blankText:"邮箱不允许为空!",anchor : "-20"}
    ]
 });
}

var win;
 /* 增加用户  */
 function addUser()
 {
  f();

win = new Ext.Window
  ({    
   title:"新增用户",
   id:"win",
   //animEl:"fly",
   //layout:"fit",
   width:350,    
   height:250,    
   closeAction : "close",   
   plain : true,   
   modal : true,// 模态窗口,当打开当前窗口时,后面的内容被遮挡 
   bodyStyle:"padding:3px 0 0 3px",    
   layout:"form",    
   labelWidth:55,    
   items:[fpanel], 
   buttons:[
              {text:"保存", handler :function()
               {      
       //在保存的时候,因为Id值为空,所以不能转换到后台,后台报类型转换异常,可以将Id设值为0,     
       //在后台处理的时候,对于值为0的Id不获取      
               fpanel.findByType("hidden")[0].setValue(0);      
               fpanel.getForm().submit({
                      url : "add.php",
                      method : "POST",
                      waitMsg : "保存数据...",

success : function(form, action) { 
                          // 业务成功 
                       Ext.MessageBox.alert('提示','添加成功!');
                          win.close();
                          ds.load({params:{ start:0,limit:_pageSize} });
                      }, 
                      failure : function(form, action) { 
                          // 业务失败

obj = Ext.util.JSON.decode(action.response.responseText);
                      Ext.MessageBox.alert('提示', obj.errors.reason);
                      win.close();

ds.load({params:{ start:0,limit:_pageSize} });
                     } 
                 });
               }    
               },
               { 
                text:"重置",handler:function()
                {      
                 fpanel.getForm().reset();  
       }    
               }
            ]   
    })
  win.show();
  // 因为重复使用window,有可能在修改后fpanel中还存在数据,所以要先重置

fpanel.getForm().reset();
 }

/* 修改用户信息  */
 function updateUser()
 {
  var win_2;
  var a = 3;
  f();
  var selectedRecord = _grid.getSelectionModel().getSelected();   
  // 获得多个数据

if (selectedRecord == undefined || selectedRecord == null)
  {  
   Ext.MessageBox.alert("提示", "请先选择一条记录!"); 
  } else {  
   win_2 = new Ext.Window
   ({   
    title : "修改用户",   
    width : 350,   
    height : 250,   
    closeAction : "hide",   
    plain : true,   
    modal : true,// 模态窗口,当打开当前窗口时,后面的内容被遮挡   
    bodyStyle : "padding:3px 0 0 3px",   
    //layout : "form",
    layout:"fit",   
    labelWidth : 55,   
    items : [fpanel],  
    buttons : [
               {text:"修改", handler:function()
        {fpanel.getForm().submit
                  ({       
          url:"edit.php",          
          method:"POST",          
          waitMsg:"数据修改中...",          
          success:function(form,action)
          {           
           win_2.hide();           
           Ext.MessageBox.alert("提示","数据修改成功");        
           _ds.reload();          
          },
          failure : function(form, action) { 
           win_2.hide();
           Ext.MessageBox.alert("提示","<font color='red'>数据修改失败</font>");
                       _ds.load();
                      }   
                  });      
        }     
               },
               {
                text : "重置",handler:function()
                {
                 fpanel.getForm().reset();
                }     
               },
               {
                text: '关闭',handler: function()
                {
                        win_2.close();
                 }
               }
              ]  
      });
  }
  win_2.show();
   // 将选中的数据load到window中显示  
  //alert(win_2);
  win_2.getComponent(0).getForm().loadRecord(selectedRecord);

}

/* 删除用户  */
 function removeUser(btn)
 { 
  var selectedRecord = _grid.getSelectionModel().getSelected(); 
  if (selectedRecord == undefined || selectedRecord == null)
  {  
   Ext.MessageBox.alert("提示", "请先选择一条记录!"); 
  } else { 
   Ext.MessageBox.confirm("提示信息", "确定要删除吗?", function(btn)
   {   
    if (btn == "yes")
    {    
     Ext.Ajax.request(
     {       
      url:"del.php",       
      method:"POST",       
      params:{id : selectedRecord.data.id},
      success:function(request, options)
      {        
       var jsonRequest = Ext.util.JSON.decode(request.responseText);

if (jsonRequest == true)
       {
        Ext.Msg.alert("提示信息", "删除成功");
        _grid.getStore().remove(selectedRecord);         
        ds.reload();        
       } else {         
        Ext.Msg.alert("提示信息", "<font color='red'>删除失败</font>");        
       }       
      },       
      failure : function()
      {        
       Ext.MessageBox.show
       ({           
        title : "提示消息",           
        msg : "删除时发生错误"          
       });       
      }      
     });   
    }  
   }) 
  }
 }

function chkSelects()
 { 
  var selects = _grid.getSelectionModel().getSelections(); 
  alert("选中的总数为:"+selects.length);

}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 function search(){
  //fpanel.GridPanel().reset();init();

logins.getForm().submit({ //提交表单事件

//clientValidation: true,
    method:"POST", //提交方式(POSTT和GET)
    url:"search.php", //表单提交URL地址
    waitMsg:"请稍等,正在搜索...", //提交未完成提示框内容
    waitTitle:"正在搜索", //提示框标题信息
   });
  var url = 'search.php';
  // store.proxy=new Ext.data.HttpProxy({url:url}); 
  ds.reload();
   //_proxy = new Ext.data.HttpProxy({url:url}); 
   //ds.load({params:{start:0,limit:_pageSize}});
  //_grid.render('test_id');

}
 function jump()
 {
  logins.show();
 }
 //////////////////////////////

}
Ext.onReady(init);
</script>
</head>
<body>
<p style="height:10px;"></p>
<div id="test_id"></div>
<div id="search"></div>
</body>
</html>

Index.php文件


代码如下:

<?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文件如下:


代码如下:

<?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文件如下:


代码如下:

<?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');

(0)

相关推荐

  • PHP与JavaScript针对Cookie的读写、交互操作方法详解

    本文实例讲述了PHP与JavaScript针对Cookie的读写.交互操作方法.分享给大家供大家参考,具体如下: 下面的例子列出几种情形交互场景,列出JS和php交互的方法.总结下,以免日后再为cookie问题困扰. <?php setcookie('php_cn_ck','php_中文_cookie'); setcookie('php_en_ck','php_english_cookie'); ?> <script src="cookie.js"></s

  • php和javascript之间变量的传递实现代码

    PHP variable to Javascript variable: 复制代码 代码如下: <?php $myvar=10; ?> <script type="text/javascript"> jsvar = <?php echo $myvar; ?>; document.write(jsvar); // Test to see if its prints 10: </script> Form variable to Javascr

  • js获取php变量的实现代码

    例如下面一段j代码: 复制代码 代码如下: <script type="text/javascript">var arr="<?php echo $arr;?>"</script>

  • php变量与JS变量实现不通过跳转直接交互的方法

    本文实例讲述了php变量与JS变量实现不通过跳转直接交互的方法.分享给大家供大家参考,具体如下: 大家都知道如果JS变量要获取后台传来的php变量可以这么写: <?php $aaa = '111';?> var aaa = <?php echo $aaa;?>; 那么我们如何将js变量的值直接付给php变量呢 第一种方法也是最常见的方法: 无刷新:使用ajax传参 有刷新:直接跟表单一起提交或者直接跟在跳转链接的后面. 现在我来说一下第二种传值方式: 示例为对js变量进行日期处理:

  • PHP变量赋值、代入给JavaScript中的变量

    复制代码 代码如下: $(document).ready(function(){ <?php $f="'name'"?>     var t=<?php echo $f?>;     alert(t)    }) 或 复制代码 代码如下: $(document).ready(function(){ <?php $f="name"?>     var t="<?php echo $f?>";    

  • 用php实现像JSP,ASP里Application那样的全局变量

    复制代码 代码如下: <?php /**  * 功能:实现像JSP,ASP里Application那样的全局变量  * author: [url]www.itzg.net[/url]  * version: 1.0  * 版权:如许转载请保留版权声明  */ /*+----------------example---------------------- require_once("Application.php"); $arr = array(0=>"Hi&qu

  • PHP JSON格式数据交互实例代码详解

    在PHP中解析JSON主要用到json_encode和json_decode两个PHP JSON函数,比PHP解析XML方便很多,下面详细介绍下PHP JSON的使用.JSON基础介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON主要有两种结构: "名称/值"对的集合,在PHP中可以理解为关联数组 (associative array). 值的有序列表(An ordered list of values).在PHP中可以理解为

  • php解析http获取的json字符串变量总是空白null

    今天同事项目中遇到一个问题,通过http接口获取的json字符串使用json_decode始终无法正确解析,返回空白. 直接把结果字符串复制出来手动创建一个变量却正常,在前端js也能解析,搞了半天不得其解,借助强大的谷歌解决了问题,答案是接口吐出的结果包含有BOM头,BOM头这个东西可谓是php的死敌啊 不说了,直接上解决办法: 复制代码 代码如下: if (substr($return, 0,3) == pack("CCC",0xef,0xbb,0xbf)) {     $retur

  • php后台程序与Javascript的两种交互方式

    方法一:通过Cookie交互. 一共是三个文件,分别为:index.htm,action.php,main.htm 原理为前台页面main.htm和后台action.php通过页面框架 index.htm组织起来,将action.php的页面宽度设为0,这样并不影响显示.action.php将信息放入cookie中,main.htm通过读取 cookie来实现交互.在main.htm中也可以通过重新读取action.php 来实现控制后台CGI程序. index.htm 复制代码 代码如下: <

  • PHP与javascript实现变量交互的示例代码

    本例是PHP和javascript交互的例子,php中的值赋给js变量中,前提是这个php变量必须有值才行,就算是假分支中. 比如php中的$flags在本例中为true,如果js中false语句写成:$title_1.innerHTML = "<?php echo $title;?>";就会出错,因为$title在php中被赋值为数组 尽管在php的flags=="false";$title是一个字符串,情况是$title是数组,而数组在字符串中也是不

  • php使用json_encode对变量json编码

    在 ajax 横行的今天,json 顺理成章地成为了前后端交互一个极其重要的工具.对于 PHP 来说,通常使用 json_encode 方法将一个 PHP 组数,转换成前端可以解析的 json 字符串,这也是 PHP 手册上描述的内容,但事实是这样的吗?看看下面这段代码: 复制代码 代码如下: $a = array( 'Jack' , 'Sam' , 'Tom' );echo json_encode( $a ); 当 JavaScript 请求到上面的代码,PHP 将解析数组 $a 为 json

随机推荐