PHP 查询多级分类的实例程序代码

 更新时间:2016年11月25日 15:46  点击:2039
本文章来给大家介绍一个PHP 查询多级分类的实例程序代码,有需要了解的同学可进入参考。

分类表,比如category,字段有 id,parentid,title

查询时,我们希望得到有层级关系的数组,就是顶级是顶级分类,然后每个分类中有个children子数组,记录它的子分类,这样一级一级的分级数组。代码如下

 代码如下 复制代码


//查询
 
$dsql->SetQuery("SELECT * FROM category ORDER BY sortorder ASC");
$dsql->Execute('parentlist');
$array = array();
$parentlist = array();
while ($rs=$dsql->getObject('parentlist'))
{
    if($rs->parentid == 0)
    {
        $parentlist[$rs->id] = (array)$rs;
    }
    else
    {
        $array[$rs->id] = (array)$rs;
    }
}
$parentlist = cat_options($parentlist, $array);  //我们求的结果数组
 
//$list父级分类的数组
 
//$array是除父级分类外的全部分类的数组
 
function cat_options(&$list,&$array)
{
    foreach ($list as $key => $arr)
    {
        foreach ($array as $k => $value)
        {
            if($value['parentid'] == $arr['id'])
            {
                $list[$key]['children'][] = $value;
                unset($array[$k]);
            }
        }
    }
    foreach ($list as $key => $arr)
    {
        if(is_array($arr['children']) && count($arr['children']) > 0)
        {
            $list[$key]['children'] = cat_options($list[$key]['children'], $array);
        }
    }
    return $list;
}

好了现在给大家推荐一个无限分类的函数

 代码如下 复制代码

<?php   
//模拟PHP无限分类查询结果   
return array(   
array(   
‘id’=>1,   
‘pid’=>0,   
‘name’=>‘主页’   
),   
array(   
‘id’=>2,   
‘pid’=>0,   
‘name’=>‘新闻’   
),   
array(   
‘id’=>3,   
‘pid’=>0,   
‘name’=>‘媒体’   
),   
array(   
‘id’=>4,   
‘pid’=>0,   
‘name’=>‘下载’   
),   
array(   
‘id’=>5,   
‘pid’=>0,   
‘name’=>‘关于我们’   
),   
array(   
‘id’=>6,   
‘pid’=>2,   
‘name’=>‘天朝新闻’   
),   
array(   
‘id’=>7,   
‘pid’=>2,   
‘name’=>‘海外新闻’   
),   
array(   
‘id’=>8,   
‘pid’=>6,   
‘name’=>‘州官新闻’   
),   
array(   
‘id’=>9,   
‘pid’=>3,   
‘name’=>‘音乐’   
),   
array(   
‘id’=>10,   
‘pid’=>3,   
‘name’=>‘电影’   
),   
array(   
‘id’=>11,   
‘pid’=>3,   
‘name’=>‘小说’   
),   
array(   
‘id’=>12,   
‘pid’=>9,   
‘name’=>‘铃声’   
),   
array(   
‘id’=>13,   
‘pid’=>9,   
‘name’=>‘流行音乐’   
),   
array(   
‘id’=>14,   
‘pid’=>9,   
‘name’=>‘古典音乐’   
),   
array(   
‘id’=>15,   
‘pid’=>12,   
‘name’=>‘热门铃声’   
),   
array(   
‘id’=>16,   
‘pid’=>12,   
‘name’=>‘搞笑铃声’   
),   
array(   
‘id’=>17,   
‘pid’=>12,   
‘name’=>‘MP3铃声’   
),   
array(   
‘id’=>18,   
‘pid’=>17,   
‘name’=>‘128K’   
),   
array(   
‘id’=>19,   
‘pid’=>8,   
‘name’=>‘娱乐新闻’   
),   
array(   
‘id’=>20,   
‘pid’=>11,   
‘name’=>‘穿越类’   
),   
array(   
‘id’=>21,   
‘pid’=>11,   
‘name’=>‘武侠类’   
),   
);   
?>

无限分类函数

 代码如下 复制代码

<?php   
        
/**   
        
* Tree 树型类(无限分类)   
        

        
* @version 1.0   
        
* @access public    
* @example    
*   $tree= new Tree($result);   
        
*   $arr=$tree->leaf(0);   
        
*   $nav=$tree->navi(15);   
        
*/
        
class Tree {   
        
        private $result;   
        
        private $tmp;   
        
        private $arr;   
        
        private $already = array();   
        
        /**   
        
         * 构造函数   
        
         *    
         * @param array $result 树型数据表结果集   
        
         * @param array $fields 树型数据表字段,array(分类id,父id)   
        
         * @param integer $root 顶级分类的父id   
        
         */
        
        public function __construct($result, $fields = array('id', 'pid'), $root = 0) {   
        
                $this->result = $result;   
        
                $this->fields = $fields;   
        
                $this->root = $root;   
        
                $this->handler();   
        
        }   
        
        /**   
        
         * 树型数据表结果集处理   
        
         */
        
        private function handler() {   
        
                foreach ($this->result as $node) {   
        
                        $tmp[$node[$this->fields[1]]][] = $node;   
        
                }   
        
                krsort($tmp);   
        
                for ($i = count($tmp); $i > 0; $i--) {   
        
                        foreach ($tmp as $k => $v) {   
        
                                if (!in_array($k, $this->already)) {   
        
                                        if (!$this->tmp) {   
        
                                                $this->tmp = array($k, $v);   
        
                                                $this->already[] = $k;   
        
                                                continue;   
        
                                        } else {   
        
                                                foreach ($v as $key => $value) {   
        
                                                        if ($value[$this->fields[0]] == $this->tmp[0]) {   
        
                                                                $tmp[$k][$key]['child'] = $this->tmp[1];   
        
                                                                $this->tmp = array($k, $tmp[$k]);   
        
                                                        }   
        
                                                }   
        
                                        }   
        
                                }   
        
                        }   
        
                        $this->tmp = null;   
        
                }   
        
                $this->tmp = $tmp;   
        
        }   
        
        /**   
        
         * 反向递归   
        
         */
        
        private function recur_n($arr, $id) {   
        
                foreach ($arr as $v) {   
        
                        if ($v[$this->fields[0]] == $id) {   
        
                                $this->arr[] = $v;   
        
                                if ($v[$this->fields[1]] != $this->root) $this->recur_n($arr, $v[$this->fields[1]]);   
        
                        }   
        
                }   
        
        }   
        
        /**   
        
         * 正向递归   
        
         */
        
        private function recur_p($arr) {   
        
                foreach ($arr as $v) {   
        
                        $this->arr[] = $v[$this->fields[0]];   
        
                        if ($v['child']) $this->recur_p($v['child']);   
        
                }   
        
        }   
        
        /**   
        
         * 菜单 多维数组   
        
         *    
         * @param integer $id 分类id   
        
         * @return array 返回分支,默认返回整个树   
        
         */
        
        public function leaf($id = null) {   
        
                $id = ($id == null) ? $this->root : $id;   
        
                return $this->tmp[$id];   
        
        }   
        
        /**   
        
         * 导航 一维数组   
        
         *    
         * @param integer $id 分类id   
        
         * @return array 返回单线分类直到顶级分类   
        
         */
        
        public function navi($id) {   
        
                $this->arr = null;   
        
                $this->recur_n($this->result, $id);   
        
                krsort($this->arr);   
        
                return $this->arr;   
        
        }   
        
        /**   
        
         * 散落 一维数组   
        
         *    
         * @param integer $id 分类id   
        
         * @return array 返回leaf下所有分类id   
        
         */
        
        public function leafid($id) {   
        
                $this->arr = null;   
        
                $this->arr[] = $id;   
        
                $this->recur_p($this->leaf($id));   
        
                return $this->arr;   
        
        }   
        
}   
        
?>

实时给select下拉列表获取数据我们用得最多的就是ajax了,下面我来给大家介绍利用php与ajax快速实现实时获取下拉数据方法,大家可参考。

你点击需要的数据后,这个数据写如到当前输入框。
并在后面添加逗号隔开,继续输入的时候,后台处理继续输出数据以供选择。

下面我们来看实例,html代码

 代码如下 复制代码

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ajax实时获取下拉数据</pre>
<style><!--
.input_s{ position:relative}
.input_s ul{ list-style:none; margin:0; padding:0; width:200px; border:1px solid #ccc; border-bottom:none}
.input_s ul li{ border-bottom:1px solid #ccc}
.input_s ul li:hover{ color:#fff; background:#000}
--></style>
<pre></pre>
<div class="input_s"><input class="tla" id="tla" style="width: 500px;" type="text" name="tla" />
</div>
<pre>
<script type="text/javascript">// <![CDATA[
var funjieliu = function(fn, delay){//函数节流  add by shanmao 2013 - 1 - 18
    var timer = null;
    return function(){
        var context = this, args = arguments;
        clearTimeout(timer);
        timer = setTimeout(function(){
            fn.apply(context, args);
        }, delay);
    };
 };
document.getElementById("tla").onkeyup=funjieliu(function(){//键盘按下的时候
    var tla = $("#tla").val();
    if(tla){
        $.post("/cityosweb/default.php/shanmao/input_xiala",{tla:tla},function(data){
            if(data.status==1){
                $(".inul").html("");
                $.each(data.data,function(index,val){
                    $(".inul").append("
    <li>"+val.username+"</li>
 
");
                    });
            }
            },"json");
        }
    },500);
$(function(){
    $(".inul li").live("click",function(){
        var thval = $(this).html();
        var tla = $("#tla").val();
        var regexp = new RegExp(",");
        if(regexp.test(tla)){//如果input有值(",")则加上input里面的值
        $("#tla").val(tla+thval+",");
            }else{
        $("#tla").val(thval+",");
                }
        $(".inul").html("");
        $("#tla").focus();
        });
    });
// ]]></script>

php代码如上

 代码如下 复制代码

function input_xiala(){
    $input = new input();
    $tval = $input->post('tla');
    $u = M('User');
    if(strpos($tval,",")){//检查是否带有","
        $val = explode(",",$tval);//拆分成数组
        $tval = end($val);//数组的最后一个值
        }
    $re = $u->field('username,email')->where("username like '$tval%'")->limit(10)->select();
    $this->ajaxReturn($re,'success',1);
    }

实时输出如果放在js中我们可以直接使用settimeout来守时输入很方便,但是如果在php中实现起来就不能这样了,下面我来给介绍利用 ob_flush() 和 flush()函数实现即时实时输出内容.

一般情况下,PHP都是将整个页面全部执行完成后,才会把要输出的内容发送回客户端。例如有如下代码:

 代码如下 复制代码

for ($i = 0; $i < 10; $i++) {
 echo $i;
 sleep(1);
}

这段代码会在10秒钟后一次性输出“0123456789”。


对于运行时间较长的PHP程序来说可能都需要即时输出内容来查看运行情况。

 代码如下 复制代码

header(“Content-type:text/html;charset=utf-8″);

#设置执行时间不限时

 代码如下 复制代码
set_time_limit(0);

#清除并关闭缓冲,输出到浏览器之前使用这个函数。

 代码如下 复制代码
ob_end_clean();

#控制隐式缓冲泻出,默认off,打开时,对每个 print/echo 或者输出命令的结果都发送到浏览器。

 代码如下 复制代码
ob_implicit_flush(1);

这就用到了PHP的输出控制函数ob_flush()和flush()。我们把代码修改成下面这样:

 代码如下 复制代码


$str = 'Hello world";      
echo $str . str_repeat(' ', 256);      
ob_flush();      
flush();     
sleep(10); 
echo $str;

这段代码则会马上在屏幕上打印 Hello world。关键就在于第2和第3行调用的两个函数 ob_flush() 和 flush()。这两个函数得一起使用才能保证页面马上输出Hello world。其中str_repeat(' ', 256)则是为了解决某些浏览器必须在接收到256个字符后才会显示内容。

对上面函数升级

 代码如下 复制代码


<?php
error_reporting(0);
set_time_limit(0);

$buffer = ini_get('output_buffering');
echo str_repeat(' ',$buffer+1);
ob_end_flush();

for($i=1;$i<100;$i++){
    echo "$i<br>";
    sleep(1);
    flush();
}

这样,页面就会每一秒输出一个数字。
我们可以很方便的使用PHP的输出控制来实现页面执行进度的显示。不过,由于PHP页面有执行时间限制,而且长时间执行一个页面会对服务器造成一定的压力

在php中preg_match_all函数的作用是进行全局正则表达式匹配了,下面我来给大家详细介绍preg_match_all函数用法与在win2003平台导致apache重启的解决办法。

int preg_match_all ( string pattern, string subject, array matches [, int flags])


在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches 中。

搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。

flags 可以是下列标记的组合(注意把 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 合起来用没有意义):

PREG_PATTERN_ORDER

对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。

 代码如下 复制代码

<?php
preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",
    "<b>example: </b><div align=left>this is a test</div>",
    $out, PREG_PATTERN_ORDER);
print $out[0][0].", ".$out[0][1]."/n";
print $out[1][0].", ".$out[1][1]."/n";
?>

本例将输出:

<b>example: </b>, this is a test example: , this is a test

因此,$out[0] 包含匹配整个模式的字符串,$out[1] 包含一对 HTML 标记之间的字符串


对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。(即$matches[0] [0]为全部模式匹配中的每一项,$matches[0] [1]为全部模式匹配中的第二项,$matches[1] [0]为匹配每一个括号中的第一项,$matches[1] [0]为匹配每一个括号中的第二项)

 代码如下 复制代码

<?php

 
  preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",

 
  "<b>example: </b><div align=left>this is a test</div>",

 
  $out, PREG_PATTERN_ORDER);

 
  print $out[0][0].", ".$out[0][1]."n";

 
  print $out[1][0].", ".$out[1][1]."n";

 
  ?>

 


本例将输出:

 
  <b>example: </b>, <div align=left>this is a test</div>

 
  example: , this is a test

 
因此,$out[0] 包含匹配整个模式的字符串,$out[1] 包含一对 HTML 标记之间的字符串。

 
如果使用PREG_SET_ORDER


对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推。(即$matches[0] [0]为第一组匹配项中完整匹配的字符串,$matches[0] [1]为第一组匹配中完整匹配第一个括号中的字符串)

 代码如下 复制代码

<?php

 
  preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",

 
  "<b>example: </b><div align=left>this is a test</div>",

 
  $out, PREG_SET_ORDER);

 
  print $out[0][0].", ".$out[0][1]."n";

 
  print $out[1][0].", ".$out[1][1]."n";

 
  ?>

 


本例将输出:

 
  <b>example: </b>, example:

 
  <div align=left>this is a test</div>, this is a test

 
  本例中,$matches[0] 是第一组匹配结果,$matches[0][0] 包含匹配整个模式的文本,$matches[0][1] 包含匹配第一个子模式的文本,以此类推。同样,$matches[1] 是第二组匹配结果,等等。

 
PREG_OFFSET_CAPTURE

 
  如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其在 subject 中的偏移量。本标记自 PHP 4.3.0 起可用。

 
  如果没有给出标记,则假定为 PREG_PATTERN_ORDER。

 
  返回整个模式匹配的次数(可能为零),如果出错返回 FALSE。

 
例子 1. 从某文本中取得所有的电话号码

 代码如下 复制代码

 
  <?php

 
  preg_match_all ("/(? (d)? )? (?(1) [-s] ) d-d/x",

 
  "Call 555-1212 or 1-800-555-1212", $phones);

 
  ?>

例子 2. 搜索匹配的 HTML 标记(greedy)

 代码如下 复制代码

 
  <?php

 
  // \2 是一个逆向引用的例子,其在 PCRE 中的含义是

 
  // 必须匹配正则表达式本身中第二组括号内的内容,本例中

 
  // 就是 ([w]+)。因为字符串在双引号中,所以需要

 
  // 多加一个反斜线。

 
  $html = "<b>bold text</b><a href=howdy.html>click me</a>";

 
  preg_match_all ("/(<([w]+)[^>]*>)(.*)(</\2>)/", $html, $matches);

 
  for ($i=0; $i< count($matches[0]); $i++) {

 
  echo "matched: ".$matches[0][$i]."n";

 
  echo "part 1: ".$matches[1][$i]."n";

 
  echo "part 2: ".$matches[3][$i]."n";

 
  echo "part 3: ".$matches[4][$i]."nn";

 
  }

 
  ?>

本例将输出:

 
  matched: <b>bold text</b>

 
  part 1: <b>

 
  part 2: bold text

 
  part 3: </b>

 
  matched: <a href=howdy.html>click me</a>

 
  part 1: <a href=howdy.html>

 
  part 2: click me

 
part 3: </a>

例1. 在文本中搜索“php”

 代码如下 复制代码

    <?php

    // 模式定界符后面de “i” 表示不区分大小写字母de搜索

    if (preg_match (“/php/i”, “PHP is the web scripting language of choice.”)) {

    print “A match was found.”;

    } else {

    print “A match was not found.”;

    }

    ?>

    例2. 搜索单词“web”

 代码如下 复制代码

    <?php

    /* 模式中de b 表示单词de边界,因此只you独立de “web” 单词会被匹配,

    * 而不会匹配例如 “webbing” 或 “cobweb” 中de一部分 */

    if (preg_match (“/bwebb/i”, “PHP is the web scripting language of choice.”)) {

    print “A match was found.”;

    } else {

    print “A match was not found.”;

    }

    if (preg_match (“/bwebb/i”, “PHP is the website scripting language of choice.”)) {

    print “A match was found.”;

    } else {

    print “A match was not found.”;

    }

    ?>

    例3. 从 URL 中取出域名

 代码如下 复制代码

    <?php

    // 从 URL 中取得主机名

    preg_match(“/^(http://)?([^/]+)/i”,

    $host = $matches.;

    // 从主机名中取得后面两段

    preg_match(“/[^./]+.[^./]+$/”, $host, $matches);

    echo “domain name is: {$matches[0]}n”;

    ?>

    输出:

    domain name is: php.net


preg_match_all 导致apache 重启的解决办法

如 preg_match_all("/ni(.*?)wo/", $html, $matches);)进行分析匹配比较长的字符串 $html 时(大于10万字节,一般用于分析采集回来的网页源码),Apache服务器会崩溃自动重启。

在Apache错误日志里有这样的提示:

[Thu Apr 11 18:31:31 2013] [notice] Parent: child process exited with status 128 -- Restarting.
[Thu Apr 11 18:31:31 2013] [notice] Apache/2.2.9 (Win32) PHP/5.2.17 configured -- resuming normal operations
[Thu Apr 11 18:31:31 2013] [notice] Server built: Jun 13 2008 04:04:59
[Thu Apr 11 18:31:31 2013] [notice] Parent: Created child process 2964
[Thu Apr 11 18:31:31 2013] [notice] Disabled use of AcceptEx() WinSock2 API
[Thu Apr 11 18:31:31 2013] [notice] Child 2964: Child process is running
[Thu Apr 11 18:31:31 2013] [notice] Child 2964: Acquired the start mutex.
[Thu Apr 11 18:31:31 2013] [notice] Child 2964: Starting 350 worker threads.
[Thu Apr 11 18:31:31 2013] [notice] Child 2964: Listening on port 80.

那么如何增加win平台下 ThreadStackSize 的大小呢? 在apache的配置文件 httpd.conf 里启用 “Include conf/extra/httpd-mpm.conf”(删除前面的注释#),然后在 httpd-mpm.conf 文件里的 mpm_winnt_module 配置模块里设置 “ThreadStackSize 8400000”即可(大约8M)。

 代码如下 复制代码

 代码如下 复制代码
<IfModule mpm_winnt_module>
    ThreadStackSize 8400000
    ThreadsPerChild      200
    MaxRequestsPerChild    10000
    Win32DisableAcceptEx
</IfModule>

 

这里需要注意的是,32位的Apache程序只能最多使用大约2GB内存空间! 因此,ThreadStackSize 和ThreadsPerChild 的值相乘后(8M * 200)不应该超过2G,否则无法启动apache,出现的错误日志如下:
[Thu Apr 11 20:02:45 2013] [crit] (OS 8)存储空间不足,无法处理此命令。  : Child 4832: _beginthreadex failed. Unable to create all worker threads. Created 212 of the 220 threads requested with the ThreadsPerChild configuration directive.
    通过上面的提示,飘易可以告诉大家的是在我的这台服务器上,当线程堆栈大小设为8M时,我可以设置的线程数最多是212个。

本文章来给大家介绍如何在php中利用相关保代码来禁止浏览器缓存页面内容,在php中我们只要使用header命令带一些参数即可实例。

代码

 代码如下 复制代码

header("Cache-Control:no-cache,must-revalidate,no-store");   //这个no-store加了之后,Firefox下有效
header("Pragma:no-cache");
header("Expires:-1");

这个页面不缓存了,并且有个判断购物车商品为空就跳转到空购物车的页面,那么用户点击浏览器后退,回来之后,也直接到 购物车页面了。

PHP 禁止浏览器缓存页

 代码如下 复制代码

<?php   
  
//设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。   
header("Expires: Mon, 26 Jul 1970 05:00:00 GMT");     
  
//设置此页面的最后更新日期(用格林威治时间表示)为当天,可以强制浏览器获取最新资料   
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");     
  
//告诉客户端浏览器不使用缓存,HTTP 1.1 协议   
header("Cache-Control: no-cache, must-revalidate");     
  
//告诉客户端浏览器不使用缓存,兼容HTTP 1.0 协议   
header("Pragma: no-cache");   
  
?>


但加上面三句在IE中有效,在FF中无效,在FF中在加上下面这句。

 代码如下 复制代码

<meta http-equiv="Cache-Control" content="no-store">


日我突发奇想,找到了一种在任何情况下都会显示最新的网页内容的方法,描述如下:

请将网页的链接改为:

http://xxx.yyy.zzz/page.php?rand=XXXXXXX

其中http://xxx.yyy.zzz/page.php是你的网页,rand是一个你不会用到的Qurey字串,XXXXXXX是一个随机字串。


其它的如asp,jsp设置方法

ASP:

 代码如下 复制代码

response.expires=0
response.addHeader("pragma","no-cache")
response.addHeader("Cache-Control","no-cache, must-revalidate")

JSP:

 代码如下 复制代码

response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

[!--infotagslink--]

相关文章

  • Mybatis Plus select 实现只查询部分字段

    这篇文章主要介绍了Mybatis Plus select 实现只查询部分字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • JS基于Mootools实现的个性菜单效果代码

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

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • MyBatisPlus-QueryWrapper多条件查询及修改方式

    这篇文章主要介绍了MyBatisPlus-QueryWrapper多条件查询及修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-06-27
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • Oracle使用like查询时对下划线的处理方法

    这篇文章主要介绍了Oracle使用like查询时对下划线的处理方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-16
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • 解决mybatis-plus 查询耗时慢的问题

    这篇文章主要介绍了解决mybatis-plus 查询耗时慢的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-04
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • 几种延迟加载JS代码的方法加快网页的访问速度

    本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
  • PHP实现递归无限级分类

    在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。 递归,简单的说就是一段程序代码的重复调用,当把...2015-10-23