zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

PHP数据 解析 交互 增删 Extjs 查改
2023-06-13 09:15:02 时间
复制代码代码如下:

<html>
<head>
//搜索暂时没做,数据是出来了,但是却没法显示
<linkrel="stylesheet"type="text/css"href="./js/resources/css/ext-all.css"/>
<scripttype="text/javascript"src="./js/jquery.js"></script>
<scripttype="text/javascript"src="./js/ext-base.js"></script>
<scripttype="text/javascript"src="./js/ext-all.js"></script>
<scripttype="text/javascript"src="./js/ext-lang-zh_CN-min.js"></script>
<scripttype="text/javascript">
Ext.QuickTips.init();//初始化快速提示对象
functiontest(){
 Ext.Msg.alert("title","test-yii-ext");
}
functionrenderSex(value){
   if(value=="male"){
       return"<spanstyle="color:red;font-weight:bold;">红男</span><imgsrc="./images/male.jpg"/>";
   }else{
       return"<spanstyle="color:green;font-weight:bold;">绿女</span><imgsrc="./images/female.png"/>";
   }
}
functioninit()
{

 //1、创建url访问类。
 varurl="index.php";
 var_proxy=newExt.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=newExt.data.JsonReader({totelPropetty:_jsonProperty,root:_jsonRoot},_record);
 /**
 *封装一个客户端的Record对象缓存,为GridPanel提供数据入口
 *需要两个必须的参数
 *1、提供数据的地址:Proxy 代理类
 *2、数据的读取方式:Reader类,这里通过JsonReader读取
 */
 var_store=newExt.data.Store({
  proxy:_proxy,
  reader:_reader
 });
 /**
 ColumnModel
 *数据在页面上显示标题信息,
 *顺序和Record对应
 *sortable是否排序
 *dataIndex进行对应的列,对应Record中的NAME
 *
 *handler方法中第一个参数表示父类的对象,本例中为GridPanel对象。
 *第二个参数表示第几行。
 *第三个参数表示第几列。
 */
 var_cm=newExt.grid.ColumnModel([
  newExt.grid.RowNumberer(),
  newExt.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}
 ]);
/////////////////////////搜索
 varlogins=newExt.form.FormPanel({
  id:"myform",//分配表单id
   title:"按用户名搜索",
   width:400,
   defaultType:"textfield",
   frame:true,
  //method:"POST",
   collapsible:true,//可折叠
   bodyPadding:5,

   layout:"column",//列布局

   margin:"00100",
   items:[{
       fieldLabel:"姓名",
       labelWidth:40,
       id:"name"
   }],
   buttons:[{
      //xtype:"button",
       text:"搜索",
       margin:"0005",
       handler:search
   },{
       //xtype:"button",
       text:"隐藏",
       margin:"0005",
       handler:hide
   }],

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

 ///////////////////////////////////////////////////////////////////////////////////////////
 //获取数据
 vards=newExt.data.Store({

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

  //获取json数据
  reader:newExt.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=newExt.PagingToolbar({
  store:ds,
  pageSize:_pageSize,
  displayInfo:true,
  displayMsg:"显示第{0}条到第{1}条记录,一共{2}条",
  emptyMsg:"暂无数据"
 });

 //顶部工具栏按钮
 vart_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=newExt.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();
 /*用户信息录入框,验证 */
 varfpanel;
 functionf(){
 fpanel=newExt.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"}
    ]
 });
}

 varwin;
 /*增加用户 */
 functionaddUser()
 {
  f();

  win=newExt.Window
  ({    
   title:"新增用户",
   id:"win",
   //animEl:"fly",
   //layout:"fit",
   width:350,    
   height:250,    
   closeAction:"close",   
   plain:true,   
   modal:true,//模态窗口,当打开当前窗口时,后面的内容被遮挡 
   bodyStyle:"padding:3px003px",    
   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();
 }

 
 /*修改用户信息 */
 functionupdateUser()
 {
  varwin_2;
  vara=3;
  f();
  varselectedRecord=_grid.getSelectionModel().getSelected();   
  //获得多个数据

  if(selectedRecord==undefined||selectedRecord==null)
  {  
   Ext.MessageBox.alert("提示","请先选择一条记录!"); 
  }else{  
   win_2=newExt.Window
   ({   
    title:"修改用户",   
    width:350,   
    height:250,   
    closeAction:"hide",   
    plain:true,   
    modal:true,//模态窗口,当打开当前窗口时,后面的内容被遮挡   
    bodyStyle:"padding:3px003px",   
    //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("提示","<fontcolor="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);    

 }

 /*删除用户 */
 functionremoveUser(btn)
 { 
  varselectedRecord=_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)
      {        
       varjsonRequest=Ext.util.JSON.decode(request.responseText);

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

 

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

 }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 functionsearch(){
  //fpanel.GridPanel().reset();init();

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

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

 }
 functionjump()
 {
  logins.show();
 }
 //////////////////////////////

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

Index.php文件
复制代码代码如下:

<?php
header("Content:text/html;charset=utf-8");
$link=mysql_connect("localhost","root","123456")ordie("error".mysql_error());
mysql_select_db("stu",$link);
mysql_query("setnamesutf8");
$sql="selectcount(*)numfrommen";
$num=mysql_query($sql);
$count=mysql_fetch_array($num);
$start=$_POST["start"];
$limit=$_POST["limit"];
$sql2="SELECT*FROMmenlimit{$start},{$limit}";
/*
if(!$_POST)
{
 $sql2="SELECT*FROMmember";
}else{
 $sql2="select*frommemberlimit{$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")ordie("error".mysql_error());
mysql_select_db("stu",$link);
mysql_query("setnamesutf8");
$name=$_POST["username"];
$pwd=$_POST["password"];
$time=$_POST["regTime"];
$email=$_POST["email"];
/*
$name="aaaa";
$pwd="aaaa";
$time="2011-12-31";
$email="aaaa";*/
$sql="INSERTINTOmen(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")ordie("error".mysql_error());
mysql_select_db("stu",$link);
mysql_query("setnamesutf8");
$id=$_POST["id"];
$sql="DELETEFROMmenWHEREid={$id}";
if(mysql_query($sql))
{
 echo1;
}else{
 echo0;
}
?>

数据库文件men.sql
数据库名叫:stu
表名为:men
可以把下面的复制到一个文本文档里,然后新建stu数据库,导入就可以。
复制代码代码如下:
--phpMyAdminSQLDump
--version2.11.2.1
--http://www.phpmyadmin.net
--
--主机:localhost
--生成日期:2012年01月11日10:02
--服务器版本:5.0.45
--PHP版本:5.2.5
SETSQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
--数据库:`stu`
--
----------------------------------------------------------
--
--表的结构`men`
--
CREATETABLE`men`(
 `id`int(11)unsignedNOTNULLauto_increment,
 `name`varchar(50)collateutf8_unicode_ciNOTNULL,
 `pass`varchar(32)collateutf8_unicode_ciNOTNULL,
 `sex`varchar(10)collateutf8_unicode_ciNOTNULL,
 `email`varchar(50)collateutf8_unicode_ciNOTNULL,
 PRIMARYKEY (`id`)
)ENGINE=InnoDB DEFAULTCHARSET=utf8COLLATE=utf8_unicode_ciAUTO_INCREMENT=28;
--
--导出表中的数据`men`
--
INSERTINTO`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");