简单php生成 execel表格 程序

 更新时间:2016年11月25日 16:06  点击:1537

简单php生成 execel表格 程序

header("Content-type:application/vnd.ms-excel");
       header("Content-Disposition:filename=test.xls");
       echo "test1\t";
       echo "test2\t\n";
       echo "test1\t";
       echo "test2\t\n";
       echo "test1\t";


<?
       header("content-type:text/html; charset=utf-8");
       $file_name=$_GET['name']; //服务器的真实文件名
       $file_realName=urldecode($_GET['real']); //数据库的文件名urlencode编码过的
$file_dir="upload/";
$file = fopen($file_dir . $file_name,"r"); // 打开文件
// 输入文件标签
header( "Pragma: public" );
header( "Expires: 0" );
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . iconv("UTF-8","GB2312//TRANSLIT",$file_realName));
// 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit;
?>

<?php

/**php简单 模板技术
 * 作者:牛哄哄
 * QQ:455703030
 * 声明:我正则写的不地道,欢迎高手帮我修改一下
 *      可自由传播、使用,但请保留此信息
 */

class FLEA_View_NHH
{
 //模板存储目录
 public $viewDir = null;
 //缓存存储目录
 public $cacheDir = null;
 //是否过滤缓存中多余空格、Tab、回车
 public $filterCache = true;
 
 //模板中需要显示的数据
 private $data = array();
 
 public function __construct()
 {
  $viewConf = (array)FLEA::getAppInf('viewConfig');
  if (empty($viewConf)) {
   FLEA::loadClass('FLEA_Exception_ExpectedFile');
   __THROW(new FLEA_Exception_ExpectedFile('The config file is not found: '.$viewConf));
  }
  $this->viewDir = $viewConf['viewDir'];
  $this->cacheDir = $viewConf['cacheDir'];
  $this->filterCache = $viewConf['filterCache'];
 }
 
 public function assign($var, $value)
 {
  $this->data[$var] = $value;
 }
 
 public function display($viewName)
 {
  $view = $this->viewDir.'/'.$viewName.'.html';
  $cache = $this->cacheDir.'/'.$viewName.'.php';
  if (!file_exists($view)) {
   FLEA::loadClass('FLEA_Exception_ExpectedFile');
   __THROW(new FLEA_Exception_ExpectedFile('The view file is not found: '.$view));
  }
  if (filemtime($view) > @filemtime($cache)) {
   $this->parseView($view, $cache);
  }
  if (file_exists($cache)) {
   if (!defined('IN_THIS_VIEW')) { define('IN_THIS_VIEW', TRUE); }
   include($cache);
  } else {
   FLEA::loadClass('FLEA_Exception_ExpectedFile');
   __THROW(new FLEA_Exception_ExpectedFile('The cache file has not read in correctly: '.$cache));
  }
 }
 
 private function parseView($view, $cache = null)
 {
  /* 如果模板不存在,则输出错误消息 */
  if (!file_exists($view)) {
   FLEA::loadClass('FLEA_Exception_ExpectedFile');
   __THROW(new FLEA_Exception_ExpectedFile('The view file is not found: '.$view));
  }
  /* 读取模板内容为一个字符串 */
  $view = file_get_contents($view);
  /* 将<!--{ }-->替换为{{ }} */
  $view = str_replace(array('<!--{', '}-->'), array('{{', '}}'), $view);
  /* 清除注释 */
  $view = preg_replace("/\{\{\*(.*?)\*\}\}/", '', $view);
  /* 解析assign方法引入的变量 */
  $view = preg_replace('/\$([A-Za-z0-9_]+)/', '$this->data[\'\\1\']', $view);
  /* 机械模板内部定义变量 */
  $view = preg_replace('/\$\[([A-Za-z0-9_]+)\]/', '$\\1', $view);
  /* 解析{{ $var }}基本变量输出标签 */
  $view = preg_replace('/\{\{\s*\$(.+?)\s*\}\}/', '<? echo $\\1; ?>', $view);
  /* 解析{{ include  }}标签 */
  $view = preg_replace('/\{\{\s*include\s+(.+?)\s*\}\}/', '<? include \\1; ?>', $view);
  /* 解析{{ html  }}标签 */
  $view = preg_replace('/\{\{\s*html\s+(.+?)\s*\}\}/', '<? echo file_get_contents(\\1); ?>', $view);
  /* 解析{{ code  }}标签 */
  $view = preg_replace('/\{\{\s*code\s+(.+?)\s*\}\}/', '<? \\1; ?>', $view);
  /* 解析{{ if  }}标签 */
  $view = preg_replace('/\{\{\s*if\s+(.+?)\s*\}\}/', '<? if (\\1) { ?>', $view);
  /* 解析{{ elseif  }}标签 */
  $view = preg_replace('/\{\{\s*elseif\s+(.+?)\s*\}\}/', '<? } elseif(\\1) { ?>', $view);
  /* 解析{{ while  }}标签 */
  $view = preg_replace('/\{\{\s*while\s+(.+?)\s*\}\}/', '<? while (\\1) { ?>', $view);
  /* 解析{{ foreach  }}标签 */
  $view = preg_replace('/\{\{\s*foreach\s+(.+?)\s*\}\}/', '<? foreach (\\1) { ?>', $view);
  /* 解析{{ for  }}标签 */
  $view = preg_replace('/\{\{\s*for\s+(.+?)\s*\}\}/', '<? for (\\1) { ?>', $view);
  /* 解析{{ else }}标签 */
  $view = preg_replace('/\{\{\s*else\s*\}\}/', '<? } else { ?>', $view);
  /* 解析{{ /while }},{{ /if }},{{ /for }},{{ /foreach }}标签 */
  $view = preg_replace('#\{\{\s*/[a-z]+\s*\}\}#', '<? } ?>', $view);
  /* 递归解析嵌套的子模板 */
  if (preg_match_all('/\{\{\s*view\s+(.+?)\s*\}\}/', $view, $viewsInView)) {
   /* 循环解析此模板中所有子模板,并将解析结果保存到数组$views */
   $viewInViews = array();
   foreach ($viewsInView[1] as $viewInView) {
    $viewInViews[] = $this->parseView(eval('return '.$viewInView.';'));
   }
   /* 将该模板中所有子模板的标签分别替换为其对应的解析结果 */
   $view = str_replace($viewsInView[0], $viewInViews, $view);
  }
  /* 合并相邻标签的解析结果 */
  $view = preg_replace('/\?>\s*<\?/', '', $view);
  /* 如果开启了缓存过滤,则过滤掉其中多余空格、Tab、回车 */
  if ($this->filterCache == true) {
   $view = preg_replace('/\s+/', ' ', $view);
  }
  /* 如果是在解析子模板,则返回解析结果 */
  if ($cache == null) { return $view; }
  /* 加入防止直接访问缓存的代码 */
  $view = '<? if (!defined("IN_THIS_VIEW")) exit("The page is not found!"); ?>'.$view;
  /* 将模板解析结果写入缓存文件 */
  @file_put_contents($cache, $view);
 }
}

/**
 * 一、配置
 * 配置文件请在FLEA的配置文件中修改
 * 格式为:
 * 'viewConfig' => array(
 *   'viewDir' => '',    //模板文件路径
 *   'cacheDir' => '',    //缓存文件路径
 *   'filterCache' => true,   //是否在模板解析完毕后对缓存进行优化
 * );
 *
 * 二、标签
 * 模板文件后缀名为.html
 * 标签同时支持两种<!--{ }-->或{{ }},你可以根据情况自由使用
 * 1、{{* *}}  添加注释,只支持单行,多行的不知道怎么写,郁闷
 * 2、{{ $abc }}  输出一个变量,变量的格式化输出请使用<{code }>标签执行一个函数进行格式化输出
 * 3、{{ $[abc] }}  输出一个模板内部定义的变量,变量名要用中括号括起来
 * 4、{{ include 'abc/bcd.php' }}  包含一个动态文件,这个文件中可使用通过assign方法加入的变量和模板内部定义的变量,但不可以使用本引擎支持的标签
 * 5、{{ html 'abc/bcd.html' }}  包含一个静态文件,此标签仅在PHP5下可用,被包含的文件中不可使用任何变量或标签,此标签可获得几倍于include标签的性能
 * 6、{{ code echo substr($abc,1) }}  执行一段PHP代码,包括赋值,函数等等
 * 7、{{ if $abc==1 }}和{{ elseif $abc==2 }}和{{ /if }}  判断,分支
 * 8、{{ while $abc<1000 }}和{{ /while }}  while循环
 * 9、{{ for $i=0;$i<1000;$i++ }}和{{ /for }}  for循环
 * 10、{{ foreach $abc as $k => $v }}和{{ /foreach }}  foreach循环
 * 11、{{ view 'abc/bcd.html' }}  嵌套另一个模板,支持模板的无限嵌套
 *
 * 注意:
 * 1,include,html,view标签可使用常量来指定路径,这样会更加方便
 * 2,assign引入的变量与模板内部定义的变量采用不同的命名空间,因此可重名
 * 3,对于while,foreach,for循环需要引入的变量,最好采用模板内部定义的变量
 * 4,模板内部定义变量 {{ code $[i]=1 }}
 * 5,所有标签内部不可包含{}大括号,否则无法正确解析
 * 6,所有标签的参数部分必须写为单行,否则无法正确解析
 * 7,在调试时,为方便查看编译结果可关闭缓存优化,发布时,建议开启,可提高性能
 * 8,此模板引擎仅可于FLEA下使用,若需不依赖FLEA的版本,请自行修改
 * 9,标签中的参数使用PHP的语法
 * 10,数组的引用与输出{{ $abc['id'] }}
 * 11,所有标签一律小写
 * 12,标签的参数中不可包含{{或}},否则会解析错误
 */

?>

Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变程序的逻辑内容不会影响到美工的页面设计,美工重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。

什么是PHP模板?

该如何使我的PHP脚本从设计中独立出来?这无疑地是在PHP邮件列表上所提问的最多的问题之一。虽然PHP被标榜为“HTML嵌入式语言”,在写过许多PHP和HTML混合式的工程之后,我产生了一个分离表单和内容的想法。而且,在许多公司里规划设计者的角色和程序设计者是分开的。于是,这样的一个模板解决方案产生了……

例如在一个公司,一个应用程序的开发流程如下:在提交计划文档之后,界面设计者[美工]制作了网站的外观模型,然后把它交给后台程序员。程序员使用PHP 实现商业逻辑,同时使用外观模型做成基本架构。然后工程被返回到HTML页面设计者继续完善。就这样工程可能在后台程序员和页面设计者之间来来回回好几次。由于后台程序员不喜欢干预任何有关HTML标签,同时也不需要美工们和PHP代码混在一起;美工设计者只需要配置文件,动态区块和其他的界面部分,不必要去接触那些错综复杂的PHP代码。因此,这时候有一个很好的模板支持就显得很重要了。

纵观现今存在的许多PHP模板解决方案(比如PHPLIB),大多数都只是提供了用模板取代变量和将动态区块的功能有限的格式化的基本方法。但是我们的需求比这个要高的多。我们完全不想要PHP程序员去设计HTML 页面,可是这又是不可避免的。例如:如果美工想要在动态区块之间交替不同的背景颜色,他就可能得和程序员预先说好。同样,美工们也应该有自己对于页面设计的配置文件,这同样可以通过变量把他们拉到模板里边去。

Smarty的诞生

早在1999年后期,我们就已经开始为模板引擎写说明文档。在完成这个文档之后,我们开始用C写一个模板引擎,并有希望被包含到PHP里去。在撞上了许多的技术难题的同时,“什么是模板应该做的,什么不该做”这个问题,也被热烈的讨论着。从这些经验,我们决定应该用PHP将模板引擎写成一个类,让任何觉得合适的人使用它。所以我们写了一个引擎,从此就有了Smarty。(注:这个类以前从来没有公开发表过)。这个类几乎达到了我们所有的要求:常规变量替换,支持包括其他模板,使用配置文件集成设置,嵌入PHP代码,限制'if'语句的作用,还有更多的可以多层嵌套的健壮的动态区块。它用常规表达式做到这一切,于是代码变得相当令人费解。在每次调用的时候,都要去解析那些语法和常规表达式,于是在大型应用的时候,它显然慢了下来。在程序员的眼光看来,最大的问题还是使用PHP脚本建立和处理模板和动态区块的所有必要工作。我们应该如何使他变得更简单?

我们可以想象Smarty应该有怎样的最后表现。我们知道PHP代码如果没有了模板解析的开销将有多快,我们也知道从一般的美工看来PHP语言是多么的“恐怖”,然而这一切可以被一种更简单的模板语法掩饰掉。我们应该怎样把这两种方法的长处结合起来?

于是,Smarty诞生了……

Smarty优点

1. 速度:采用Smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。

2. 编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)

3. 缓存技术:Smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。

4. 插件技术:Smarty可以自定义插件。插件实际就是一些自定义的函数。

5. 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。

不适合使用Smarty的地方

1. 需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,导致经常重新编译模板,所以这类型的程序使用Smarty会使模板处理速度变慢。

2. 小项目。小项目因为项目简单而美工与程序员兼于一人的项目,使用Smarty会在一定程度上丧失PHP开发迅速的优点。

Smarty简明教程

一. 安装     
首先打开网页http://smarty.php.net/download.php,下载最新版本的Smarty。解压下载的文件(目录结构还蛮复杂的)。接下来演示给大家一个安装实例,看过应该会举一反三的。
    (1) 在根目录下建立了新的目录learn/,再在learn/里建立一个目录smarty/。将刚才解压缩出来的目录的libs/拷贝到smarty/里,再在smarty/里新建templates目录,templates里新建cache/,templates/,templates_c/, config/.


    (2) 新建一个模板文件:index.tpl,将此文件放在learn/smarty/templates/templates目录下,代码如下:
Copy code<!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type" content="text/html;charset=gb2312"><title>Smarty</title></head><body>{$hello}</body></html>
          新建index.php,将此文件放在learn/下:
Copy code<?php//引用类文件require 'smarty/libs/Smarty.class.php';$smarty = new Smarty;//设置各个目录的路径,这里是安装的重点$smarty->template_dir ="smarty/templates/templates";$smarty->compile_dir ="smarty/templates/templates_c";$smarty->config_dir = "smarty/templates/config";$smarty->cache_dir ="smarty/templates/cache";//smarty模板有高速缓存的功能,如果这里是true的话即打开caching,但是会造成网页不立即更新的问题,当然也可以通过其他的办法解决$smarty->caching = false;$hello = "Hello World!";//赋值$smarty->assign("hello",$hello);//引用模板文件$smarty->display('index.tpl');?>

(3) 执行index.php就能看到Hello World!了。

二. 赋值       

在模板文件中需要替换的值用大括号{}括起来,值的前面还要加$号。例如{$hello}。这里可以是数组,比如{$hello.item1},{$hello.item2}…       
而PHP源文件中只需要一个简单的函数assign(var , value)。       
简单的例子:       
*.tpl:
        Hello,{$exp.name}!Good {$exp.time}

        *.php:
        $hello[name]= “Mr. Green”;

        $hello[time]=”morning”;       
        $smarty->assign(“exp”,$hello);       
        output:
        Hello,Mr.Green!Good morning

三. 引用       
网站中的网页一般header和footer是可以共用的,所以只要在每个tpl中引用它们就可以了。       
示例:*.tpl:
        {include file="header.tpl"}

        {* body of template goes here *}

        {include file="footer.tpl"}

四. 判断

模板文件中可以使用if else等判断语句,即可以将一些逻辑程序放在模板里。"eq","ne", "neq", "gt", "lt","lte", "le", "gte"    "ge","is even", "is odd", "is not even", "is notodd", "not", "mod", "div by", "evenby", "odd by","==","!=",">","<","<=",">="这些是if中可以用到的比较。看看就能知道什么意思吧。

        示例:
        {if $name eq"Fred"}

        WelcomeSir.

        {elseif $name eq"Wilma"}

        WelcomeMa'am. 


       
        Welcome,whatever you are.

        {/if}
五. 循环       

在Smarty里使用循环遍历数组的方法是section,如何赋值遍历都是在模板中解决,php源文件中只要一个assign就能解决问题。       
示例:
{* this examplewill print out all the values of the $custid array *}

{sectionname=customer loop=$custid}

id: {$custid[customer]}<br>
{/section}
OUTPUT:
id: 1000<br>id: 1001<br>id: 1002<br>

六. 常见问题       
Smarty将所有大括号{}里的东西都视为自己的逻辑程序,于是我们在网页中想插入javascript函数就需要literal的帮忙了,literal的功能就是忽略大括号{}。       
示例:Copy code                <scriptlanguage=javascript>              function isblank(field) {                        if (field.value == '')                                { return false; }                        else                                {                                document.loginform.submit();                                return true;                                }              }        </script>{/literal}

php无限级分页代码
class Tree
{
        public $data=array();
        public $cateArray=array();
        
        function Tree()
        {
               
        }
        function setNode ($id, $parent, $value)
    {
        $parent = $parent?$parent:0;
        $this->data[$id]                = $value;
        $this->cateArray[$id]        = $parent;
    }
    function getChildsTree($id=0)
    {
            $childs=array();
            foreach ($this->cateArray as $child=>$parent)
            {
                    if ($parent==$id)
                    {
                            $childs[$child]=$this->getChildsTree($child);
                    }
                    
            }
            return $childs;
    }
    function getChilds($id=0)
    {
            $childArray=array();
            $childs=$this->getChild($id);
            foreach ($childs as $child)
            {
                    $childArray[]=$child;
                    $childArray=array_merge($childArray,$this->getChilds($child));
            }
            return $childArray;
    }
    function getChild($id)
    {
            $childs=array();
            foreach ($this->cateArray as $child=>$parent)
            {
                    if ($parent==$id)
                    {
                            $childs[$child]=$child;
                    }
            }
            return $childs;
    }
    //单线获取父节点
    function getNodeLever($id)
    {
            $parents=array();
            if (key_exists($this->cateArray[$id],$this->cateArray))
            {
                    $parents[]=$this->cateArray[$id];
                    $parents=array_merge($parents,$this->getNodeLever($this->cateArray[$id]));
            }
            return $parents;
    }
    function getLayer($id,$preStr='|-')
    {
            return str_repeat($preStr,count($this->getNodeLever($id)));
    }
    function getValue ($id)
    {
        return $this->data[$id];
    } // end func
}

/*$Tree = new Tree("请选择分类");
//setNode(目录ID,上级ID,目录名字);
$Tree->setNode(1, 0, '目录1');
$Tree->setNode(2, 1, '目录2');
$Tree->setNode(5, 3, '目录5');
$Tree->setNode(3, 0, '目录3');
$Tree->setNode(4, 2, '目录4');
$Tree->setNode(9, 4, '目录9');
$Tree->setNode(6, 2, '目录6');
$Tree->setNode(7, 2, '目录7');
$Tree->setNode(8, 3, '目录8');

//print_r($Tree->getChildsTree(0));
//print_r($Tree->getChild(0));
//print_r($Tree->getLayer(2));

$category = $Tree->getChilds();

//遍历输出
foreach ($category as $key=>$id)
{
    echo $id.$Tree->getLayer($id, '|-').$Tree->getValue($id)."\n";
}*/

?>

[!--infotagslink--]

相关文章

  • php简单数据操作的实例

    最基础的对数据的增加删除修改操作实例,菜鸟们收了吧...2013-09-26
  • java 画pdf用itext调整表格宽度、自定义各个列宽的方法

    这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31
  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • element表格行列拖拽的实现示例

    本文主要介绍了element表格行列拖拽的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-02
  • C#实现动态生成表格的方法

    这篇文章主要介绍了C#实现动态生成表格的方法,是C#程序设计中非常实用的技巧,需要的朋友可以参考下...2020-06-25
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php生成唯一数字id的方法汇总

    关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?当然不是,其实有两种方法可以解决。 1. 如果你只用php而不用数据库的话,那时间戳+随...2015-11-24
  • jQuery为动态生成的select元素添加事件的方法

    下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
  • vue 中使用 vxe-table 制作可编辑表格的使用过程

    这篇文章主要介绍了vue 中使用 vxe-table 制作可编辑表格的使用过程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-08-13
  • PHP自动生成后台导航网址的最佳方法

    经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29
  • Vue 自适应高度表格的实现方法

    这篇文章主要介绍了Vue 自适应高度表格的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-14
  • 基于jquery实现表格无刷新分页

    这篇文章主要介绍了基于jquery实现表格无刷新分页,功能实现了前端排序功能,增加了前端搜索功能,感兴趣的小伙伴们可以参考一下...2016-01-08
  • js生成随机数的方法实例

    js生成随机数主要用到了内置的Math对象的random()方法。用法如:Math.random()。它返回的是一个 0 ~ 1 之间的随机数。有了这么一个方法,那生成任意随机数就好理解了。比如实际中我们可能会有如下的需要: (1)生成一个 0 - 1...2015-10-21
  • JavaScript实现动态生成表格

    这篇文章主要为大家详细介绍了JavaScript实现动态生成表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-02
  • BootStrap和jQuery相结合实现可编辑表格

    这篇文章主要介绍了BootStrap和jQuery相结合实现可编辑表格的相关资料,需要的朋友可以参考下...2016-04-23
  • PHP验证码生成与验证例子

    验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,...2016-11-25
  • 基于elementUI竖向表格、和并列的案例

    这篇文章主要介绍了基于elementUI竖向表格、和并列的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-26
  • PHP生成不同颜色、不同大小的tag标签函数

    复制代码 代码如下:function getTagStyle(){ $minFontSize=8; //最小字体大小,可根据需要自行更改 $maxFontSize=18; //最大字体大小,可根据需要自行更改 return 'font-size:'.($minFontSize+lcg_value()*(abs($maxFo...2013-10-04
  • 关于MySQL外键的简单学习教程

    在MySQL中,InnoDB引擎类型的表支持了外键约束。 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持); 2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时...2015-11-24