广

JavaScript

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    采用Jquery+Ajax+PHP+MySQL实现分类列表管理(上篇)

    2018-04-04 08:34:58 次阅读 稿源:互联网
    零七广告

    在实际应用中,我们要管理一个客户分类,实现对客户分类的增加、删除和修改等操作,如何让这些操作变得更人性化,让用户操作起来更加方便成了我们必须研究的课题。

    本文将采用Jquery+Ajax+PHP+MySQL来实现一个客户分类列表的管理,如何利用Ajax和Json技术让用户操作起来觉得更轻松,且看本文一一讲解。

    准备阶段

    您需要具备HTML和Jquery等前端知识,以及基本的PHP程序和MySql数据库相关知识。要实现本文中的DEMO示例,首先需要一个mysql数据库:

    1. CREATE TABLE `catalist` ( 
    2.   `cid` int(11) NOT NULL auto_increment, 
    3.   `title` varchar(100) NOT NULL, 
    4.   `sort` mediumint(6) NOT NULL default '0'
    5.   PRIMARY KEY  (`cid`) 
    6. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8; 

    其次在页面中引入jquery库,以及操作结果提示插件jNotify和删除确认插件hiAlert。后者两个插件在本站都有详细的讲解,读者可以通过链接了解下:

    将需要准备的文件一并加入到index.php的<head>之间。

    1. <script type="text/javascript" src="js/jquery.js"></script> 
    2. <script type="text/javascript" src="js/jNotify.jquery.js"></script> 
    3. <script type="text/javascript" src="js/jquery.alert.js"></script> 
    4. <script type="text/javascript" src="js/global.js"></script> 
    5. <link rel="stylesheet" type="text/css" href="css/alert.css" /> 

    准备完毕我们进入主题。

    index.php

    index.php是主体页面,读取了数据库中的分类数据,以列表展示,并提供了增加、删除和修改的功能按钮。

    1. <?php 
    2. include_once('connect.php'); //连接数据库 
    3. $query = mysql_query("select * from catalist order by cid asc"); 
    4. while($row=mysql_fetch_array($query)){ 
    5.     $list .= "<li rel='".$row['cid']."'><span class='del' title='删除'></span> 
    6.     <span class='edit' title='编辑'></span><span class='txt'>".$row['title']."</span></li>"; 
    7. ?> 

    以上代码通过读取数据表中的数据,返回一个列表字符串。然后我们要将字符串输出到对应的列表中,代码如下:

    1. <div class="selectlist"> 
    2.     <h3>客户类别</h3> 
    3.     <ul id="catalist"> 
    4.          <?php echo $list;?> 
    5.     </ul> 
    6.     <p><a href="javascript:;" onclick="addOpt()">新增一项</a></p> 
    7. </div> 

    试着往数据表中添加几条数据,可以看到一个分类列表。

    CSS

    1. .input{width:160pxpadding:2pxborder:1px solid #d3d3d3
    2. .cur_tr{background:#ffc
    3. .selectlist{width:280pxmargin:30px auto;  border:1px solid #ccc;} 
    4. .selectlist h3{height:32pxline-height:32pxpadding:0 4pxborder-bottom:1px dotted #d3d3d3
    5.  background:#f7f7f7
    6. .selectlist h3 span{float:rightfont-weight:500
    7. .selectlist ul{margin-top:4pxmargin-left:20pxlist-style-typedisc
    8. .selectlist ul li{line-height:26px
    9. .selectlist p{line-height:28pxpadding-left:6px
    10. .selectlist ul li span{width:20pxheight:20px
    11. .selectlist ul li span.edit{ float:right;background:url(images/edits.gif) no-repeat 0 5px;  
    12. cursor:pointer
    13. .selectlist ul li span.del,.selectlist ul li span.dels,.selectlist ul li span.cancer{ 
    14.  float:right;background:url(images/del.gif) no-repeat 0 5pxcursor:pointer
    15. .selectlist ul li span.ok,.selectlist ul li span.oks{float:right;background:url(images/ok.gif)  
    16. no-repeat 0 5pxcursor:pointer

    CSS我就不详细讲解,看下就明白了,最终显示的效果如图:

    新增项操作

    在global.js加入addOpt()函数:

    1. function addOpt(){ 
    2.     var str = "<li><span class='dels' title='取消'></span><span class='ok' title='保存'></span> 
    3.     <input type='text' class='input' /></li>"; 
    4.     $("#catalist").append(str); 

    通过单击“新增一项”链接,向DOM中添加了一个新增项的输入框。

    当用户输入内容后,点击“保存”,将会触发一个ajax操作,先看代码:

    1. $(function(){ 
    2.     //保存新增项 
    3.     $(".ok").live('click',function(){ 
    4.         var btn = $(this); 
    5.         var input_str = btn.parent().find('input').val(); 
    6.         if(input_str==""){ 
    7.             jNotify("请输入类别!"); 
    8.             return false
    9.         } 
    10.         var str = escape(input_str); 
    11.         $.getJSON("post.php?action=add&title="+str,function(json){ 
    12.             if(json.success==1){ 
    13.                 var li = "<li rel='"+json.id+"'><span class='del' title='删除'
    14.                 </span><span class='edit' title='编辑'></span><span class='txt'>"+ 
    15.                 json.title+"</span></li>"
    16.                 $("#catalist").append(li); 
    17.                 btn.parent().remove(); 
    18.                 jSuccess("恭喜,操作成功!"); 
    19.             }else
    20.                 jNotify("出错了!"); 
    21.                 return false
    22.             } 
    23.         }); 
    24.     }); 
    25. }); 

    首先获取用户输入的内容,如果没有输入任何内容则提示用户输入内容,然后将用户输入的内容进行escape编码,保证中文字符能正确传输给后台程序识别。然后通过$.getJSON方法向后台post.php发起一个异步的Ajax请求。后台post.php接收参数值并进行相关处理,前端代码通过响应后台返回的JSON数据,如果新增成功,则向列表后面追加一项,并提示用户“操作成功”,如果失败则提示用户“出错了”。

    如果要取消新增项操作,只需当单击“取消”按钮时执行以下代码:

    1. //取消新增项 
    2. $(".dels").live('click',function(){ 
    3.      $(this).parent().remove();  //将新增项移除 
    4. }); 

    后台post.php需要处理新增项内容,代码如下:

    1. include_once('connect.php'); //连接数据库 
    2. $action = $_GET['action']; 
    3. switch($action){ 
    4.     case 'add':  //新增项 
    5.        $title = uniDecode($_GET['title'],'utf-8'); 
    6.        $title = htmlspecialchars($title,ENT_QUOTES); 
    7.        $query = mysql_query("insert into catalist (cid,title) values (NULL,'$title')"); 
    8.        if($query){ 
    9.            $insertid = mysql_insert_id($link); 
    10.            $arr = array('id'=>$insertid,'title'=>$title,'success'=>1); 
    11.        }else
    12.            $arr = array('success'=>2); 
    13.        } 
    14.        echo json_encode($arr); 
    15.        break
    16.      case ''
    17.        break

    通过接收前端提交的内容,进行解码后,写入数据表中,并输出JSON数据格式供前台处理。关于uniDecode()函数,读者可以下载源码了解,主要是为了正确读取解析jquery通过异步提交的中文字符串。

    添加项操作已经完成,下面请看删除项操作。

    删除项操作

    回到global.js,在$(function(){})加入下面的代码:

    1. //删除项 
    2.     $(".del").live('click',function(){ 
    3.         var btn = $(this); 
    4.         var id = btn.parent().attr('rel'); 
    5.         var URL = "post.php?action=del"
    6.         hiConfirm('您确定要删除吗?''提示',function(r){ 
    7.             if(r){ 
    8.               $.ajax({ 
    9.                 type: "POST"
    10.                 url: URL, 
    11.                 data: "id="+id, 
    12.                 success: function(msg){ 
    13.                    if(msg==1){ 
    14.                        jSuccess("删除成功!"); 
    15.                        btn.parent().remove(); 
    16.                    }else
    17.                        jNotify("操作失败!"); 
    18.                        return false
    19.                    } 
    20.                 } 
    21.              }); 
    22.             } 
    23.         }); 
    24.     }); 

    显然,通过单击“删除”按钮,同样是向后台post.php发送一个ajax请求,将删除项对应的参数ID发送给后台并响应后台处理结果,如果成功,则提示用户“删除成功”,并通过remove()将数据项移除,如果失败,则提示“操作失败”。

    后台post.php接收参数并作出相应的处理:

    1. case 'del':  //删除项 
    2.     $id = $_POST['id']; 
    3.     $query = mysql_query("delete from catalist where cid=".$id); 
    4.     if($query){ 
    5.         echo '1'
    6.     }else
    7.         echo '2'
    8.     } 
    9.     break

    以上这段代码片段,加在post.php的switch语句中,执行了删除语句,并输出执行结果供前端处理。

    限于篇幅,修改项操作在下一篇文中讲解,敬请关注。

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告