Ajax+php无限联动下拉菜单实例

 更新时间:2016年11月25日 17:29  点击:2295
Ajax无限联动实现方法就是先由用户选择大类,然后我们再用ajax实现数据局部请求给php页面处理,php把用户需要的数据返回到html js进行处理,这样就实现了无限联动下拉菜单的效果了。

首先是 Ajax.php文件:

这个文件我觉着就是接收数据处理数据的

 代码如下 复制代码

<?php
mysql_connect("localhost","root","");
mysql_select_db("aaa");
mysql_query("set names 'UTF8'");

上面的这些代码 不用我说都知道是连接数据库的

 代码如下 复制代码

//select 语句
1.//$q=mysql_query("select * from `newstype` where `kid`='".$_POST['id']."'");
2.$sql="select * from `newstype` where `kid`='".$_POST['id']."'";

$q=mysql_query($sql);

上面的1和2的选项是因为 我写了一遍select语句出现报错了 然后我就又写了一遍 结果两个都对了 1 是注释掉了

if(mysql_num_rows($q)!=0){  判断查找的语句的个数 如果是0的话就代表下面没有分支了 就不会显示了

//记住在$_POST[]加()这是我出现的错误

 代码如下 复制代码
echo "<select id='s".($_POST['num']+1)."' onchange='fun(".($_POST['num']+1).")'>";

输出一个select选择框会添加到后来最终显示的页面的div里面 后面会做介绍

 代码如下 复制代码

while($rs=mysql_fetch_array($q)){
echo"<option value=".$rs['id'].">".$rs['name']."</option>";select里面的option选项 value的值一定要给 因为我们要按照这个查找语句
}
echo "</select>";
echo "<div id='list".($_POST['num']+1)."'></div>";因为做的是无限极联动 后面还要输出一个div的框 用来盛下一个的select框
}
?>


--------------------------------------------------------------------------------

下面的是Ajax.js文件var xmlhttp;定义一个变量

 代码如下 复制代码

function createxml(){这个部分主要是用来判断浏览器
if(window.XMLHttpRequest){ XMLHttpRequest是javascript里面内置的属性 具体的作用 大家自己去翻手册
xmlhttp=new XMLHttpRequest();
}else if(window.ActiveXObject){
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
}
}
function fun(n){  这个方法是展示页中 select onchange事件调用
createxml();
var id=document.getElementById("s"+n).value;  是选取对应的id的select里面的value值 就是我们上面说道的数据库中的ID字段
xmlhttp.open("post","Ajax.php",true);  打开请求
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//id之后还有一个+
xmlhttp.send("id="+id+"&num="+n); 发送请求 获取这个id的值 和 n的值 并且分别赋值给 id 和 num
xmlhttp.onreadystatechange=function(){stylefun(n)}; 触发onreadystatechange调用stylefun(n)方法 并且设置n参数
}
function stylefun(n){
if(xmlhttp.readyState==4 && xmlhttp.status==200){已经接受完成之后 把获得的text赋值给对应id的div标签里面
//innerHTML 记住html是大写
document.getElementById("list"+n).innerHTML=xmlhttp.responseText;
}
}


--------------------------------------------------------------------------------

下面是展示页面liandong.php(原谅我起名字的时候都是很简单的思维)

 代码如下 复制代码

<?php
mysql_connect("localhost","root","")or die("链接数据库失败");
mysql_select_db("aaa");
mysql_query("set names'UTF8'");
$sql="select * from `newstype` where `kid` = 0";先查找最初的根目录类型
$query=mysql_query($sql);
while($rs=mysql_fetch_array($query)){
$arr[]=$rs;
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="Ajax.js"></script>
</head>
<body>
<!--无限极联动-->
<select id="s1" onchange="fun(1)">
<?php
foreach($arr as $v){
echo "<option value='".$v['id']."'>".$v['name']."</option>";
}
?>
</select>
<div id="list1">
</div>
</body>
</html>

我们要经常要用到的几个正则验证实例,如ip地址 email格式 电话号码正则验证,下面我一一给大家详细介绍介绍,有需要的朋友可参考参考。

php验证ip格式的程序代码

如果网站有表单需要填写ip地址,那么先要验证格式是否正确。

php验证ip格式是否正确使用正则表达式来实现,其核心代码如下:

 代码如下 复制代码

<form action="" method="post">
 <input type="text" name="ip"/>
 <input type="submit" name="sub" value="确认"/>
</form>
 
<?php
 if($_POST['sub']){
  $preg=preg_match("/^d+.d+.d+.d+$/",trim($_POST['ip']));
  if($preg) echo '格式正确!';
  else echo '格式不对!';
 }
?>

php

验证email格式的代码

email是用户注册页面中最常见的信息,为了防止一些无关的垃圾信息输入,过滤掉这些不良用户,我们有必要去验证email的格式。

php验证email格式的方法主要通过正则表达式来实现,其核心代码如下:

 代码如下 复制代码

<form action="" method="post">
 <input type="text" name="email"/>
 <input type="submit" name="sub" value="确认"/>
</form>
 
<?php
 if($_POST['sub']){
  $preg=preg_match("/w+([-+.']w+)*@w+.w+([-.]w+)*/",trim($_POST['email']));
  if($preg) echo '格式正确!';
  else echo '格式不对!';
 }
?>


php验证电话号码可以使用正则表达式进行判断,国内电话号码的总位数是11位或12位。

php判断电话号码格式的代码:

 代码如下 复制代码

 <form action="" method="post">
 <input type="text" name="phone"/>
 <input type="submit" name="sub" value="确认"/>
</form>
 
<?php
 if($_POST['sub']){
  $preg=preg_match('/^(d{3}-)(d{8})$|^(d{4}-)(d{7})$|^(d{4}-)(d{8})$/',$_POST['phone']);
  if($preg) echo '格式正确!';
  else echo '格式不对!';
 }
?>

本文章来给各位php入门者提供在php与mysql实现分页代码与原理,在mysql中支持limit 0,1这样就是查询0,1条记录了,有了它在php中分页就简单快速多了。

所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:
每页多少条记录($PageSize)?
当前是第几页($CurrentPageID)?
现在只要再给我一个结果集,我就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
以MySQL数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。

 代码如下 复制代码
select * from table limit 0,10 // 前10条记录
select * from table limit 10,10 // 第11至20条记录
select * from table limit 20,10 // 第21至30条记录

……

这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:

 代码如下 复制代码

select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize

拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。

 代码如下 复制代码

<html>
<head>
<title>
ShowData
</title>
</head>
<body>
<h2>ShowData</h2>
<?php
    //连接数据库   
    $page = 1;
        $db = mysql_connect('127.0.0.1','root','toor');
        mysql_select_db('test',$db);
   
        $pagesize = 3;    //每页显示到数量
   
    //计算一共有多少记录,用于计算页数
    $rs = mysql_query("select count(*) from info",$db);
    $row = @mysql_fetch_array($rs);
    $numrows = $row[0];

    //计算页数
    $pages = intval($numrows / $pagesize);
    if ($numrows % $pagesize)
    {
        $pages++;
    }

    //设置页数
    if (isset($_GET['page']))
    {   
        $page = intval($_GET['page']);
    }
    else
    {
        $page = 1;        //其他情况,都指向第一页
    }
   
    //计算记录的偏移量
    $offset = $pagesize * ($page - 1);

    //读取指定记录
    $rs = mysql_query("select * from info order by id limit $offset,$pagesize",$db);

    //把数据用表格显示出来
    if ($row = @mysql_fetch_array($rs))
    {
        $i = 0;
        ?>
        <table border='0' width='80%'>
        <tr>
        <td width='50%'>
        <p align='center'>ID</td>
        <td width='50%'>
        <p align='center'>DOC</td>
        </tr>
        <?php
            do{
                $i++;
        ?>
        <tr align='center'>
        <td width='50%'><?=$row['id']?></td>
        <td width='50%'><?=$row['doc']?></td>
        </tr>
        <?php
            }
            //循环显示数据
            while ($row = mysql_fetch_array($rs));
            echo "</table>";
    }
    echo "<div align='center'> 共".$pages."页(".$page."/".$pages.")";
    for ($i = 1;$i < $page;$i++)
    {
        echo "<a href='showdata.php?page=".$i."'>[".$i."]</a>";
    }
    echo "[".$page."]";
    for ($i = $page + 1;$i <= $pages;$i++)
    {
        echo "<a href='showdata.php?page=".$i."'>[".$i."]</a>";
    }
    echo "</div>";

    ?>

</body>
</html>

总结,分页就根据用户点击连接,然后由于php获取page值再经过一系列算法得出当前多少页面,然后取多少要就显示出你要查看的记录了。

在php中我们要把时间戳转换日期可以直接使用date函数来实现,如果要把日期转换成时间戳可以使用strtotime()函数实现,下面我来给大家举例说明。

1.php中时间转换函数

 代码如下 复制代码

strtotime(date())

date("Y-m-d H:i",$unixtime)

2.php中获得今天零点的时间戳

要获得零点的unix时间戳,可以使用$todaytime=strtotime(“today”),

然后再使用date("Y-m-d H:i",$todaytime)转换为日期。

时间戳转换为日期 

时间戳转换函数:date("Y-m-d H:i:s",time()),"Y-m-d H:i:s"是转换后的日期格式,time()是获得当前时间的时间戳。如果是date("Y-m-d H:i:s",time()),则小时分秒一起显示;如果是date("Y-m-d ", time()),只显示年月日。例如:
date("Y-m-d H:i:s",time())转换后为:2010-07-18 18:42:48
date("Y-m-d",time())转换后为:2010-07-18

日期转换为时间戳 .

 代码如下 复制代码

<?php
class SaonekController extends Controller {

 public function indexAction(){
/*时间戳转换成日期不用说了
但是日期要转成时间戳的话就要用到strtotime()
*/
         $time = time();//时间戳
   $nowtime = date('Y-m-d H:i:s',$time);//生成带格式的日期
   $oldtime = '2010-11-10 22:19:21';
         $catime = strtotime($oldtime);//日期转换为时间戳
   $nowtimes = date('Y-m-d H:i:s',$catime);//时间戳又转回日期了
   echo  $nowtimes;
 }
}

?>

3.php中时间戳转换为日期,并按照时间显示不同的内容,如刚刚,分钟前,小时前,今天,昨天等

 代码如下 复制代码

/*时间转换函数*/

function transTime($ustime) {            
 
  $ytime = date("Y-m-d H:i",$ustime);              
 
  $rtime = date("n月j日 H:i",$ustime);            
 
  $htime = date("H:i",$ustime);            
 
  $time = time() - $ustime;            
 
  $todaytime = strtotime("today");            
 
  $time1 = time() - $todaytime;                            
 
  if($time < 60){                    
 
    $str = '刚刚';            
 
  }else if($time < 60 * 60){                             
 
    $min = floor($time/60);                    
 
    $str = $min.'分钟前';            
 
  }else if($time < $time1){                    
 
    $str = '今天 '.$htime;            
 
  }else{                    
 
    $str = $rtime;            
 
  }              
 
  return $str;
 
}

其它的参考

使用date将当时间戳与指定时间戳转换成系统时间

(1)打印明天此时的时间戳strtotime(”+1 day“)

 代码如下 复制代码
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 day”)) 结果:2009-01-23 09:40:25

(2)打印昨天此时的PHP时间戳strtotime(”-1 day“)

 代码如下 复制代码
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 day”)) 结果:2009-01-21 09:40:25

(3)打印下个星期此时的时间戳strtotime(”+1 week“)

 代码如下 复制代码
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 week”)) 结果:2009-01-29 09:40:25

(4)打印上个星期此时的时间戳strtotime(”-1 week“)

 代码如下 复制代码
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 week”)) 结果:2009-01-15 09:40:25

(5)打印指定下星期几的PHP时间戳strtotime(”next Thursday“)

 代码如下 复制代码
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”next Thursday”)) 结果:2009-01-29 00:00:00

(6)打印指定上星期几的时间戳strtotime(”last Thursday“)

 代码如下 复制代码
当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25
指定时间:echo date(”Y-m-d H:i:s”,strtotime(”last Thursday”)) 结果:2009-01-15 00:00:00
在php中要复制一个目录的文件到另一个目录我们需要遍历指定目录,然后再复制一个个利用copy函数把目录的文件复制到新的目录即可了,下面我来介绍一个实例。


遍历某文件夹下的所有文件和文件夹,并且把所以匹配的文件复制到同一目录。下面例子把”/www/pooy/baike”目录里面的,所有html文件都复制到”/www/pooy/bk”这个目录下面。

 代码如下 复制代码

$dir="/www/pooy/baike";
 static $dir_list =0;
 static $file_list =0;
 function listfile($dir){
 global $dir_list,$file_list;
 $d = dir($dir);
 while ( $entry = $d->read()) {
 $tem_curnt=$dir."/".$entry;
 //echo  $tem_curnt."<br>";
 if($entry=="." || $entry=="..") continue;
 if ( is_dir( $tem_curnt)) {
 listfile($tem_curnt);
 echo "文件夹 ".$tem_curnt."<br>";
$dir_list++;
 }
 elseif ( is_file($tem_curnt))
 {
 echo "文件".$tem_curnt."<BR>";
 _copy($tem_curnt,"/www/pooy/bk");
 $file_list++;
 }
 }
 $d->close();
 }
function _copy($src, $dst) {
 if ( ! is_dir($src)) {
 if ( ! copy($src, $dst)) {
 return _log('Unable to copy files', $src);
 }
 } else {
 mkdir($dst);
 $ls = scandir($src);
for ($i = 0; $i < count($ls); $i++) {
 if ($ls[$i] == '.' OR $ls[$i] == '..') continue;
$_src = $src.'/'.$ls[$i];
 $_dst = $dst.'/'.$ls[$i];


if ( is_dir($_src)) {
 if ( ! _copy($_src, $_dst)) {
 return _log('Unable to copy files', $_src);
 }
 } else {
 if ( ! copy($_src, $_dst)) {
 return _log('Unable to copy files', $_src);
 }
 }
 }
 }
 return TRUE;
 }listfile($dir);
 echo "目录数:".$dir_list;
 echo"<br>";
 echo"文件数:".$file_list;

[!--infotagslink--]

相关文章

  • jQuery实现非常实用漂亮的select下拉菜单选择效果

    本文实例讲述了jQuery实现非常实用漂亮的select下拉菜单选择效果。分享给大家供大家参考,具体如下:先来看如下运行效果截图:在线演示地址如下:http://demo.jb51.net/js/2015/js-select-chose-style-menu-codes/具体代码如...2015-11-08
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • jQuery实现有动画淡出效果的二级折叠菜单代码

    本文实例讲述了jQuery实现有动画淡出效果的二级折叠菜单代码。分享给大家供大家参考,具体如下:这里介绍jQuery实现有动画淡出效果的二级折叠菜单代码,相当不错,因考虑功能的实现,所以没有怎么美化,不过这样也好,可以给大家更...2015-10-21
  • jQuery实现下拉菜单滑动效果

    这篇文章主要为大家详细介绍了jQuery实现下拉菜单滑动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-09
  • jQuery实现可关闭固定于底(顶)部的工具条菜单效果

    本文实例讲述了jQuery实现可关闭固定于底(顶)部的工具条菜单效果。分享给大家供大家参考,具体如下:这是一款可关闭始终在页面底部的工具条菜单,浮动在页面顶部的大家见的比较多了,本款从形式上来说与其它的没什么差别,只是浮...2015-11-08
  • jQuery+PHP+MySQL二级联动下拉菜单实例讲解

    二级联动下拉菜单选择应用在在很多地方,比如说省市下拉联动,商品大小类下拉选择联动。本文将通过实例讲解使用jQuery+PHP+MySQL来实现大小分类二级下拉联动效果。 实现效果:当选择大类时,小类下拉框里的选项内容也随着改...2015-10-30
  • Vue.js 递归组件实现树形菜单(实例分享)

    本文主要对介绍利用Vue.js 的递归组件,实现了一个最基本的树形菜单。具有很好的参考价值,下面就跟着小编一起来看下吧...2017-01-09
  • js如何构造elementUI树状菜单的数据结构详解

    由于业务需要,要求实现树形菜单,且菜单数据由后台返回,下面这篇文章主要给大家介绍了关于js如何构造elementUI树状菜单的数据结构的相关资料,需要的朋友可以参考下...2021-05-13
  • jQuery实现精美的多级下拉菜单特效

    这是一款精美的多级下拉菜单美化,可以完美替代“select”来实现下拉菜单的效果。而且支持多级菜单,有加载等待效果,有层级分类展示。复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "ht...2015-03-15
  • jquery插件实现悬浮的菜单

    这篇文章主要为大家详细介绍了jquery插件实现悬浮的菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-23
  • JS实现不使用图片仿Windows右键菜单效果代码

    本文实例讲述了JS实现不使用图片仿Windows右键菜单效果代码。分享给大家供大家参考,具体如下:这里演示JS不使用图片仿Windows右键菜单效果,这款代码灵活使用了文鼎字,配合CSS和JS做出了这个和系统右键菜单很相似的东东。...2015-10-23
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • jQuery实现的导航下拉菜单效果

    这篇文章主要介绍了jQuery实现的导航下拉菜单效果,涉及jQuery响应鼠标事件动态操作页面元素的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2016-07-06
  • php创建无限级树型菜单

    写递归函数,可考虑缓存,定义一些静态变量来存上一次运行的结果,多程序运行效率很有帮助.。 大概步骤如下: step1:到数据库取数据,放到一个数组, step2:把数据转化为一个树型状的数组, step3:把这个树型状的数组转为html代码。...2015-11-08
  • jquery实现树形菜单完整代码

    这篇文章主要介绍了jquery实现树形菜单完整代码,需要的朋友可以参考下...2016-01-02
  • C#自定义控件添加右键菜单的方法

    这篇文章主要介绍了C#自定义控件添加右键菜单的方法,本文用到control控件,专门自定义右键菜单,下面小编给大家整理下,有需要的小伙伴可以来参考下...2020-06-25
  • winform树形菜单无限级分类实例

    本文介绍了“winform树形菜单无限级分类实例”,需要的朋友可以参考一下...2020-06-25
  • 最简单js代码实现select二级联动下拉菜单

    这个是简单也是最基本的下拉框联动的示例,这个示例主要针对那些只有二级联动,且第一级是固定的选项,第二级的内容也比较简单,不刷新的联动,感兴趣的小伙伴们可以参考一下...2016-04-19
  • javascript+css3 实现动态按钮菜单特效

    这篇文章主要介绍了javascript+css3 实现动态按钮菜单特效的相关资料,需要的朋友可以参考下...2016-02-12