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 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
腾讯QQ php程序员面试题目整理
Jun 08 PHP
shopex中集成的站长统计功能的代码简单分析
Aug 11 PHP
PHP实现异步调用方法研究与分享
Oct 27 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
Jun 17 PHP
php实现两个数组相加的方法
Feb 17 PHP
PHP获取QQ达人QQ信息的方法
Mar 05 PHP
PHP实现的购物车类实例
Jun 17 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
PHP守护进程化在C和PHP环境下的实现
Nov 21 PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
Feb 22 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获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
javascript 写类方式之八
2009/07/05 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
2013/04/07 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
争先创优公开承诺书
2014/08/30 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
「约定的梦幻岛」作画发布诺曼生日新绘
2022/03/21 日漫
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers
python计算列表元素与乘积详情
2022/08/05 Python