热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jQueryphpajaxmysql_Jquery+Ajax+PHP+MySQL实现分类列表管理(上)

本文将采用Jquery+Ajax+PHP+MySQL来实现一个客户分类列表的管理,如何利用Ajax和Json技术让用户操作起来觉得更轻松,感兴趣的小伙伴们可以参考一下在实际应用中,我们要管理一个客户分

本文将采用Jquery+Ajax+PHP+MySQL来实现一个客户分类列表的管理,如何利用Ajax和Json技术让用户操作起来觉得更轻松,感兴趣的小伙伴们可以参考一下

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

6ab293c2a81562a7f240c3797c853070.gif

准备阶段

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

CREATE TABLE `catalist` (

`cid` int(11) NOT NULL auto_increment,

`title` varchar(100) NOT NULL,

`sort` mediumint(6) NOT NULL default '0',

PRIMARY KEY (`cid`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

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

将需要准备的文件一并加入到index.php的

之间。

准备完毕我们进入主题。

index.php

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

include_once('connect.php'); //连接数据库

$query = mysql_query("select * from catalist order by cid asc");

while($row=mysql_fetch_array($query)){

$list .= "

".$row['title']."

";

}

?>

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

客户类别

新增一项

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

CSS

.input{width:160px; padding:2px; border:1px solid #d3d3d3}

.cur_tr{background:#ffc}

.selectlist{width:280px; margin:30px auto; border:1px solid #ccc;}

.selectlist h3{height:32px; line-height:32px; padding:0 4px; border-bottom:1px dotted #d3d3d3;

background:#f7f7f7}

.selectlist h3 span{float:right; font-weight:500}

.selectlist ul{margin-top:4px; margin-left:20px; list-style-type: disc}

.selectlist ul li{line-height:26px}

.selectlist p{line-height:28px; padding-left:6px}

.selectlist ul li span{width:20px; height:20px}

.selectlist ul li span.edit{ float:right;background:url(images/edits.gif) no-repeat 0 5px;

cursor:pointer}

.selectlist ul li span.del,.selectlist ul li span.dels,.selectlist ul li span.cancer{

float:right;background:url(images/del.gif) no-repeat 0 5px; cursor:pointer}

.selectlist ul li span.ok,.selectlist ul li span.oks{float:right;background:url(images/ok.gif)

no-repeat 0 5px; cursor:pointer}

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

c707a3f1cc8c006fa7ea88f485c3cfbb.gif

新增项操作在global.js加入addOpt()函数:

function addOpt(){

var str = "

";

$("#catalist").append(str);

}

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

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

$(function(){

//保存新增项

$(".ok").live('click',function(){

var btn = $(this);

var input_str = btn.parent().find('input').val();

if(input_str==""){

jNotify("请输入类别!");

return false;

}

var str = escape(input_str);

$.getJSON("post.php?action=add&title="+str,function(json){

if(json.success==1){

var li = "

"+

json.title+"

";

$("#catalist").append(li);

btn.parent().remove();

jSuccess("恭喜,操作成功!");

}else{

jNotify("出错了!");

return false;

}

});

});

});

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

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

//取消新增项

$(".dels").live('click',function(){

$(this).parent().remove(); //将新增项移除

});

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

include_once('connect.php'); //连接数据库

$action = $_GET['action'];

switch($action){

case 'add': //新增项

$title = uniDecode($_GET['title'],'utf-8');

$title = htmlspecialchars($title,ENT_QUOTES);

$query = mysql_query("insert into catalist (cid,title) values (NULL,'$title')");

if($query){

$insertid = mysql_insert_id($link);

$arr = array('id'=>$insertid,'title'=>$title,'success'=>1);

}else{

$arr = array('success'=>2);

}

echo json_encode($arr);

break;

case '':

break;

}

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

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

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

//删除项

$(".del").live('click',function(){

var btn = $(this);

var id = btn.parent().attr('rel');

var URL = "post.php?action=del";

hiConfirm('您确定要删除吗?', '提示',function(r){

if(r){

$.ajax({

type: "POST",

url: URL,

data: "id="+id,

success: function(msg){

if(msg==1){

jSuccess("删除成功!");

btn.parent().remove();

}else{

jNotify("操作失败!");

return false;

}

}

});

}

});

});

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

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

case 'del': //删除项

$id = $_POST['id'];

$query = mysql_query("delete from catalist where cid=".$id);

if($query){

echo '1';

}else{

echo '2';

}

break;

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

限于篇幅,修改项操作在下此文章中再进行讲解,敬请关注,不要错过喽。


推荐阅读
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
author-avatar
幽忧白雪666
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有