简单易用的计数器(数据库)


Posted in PHP onOctober 09, 2006

用法
<?
include("counter.php");
Counter(__FILE__);//为文件增加一个计数
if($PHP_SELF=="/index.php")
{
$count=Counter("INDEX_COUNT");//为首页增加一个计数
}
else
{
$count=Counter("INDEX_COUNT","",0);//取得首页计数
}
echo "你是第$count个访问者";
?>
--------counter.php-----------
<?
if(!isset($PHP_INCLUDE_COUNTER_PHP))
{$PHP_INCLUDE_COUNTER_PHP=__FILE;

$counter_error_state=0;
$counter_error_msg="";
function Counter($file,$query="",$add=1)
{
        $db_name="database";
        $db_user="username";
        $db_pass="password";
        $db_table="counter";

        if(empty($file))
        {
                $counter_error_state=-100;
                $counter_error_msg="缺少第一个参数或参数为空";
                return -100;
        }
        global $PHP_SELF,$QUERY_STRING,$counter_error_state,$counter_error_msg;
        if(empty($db_user)||!$db_user||$db_user=="")$res=@mysql_connect("localhost");
        else $res=@mysql_connect("localhost",$db_user,$db_pass);
        if(!$res)
        {
                $counter_error_states=-10;
                $counter_error_msg="不能连接数据库";
                return -10;
        }
        if(!@mysql_select_db($db_name))
        {
                $counter_error_states=-11;
                $counter_error_msg="不能选择数据库";
                return -11;
        }
        else
        {
                if(!$db_res=@mysql_query("SELECT * FROM ".$db_table))
                {
                        if(!$db_res=@mysql_query("CREATE TABLE ".$db_table." (id INTEGER AUTO_INCREMENT,PRIMARY KEY (id),file VARCHAR(255),query VARCHAR(255),time VARCHAR(255),count INT)"))
                        {
                                $counter_error_states=-20;
                                $counter_error_msg="不能创建数据表";
                                return -20;
                        }
                        @mysql_free_result($db_res);
                }
                $str="SELECT * FROM ".$db_table." WHERE file=\"".$file."\" AND query=\"".$query."\"";

                if(!$db_res=@mysql_query($str))
                {
                        $counter_error_states=-30;
                        $counter_error_msg="不能查询记录";
                        return -30;
                }
                $num=@mysql_num_rows($db_res);
                if($num>1)
                {
                        $counter_error_states=-40;
                        $counter_error_msg="发生没有预期的错误=数据行数错误";
                        return -40;
                }
                $count=0;
                $str="INSERT ";
                $strWhere="";
                if($num==1)
                {
                        $row=@mysql_fetch_array($db_res);
                        @mysql_free_result($db_res);
                        $count=$row["count"];
                        $id=$row["id"];
                        $str="UPDATE ";
                        $strWhere=" WHERE id=$id";
                }
                if($add<1)return $count;
                $count+=$add;
                $str.=$db_table." SET file=\"".$file."\",query=\"".$query."\",time=\"".date("Y;n;d;G;i;s")."\",count=".$count.$strWhere;
                $db_res=@mysql_query($str);
                if(!$db_res)
                {
                        $counter_error_states=-50;
                        $counter_error_msg="不能添加或更新记录";
                        return -50;
                }
                return $count;
        }
}

}
?> 

PHP 相关文章推荐
php设计模式 Template (模板模式)
Jun 26 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
基于PHP输出缓存(output_buffering)的深入理解
Jun 13 PHP
深入php中var_dump方法的使用详解
Jun 24 PHP
php 常用算法和时间复杂度
Jul 01 PHP
PHP函数in_array()使用详解
Aug 20 PHP
smarty内置函数capture用法分析
Jan 22 PHP
CodeIgniter分页类pagination使用方法示例
Mar 28 PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 PHP
php中时间函数date及常用的时间计算
May 12 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 15 PHP
用Php实现链结人气统计
Oct 09 #PHP
也谈 PHP 和 MYSQL
Oct 09 #PHP
在WIN98下以apache模块方式安装php
Oct 09 #PHP
Php+SqlServer实现分页显示
Oct 09 #PHP
写一个用户在线显示的程序
Oct 09 #PHP
PHP4引用文件语句的对比
Oct 09 #PHP
一个php作的文本留言本的例子(六)
Oct 09 #PHP
You might like
php生成文件
2007/01/15 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
js实现网页收藏功能
2015/12/17 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
javascript每日必学之继承
2016/02/23 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
详解Golang 与python中的字符串反转
2017/07/21 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
web页面录屏实现
2019/02/12 HTML / CSS
Java里面有没有全局变量?为什么?
2015/02/06 面试题
Linux开机引导的步骤是什么
2014/02/26 面试题
电气专业推荐信范文
2013/11/18 职场文书
项目专员岗位职责
2013/12/04 职场文书
优秀演讲稿范文
2013/12/29 职场文书
社团招新策划书
2014/02/04 职场文书
大型晚会策划方案
2014/02/06 职场文书
十周年庆典策划方案
2014/06/03 职场文书
4s店活动策划方案
2014/08/25 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
公司安全管理制度范本
2015/08/05 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
JavaScript实现复选框全选功能
2021/04/11 Javascript
Java实现注册登录跳转
2022/06/16 Java/Android