PHP+Mysql+jQuery查询和列表框选择操作实例讲解


Posted in PHP onOctober 22, 2015

本文讲解如何通过ajax查询mysql数据,并将返回的数据显示在待选列表中,再通过选择最终将选项加入到已选区,可以用在许多后台管理系统中。本文列表框的操作依赖jquery插件。

PHP+Mysql+jQuery查询和列表框选择操作实例讲解

HTML

<form id="sel_form" action="post.php" method="post"> 
  <p><input type="text" name="keys" id="keys" value="输入姓名或手机号码" onclick="this.value=''" /> 
  <input type="button" id="searchOption" value="搜索" /> <span id="msg_ser"></span></p> 
  <div id="sel"> 
  <select name="liOption[]" id='liOption' multiple='multiple' size='8'> 
  </select> 
  </div> 
  <input type="submit" value="提 交" /> 
</form>

说明,HTML内容是一个表单,里面放置有一个查询输入框,和一个列表框,以及相关按钮。

MYSQL数据表结构

CREATE TABLE IF NOT EXISTS `t_mult` ( 
 `id` int(11) NOT NULL auto_increment, 
 `username` varchar(32) NOT NULL, 
 `phone` varchar(20) NOT NULL, 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

表t_mult是一张联系人资料表,包括姓名和手机号码字段。

CSS

<link rel="stylesheet" type="text/css" href="jquery.multiselect2side.css" />

本例中只加载了Multiselect插件所需的样式文件,其他CSS大家可以自行设计。
JAVASCRIPT
首先需要引用本例所需的两个js文件。

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/jquery.multiselect2side.js"></script> 
<link rel="stylesheet" type="text/css" href="jquery.multiselect2side.css" />

接着我们来调用Multiselect插件。

$("#liOption").multiselect2side({ 
  selectedPosition: 'right', 
  moveOptions: false, 
  labelsx: '待选区', 
  labeldx: '已选区' 
});

然后我们来写搜索按钮进行Ajax查询数据的操作。

$("#searchOption").click(function(){ 
  var keys=$("#keys").val(); 
  $.ajax({ 
     type: "POST", 
     url: "action.php", 
     data: "title="+keys, 
     success: function(msg){ 
      if(msg==1){ 
        $("#msg_ser").show().html("没有记录!"); 
      }else{ 
        $("#liOptionms2side__sx").html(msg); 
        $("#msg_ser").html(""); 
      } 
     } 
  }); 
  $("#msg_ser").ajaxSend(function(event, request, settings){ 
    $(this).html(""); 
  }); 
});

说明,当点击搜索按钮时,进行的是Ajax异步操作,JAVASCRIPT将获取的搜索框的输入值,以POST方式传递给后台程序action.php处理,处理后,返回不同的结果给JAVASCRIPT,如果返回1,HTML页面会提示“没有记录”,反之,则将结果输出给左边列表框(待选区):liOptionms2side__sx。注意关键的地方到了,为什么列表框不是XHTML离的liOption,而变成了liOptionms2side__sx了呢?这个要从Multiselect插件说起,Multiselect插件其实就是将一个列表框装换成左右两个列表框,已供相关操作,通过查看其插件代码不难发现,左边的列表框名为:liOptionms2side__sx,右边列表框(已选区)名为:liOptionms2side__dx,后面会用到。

PHP

首先来看action.php的处理。
第一步是连接数据库。

$conn=mysql_connect("localhost","root",""); 
mysql_select_db("demo",$conn); 
mysql_query("SET names UTF8");

第二步读取数据,并输出。通过检测搜索框传来的值,构造不同的SQL语句,并将数据返回输出,代码如下:

$keys=trim($_POST['title']); 
$keys=mysql_real_escape_string($keys,$conn); 
if(!empty($keys)){ 
   $sql="select * from t_mult where username like '%$keys%' or phone='$keys'"; 
}else{ 
   $sql="select * from t_mult"; 
} 
$query=mysql_query($sql); 
$count=mysql_num_rows($query); 
if($count>0){ 
  while($row=mysql_fetch_array($query)){ 
    $str.="<option value='".$row['id']."'>".$row['username']."-".$row['phone']."</option>"; 
  } 
  echo $str; 
}else{ 
  echo "1"; 
}

最后还有一个提交操作,后台post.php程序来获取最终提交的项的值。

$selID=$_POST['liOptionms2side__dx']; 
if(!empty($selID)){ 
  $str=implode(",",$selID); 
  echo $str; 
}else{ 
  echo "没有选择任何项目!"; 
}

注意,我们获取的是右边列表框liOptionms2side__dx的值,而不是liOption的值。
一个查询、操作的例子实现了,但是还有一点点瑕疵,在待选区往已选区添加项目时,如何判断控制已经添加过的项目不能重复添加,这个就留给大家思考吧,试一试有什么好的解决方式。

PHP 相关文章推荐
从网上搜到的phpwind 0day的代码
Dec 07 PHP
php中定义网站根目录的常用方法
Aug 08 PHP
PHP中读写文件实现代码
Oct 20 PHP
破解.net程序(dll文件)编译和反编译方法
Jan 31 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
CodeIgniter上传图片成功的全部过程分享
Aug 12 PHP
列举PHP的Yii 2框架的开发优势
Jul 03 PHP
php用正则判断是否为数字的方法
Mar 25 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
基于swoole实现多人聊天室
Jun 14 PHP
使用laravel的migrate创建数据表的方法
Sep 30 PHP
PHP实现无限级分类(不使用递归)
Oct 22 #PHP
PHP实现递归无限级分类
Oct 22 #PHP
php防止网站被攻击的应急代码
Oct 21 #PHP
PHP统计当前在线用户数实例讲解
Oct 21 #PHP
php精确的统计在线人数的方法
Oct 21 #PHP
为你总结一些php信息函数
Oct 21 #PHP
深入理解PHP变量的值类型和引用类型
Oct 21 #PHP
You might like
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
2014/07/08 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
javascript高级编程之函数表达式 递归和闭包函数
2015/11/29 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
2018/05/16 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
跟老齐学Python之一个免费的实验室
2014/09/14 Python
python中pycurl库的用法实例
2014/09/30 Python
python 默认参数问题的陷阱
2016/02/29 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
Python登录系统界面实现详解
2019/06/25 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
网站客服岗位职责
2014/04/05 职场文书
升学宴答谢词
2015/01/05 职场文书
大学宣传委员竞选稿
2015/11/19 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书