首页 > explode

二款php无限分类代码与原理

第一分类(父分类)-->第二分类(子分类)-->第三分类(孙分类)

这种亲缘分类越多,程序和数据库教程的控制就越加的复杂困难.在同一级的分类处理和控制是非常的简单的,因为只需要一个数据库来记载这一级的分类就行了,如:系统,新闻等分类,在这一级上处理是很简单的,但对一个网站来说一级分类是不够的,还需要再分类
//我们建一个表"class"
CREATE TABLE `class` (
  `id` int(11) NOT NULL auto_increment COMMENT '分类id',
  `f_id` int(11) NOT NULL COMMENT '父id',
  `name` varchar(25) collate gbk_bin NOT NULL COMMENT '分类名称',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=gbk COLLATE=gbk_bin AUTO_INCREMENT=1 ;
 
//首先我们往数据库里插入‘新闻’这个大分类,因为‘新闻’是最大分类,上面没有父类了,所以我把它的f_id设置为0。
INSERT INTO `class` (`id`, `f_id`, `name`) VALUES(1, 0, '新闻');   //id这个字段是自动增长的,可以不写值。
 
//然后我们再往数据库里插入‘PHP新闻’这个分类,它的父类‘新闻’的id是1,所以它的f_id设置为1。
INSERT INTO `class` (`id`, `f_id`, `name`) VALUES(2, 1, 'PHP新闻');
 
//然后我们再往数据库里插入‘PHP6.0出来了’这个分类,它的父类‘PHP新闻’的id是2,所以它的f_id设置为2。
INSERT INTO `class` (`id`, `f_id`, `name`) VALUES(3, 2, 'PHP6.0出来了');
 
//同理,我们可以这样一直往下插入分类,也就达到了无限分类。
//我们可以发现插入一个分类的原则关键是找到这个分类的父类的id,然后作为这个分类的f_id字段的值。
//假设要插入跟‘新闻’同一个级别的分类‘技术’,也就是说它也是最大分类,上面没有父类了,那么它的f_id也设置为0;
INSERT INTO `class` (`id`, `f_id`, `name`) VALUES(4, 0, '技术');
 
//在‘技术’下面又有一个分类‘PHP技术’,那么我们怎么插入呢,首先找到‘PHP技术’的父类‘技术’的id,然后作为自己的f_id字段的值。
INSERT INTO `class` (`id`, `f_id`, `name`) VALUES(5, 4, 'PHP技术');
 
//看到这里,想必大家应该都明白怎么往数据库里插入各个分类了。就不再举例了。

阅读全文

php 代码运行时间查看类

php教程 代码运行时间查看类

//date:2011-08-05
class RunTime//页面执行时间类
{
 private $starttime;//页面开始执行时间
 private $stoptime;//页面结束执行时间
 private $spendtime;//页面执行花费时间
 function getmicrotime()//获取返回当前微秒数的浮点数
 {
  list($usec,$sec)=explode(" ",microtime());
  return ((float)$usec + (float)$sec);
 }
 function start()//页面开始执行函数,返回开始页面执行的时间
 {
  $this->starttime=$this->getmicrotime();
 }
 function end()//显示页面执行的时间
 {
  $this->stoptime=$this->getmicrotime();
  $this->spendtime=$this->stoptime-$this->starttime;
  //return round($this->spendtime,10);
 }
 function display()
 {
     //$this->end();
     echo "<p>运行时间:".round($this->spendtime,10)."秒</p>";
 }
}
/*调用方法  
$timer=new Runtime();
$timer->start(); 

阅读全文

php文件上传之原理分析与上传类代码

php教程文件上传之原理分析与上传类代码

今天研究PHP注册POST/GET大变量的时候,看到了关于这块的一些东西,跟踪了半天,,先记录下来,免得以后再如此麻烦的跟踪
处理器注册:
[mod_php5.c, mod_php5模块初始化]
php_init_handler(server_rec *s, pool *p)
    ->[main/SAPI.c]sapi_startup(&apache_sapi_module)
        ->[main/SAPI.c]
sapi_globals_ctor(&sapi_globals)
            ->[main/php_content_types.c]php_setup_sapi_content_types(TSRMLS_C)
                ->[main/php_content_types.c
php_post_entries如下]sapi_register_post_entries(php_post_entries
TSRMLS_CC)
                    ->[main/SAPI.c]sapi_register_post_entry(p
TSRMLS_CC)

阅读全文

php小型数据库(不用mysql做网站)

php教程小型数据库教程(不用mysql教程做网站) include 'pdbm.php'; $timestart = explode(' ', microtime()); $timestart = $timestart[0] + $timestart[1]; $pdbm = new pdbm('test'); $pdbm->open(pdbm_creat | pdbm_rewd); for ($i = 0; $i < 100000; $i++) {     $pdbm->insert("key{$i}",...
阅读全文

php中常用的函数集合

function getip() {
 if(getenv('http_client_ip') && strcasecmp(getenv('http_client_ip'), 'unknown')) {
  $onlineip = getenv('http_client_ip');
 } elseif(getenv('http_x_forwarded_for') && strcasecmp(getenv('http_x_forwarded_for'), 'unknown')) {
  $onlineip = getenv('http_x_forwarded_for');
 } elseif(getenv('remote_addr') && strcasecmp(getenv('remote_addr'), 'unknown')) {
  $onlineip = getenv('remote_addr');
 } elseif(isset($_server['remote_addr']) && $_server['remote_addr'] && strcasecmp($_server['remote_addr'], 'unknown')) {
  $onlineip = $_server['remote_addr'];
 }
 $onlineip = preg_replace("/^([d.]+).*/", "1", $onlineip);
 return $onlineip;
}

阅读全文