当前位置:  编程技术>php
本页文章导读:
    ▪php mysql实现无限分类的实例代码      本节内容: php mysql实现无限分类 1,简单的通过递归查询加目录path字段的无限分类 缺点:查询数据库次数太多,不方便其他操作,比如删除节点。添加节点,移动节点。 2,左右值无限分类.........
    ▪phpmyadmin导入大于2M的SQL文件      本节内容: phpmyadmin导入大于2M的SQL文件 一、修改c:/windows/php.ini文件。 如果是Win2000的机器,应该是c/winnt/php.ini,用写字板打开php.ini文件: 1 、查找post_max_size,指通过表单POST给PHP的所能接收.........
    ▪php 网站流量统计的原理      本节内容: 网站流量统计 1.如何统计停留时间 具体参考“客户统计”相关程序。大致说来,一般有3个表:日表,月表,年表 日表基本设计:IP,进来时间,离开时间,目前时间,停留页面.........

[1]php mysql实现无限分类的实例代码
    来源: 互联网  发布时间: 2013-12-24

本节内容:
php mysql实现无限分类

1,简单的通过递归查询加目录path字段的无限分类
缺点:查询数据库次数太多,不方便其他操作,比如删除节点。添加节点,移动节点。

2,左右值无限分类,预排序二叉树
缺点:操作繁琐,数据库冗余,且添加删除修改都要进行左右值更新

本分类方法的优势:
1,数据库结构简单,只有 cid parentid name 三个字段,无任何冗余字段
2,不使用递归查询,所有操作只需一条sql语句
3,所有数据在读取一次数据库后,在数组内进行分析处理,节省数据库服务器资源

一,创建数据库以及表:
 

代码示例:
CREATE DATABASE `sortclass`DEFAULT CHARSET utf8;
CREATE TABLE IF NOT EXISTS `class` (
`cid` mediumint(8) unsigned NOT NULL auto_increment,
`pid` mediumint(8) unsigned NOT NULL,
`cname` varchar(50) NOT NULL,
PRIMARY KEY (`cid`),
KEY `pid` (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

二,处理文件的例子
 

代码示例:

<?php
/**
* 无限分类的例子
* by www.
*/
header("Content-type: text/html; charset=utf-8");
//连接数据库
$link = mysql_connect()('localhost','root','eric') or die(mysql_error());
mysql_select_db('sortclass',$link);
//无限分类类库
class SortClass{

var $data = array();
var $child = array(-1=>array());
var $layer = array(-1=>-1);
var $parent = array();
var $link;
var $table;
function SortClass($link, $table){
$this->setNode(0, -1, '顶极节点');
$this->link = $link;
$this->table = $table;
$node = array();
$results = mysql_query()('select * from '.$this->table.'',$this->link);
while($node = mysql_fetch_assoc($results)){
$this->setNode($node['cid'],$node['pid'],$node['cname']);
}
}
function setNode ($id, $parent, $value){
$parent = $parent?$parent:0;
$this->data[$id] = $value;
$this->child[$id] = array();
$this->child[$parent][] = $id;
$this->parent[$id] = $parent;
$this->layer[$id] = !isset()($this->layer[$parent])? 0 : $this->layer[$parent] + 1;
}
function getList (&$tree, $root= 0){
foreach ($this->child[$root] as $key=>$id){
$tree[] = $id;
if ($this->child[$id]) $this->getList($tree, $id);
}
}
function getValue ($id){return $this->data[$id];}
function getLayer ($id, $space = false){
return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];
}
function getParent ($id){return $this->parent[$id];}
function getParents ($id){
while ($this->parent[$id] != -1){
$id = $parent[$this->layer[$id]] = $this->parent[$id];
}
ksort($parent);
reset($parent);
return $parent;
}
function getChild ($id){return $this->child[$id];}
function getChilds ($id = 0){
$child = array($id);
$this->getList($child, $id);
return $child;
}
function addNode($name,$pid){
mysql_query("insert into $this->table (`pid`,`cname`) values ('$pid','$name')",$this->link);
}
function modNode($cid, $newName){
mysql_query("update $this->table set `cname`='$newName' where `cid` = $cid",$this->link);
}
function delNode($cid){
$allChilds = $this->getChilds($cid);
$sql ='';
if(empty($allChilds)){
$sql = "delete from $this->table where `cid` = $cid";
}else{
$sql = 'delete from '.$this->table.' where `cid` in ('.implode(',',$allChilds).','.$cid.')';
}
mysql_query($sql,$this->link);
}
function moveNode($cid, $topid){
mysql_query("update $this->table set `pid`=$topid where `cid` = $cid", $this->link);
}
}
//函数
function back(){
echo '<script language="javascript">window.location.href="/blog_article/test/.html"+new Date().getTime();</script>';
exit;
}
//声成select
function makeSelect($array,$formName){
global $tree;
$select = '<select name="'.$formName.'">';
foreach ($array as $id){
$select.='<option value="'.$id.'">'.$tree->getLayer($id, '|-').$tree->getValue($id)."</option>";
}
return $select.'</select>';
}
$tree = new SortClass($link,'`class`');
$op = !empty($_POST['op']) ? $_POST['op'] : $_GET['op'];
if(!empty($op)){

if($op=='add'){
$tree->addNode($_POST['cname'],$_POST['pid']);
back();
}

if($op=='mod'){
$tree->modNode($_POST['cid'],$_POST['cname']);
back();
}

if($op=='del'){
$tree->delNode($_GET['cid']);
back();
}

if($op=='move'){
$tree->moveNode($_POST['who'],$_POST['to']);
back();
}
}
$category = $tree->getChilds();
?>
<style type="text/css">
body{font-size:12px;}
ul{list-style:none;}
a{cursor:pointer;}
</style>
<script language="javascript">
function $(e){return document.getElementById(e);}
function mod(cid){
$('cid').value=cid;
$('op').value='mod';
$('name').style.border='1px solid red';
}
</script>
<form action="/blog_article/test.html" method="post">
名称:<input type="text" id="name" name="cname" /> 添加到:<?=makeSelect($category,'pid')?><br />
<input type="hidden" id="op" name="op" value="add" />
<input type="hidden" id="cid" name="cid" />
<input type="submit" value="Submit" />
</form>
<h3>移动分类</h3>
<form action="/blog_article/test.html" method="post">
<?=makeSelect($category,'who')?>移动到:<?=makeSelect($category,'to')?>
<input type="hidden" id="op" name="op" value="move" />
<input type="submit" value="Submit" />
</form>
<ul>
<?php
foreach ($category as $id){
echo '<li>'.$tree->getLayer($id, '|- ').$tree->getValue($id).' <a href="/blog_article/test/op/del/amp;cid/.html'.$id.'">Del</a> <a onclick="mod('.$id.')">Edit</a> </li>';
}
?>
</ul>


    
[2]phpmyadmin导入大于2M的SQL文件
    来源: 互联网  发布时间: 2013-12-24

本节内容:
phpmyadmin导入大于2M的SQL文件

一、修改c:/windows/php.ini文件。
如果是Win2000的机器,应该是c/winnt/php.ini,用写字板打开php.ini文件:

1 、查找post_max_size,指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值,默认为8M,看你自己需要进行改变。
2 、查找File Uploads,首先确认file_uploads = on ;是否允许通过HTTP上传文件的开关,默认为ON即是开。 upload_tmp_dir ;
查找upload_max_filesize ;即允许上传文件大小的最大值。默认为2M。
3 、如果要上传 > 8M的文件,那么只设置上述四项还不定一定可以。最好对下面的参数也进行设置:
 

查找max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒。
max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒 。
memory_limit = 8M ;每个PHP页面所吃掉的最大内存,默认8M。

二、修改c:/phpmyadmin/import.php文件。
用写字板打开import.php文件:
1 、查找$memory_limit,默认为$memory_limit = 2 * 1024 * 1024 ;自己修改。
2 、下边三四行的位置有同样的语句,自己修改。

三、到这里还不行,IIS的问题。

1 )解决在 IIS 6.0 中,无法上传大容量文件的办法:
1 、先在服务里关闭 iis admin service 服务。
2 、找到 windows/system32/inetsrv/ 下的 metabase.xml 文件。
3 、用写字板打开,找到 ASPMaxRequestEntityAllowed 把它修改为需要的值(默认为: 204800 ,即:200K)。
4 、存盘,然后重启 iis admin service 服务,重启IIS。

2 )解决在 IIS 6.0 中,无法下载超过4M的附件步骤:
1 、先在服务里关闭 iis admin service 服务。
2 、找到 windows/system32/inetsrv/ 下的 metabase.xml 文件。
3 、用写字板打开,找到 AspBufferingLimit 把它修改为需要的值(默认为: 4194304 ,即:4MB)。
4 、存盘,然后重启 iis admin service 服务,重启IIS

附,另外的一种导入大文件的方法。

二、数据备份和恢复
默认的数据导出、和导入最大文件有2M的最大限制。如果要操作大于2M的数据库备份文件就需要预先将文件上传到phpmyadmin的某个目录。

1 .首先在phpmyadmin个跟目录建立一个目录,比如叫ports
2 .在config. default .php中搜$cfg [ 'UploadDir' ] ,这个变量定义保存导入文件存放的目录,它下面的$cfg [ 'SaveDir' ] 定义的是数据导出文件的存放目录,我们都定义为ports
 

$cfg [ 'UploadDir' ] = ' ports ' ;                   
$cfg [ 'SaveDir' ] = ' ports ' ;
 

注意:ports目录的权限,saveDir只要能让php脚本往里边写东西。最后的就是操作完了,务必清空改目录,防止数据被别有用心的人下载

再分享一个方法,MYSQL导入导出.sql文件。

一,MYSQL的命令行模式的设置:
桌面->我的电脑->属性->环境变量->新建->
PATH=“;path/mysql/bin;”其中path为MYSQL的安装路径。

二,命令行进入MYSQL的方法:
1.C:/>mysql -h hostname -u username -p
按ENTER键,等待然后输入密码。这里hostname为服务器的名称,如localhost,username为MYSQL的用户名,如root。
进入命令行后可以直接操作MYSQL了。
2.简单介绍一下MYSQL命令:
 

代码示例:
mysql->CREATE DATABASE dbname;//创建数据库
  mysql->CREATE TABLE tablename;//创建表
  mysql->SHOW DATABASES;//显示数据库信息,有那些可用的数据库。
  mysql->USE dbname;//选择数据库
  mysql->SHOW TABLES;//显示表信息,有那些可用的表
  mysql->DESCRIBE tablename;//显示创建的表的信息

三,从数据库导出数据库文件:
1.将数据库mydb导出到e:/mysql/mydb.sql文件中:
打开开始->运行->输入cmd 进入命令行模式
c:/>mysqldump -h localhost -u root -p mydb >e:/mysql/mydb.sql
然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。

2.将数据库mydb中的mytable导出到e:/mysql/mytable.sql文件中:
c:/>mysqldump -h localhost -u root -p mydb mytable>e:/mysql/mytable.sql

3.将数据库mydb的结构导出到e:/mysql/mydb_stru.sql文件中:
c:/>mysqldump -h localhost -u root -p mydb --add-drop-table >e:/mysql/mydb_stru.sql

四,从外部文件导入数据到数据库中:
从e:/mysql/mydb2.sql中将文件中的SQL语句导入数据库中:
1.从命令行进入mysql,然后用命令CREATE DATABASE mydb2;创建数据库mydb2。
2.退出mysql 可以输入命令exit;或者quit;
3.在CMD中输入下列命令:
c:/>mysql -h localhost -u root -p mydb2 < e:/mysql/mydb2.sql
然后输入密码,就OK了。

五,导入文件大小限制问题的解决:
默认情况下:mysql 对导入文件大小有限制的,最大为2M,所以当文件很大时候,直接无法导入。

解决方法:
1.在php.ini中修改相关参数:
影响mysql导入文件大小的参数有三个:
  memory_limit=128M,upload_max_filesize=2M,post_max_size=8M
修改upload_max_filesize=200 M 这里修改满足你需要的大小,
可以同时修改其他两项memory_limit=250M post_max_size=200M

如此,即可导入200M以下的.sql文件了。

您可能感兴趣的文章:
phpMyAdmin导入和恢复大容量sql文件的方法
解决Phpmyadmin导入导出时中文乱码的问题
phpmyadmin 不能导入大SQL文件的解决方法
phpmyadmin导入大数据库文件时问题的解决方法


    
[3]php 网站流量统计的原理
    来源: 互联网  发布时间: 2013-12-24

本节内容:
网站流量统计

1.如何统计停留时间
具体参考“客户统计”相关程序。大致说来,一般有3个表:日表,月表,年表
日表基本设计:IP,进来时间,离开时间,目前时间,停留页面,客户ID(如果登陆),SESSIONID等等
客户访问页面,查询日表有数据没有(SESSIONID),有就更新目前时间和停留页面,没有就新建
判断客户离开时间,可以在前台用JS实现。可以预先定义目前时间和真实时间差多少为离线
年表和月表实际是统计用表,每天使用计划任务按照规则分类统计日表数据

2.有的统计只有一个图片也能实现是什么原理?
实际不是一个图片!!而是一个统计程序(写日表的),最后返回一个图片而已!!!

3.网站热力图又是怎么实现?
这个,一般使用AJAX实现即时存储。AJAX监视鼠标点击事件,有点击行为发生,传输到后台处理(鼠标坐标,点击文字等等)

4.比如站长统计只是引入了一个PHP文件,是如何统计出分辨率这些东西的呢?
JAVASCRIPT有专门的函数取屏幕分辨率的。只是最后通过AJAX传回后台处理!

附,php网站访问统计的相关文章:
php网站访问统计代码
php统计网站访问次数
php 统计页面浏览次数(文本缓存)的代码
统计在线人数的php代码


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3