用PHP实现小型站点广告管理


Posted in PHP onOctober 09, 2006

图片链接广告大概是最为常用的网络广告模式,但是多条广告的动态随机显示可不是那么简单的事情。PHP的文件上传函数提供了在这块468x60像素的区域(网页广告的标准尺寸)实现能够根据权值大小而随机显示广告的解决方案,从而避免了开发FTP程序或是ASP和Perl CAI中需要外挂扩展才能实现此项功能的弊端。

本例在PHP4+MySQL+Apache for Win9x/2000下调试通过,共包括两部分:用来增加新广告的程序AddNewAd.php3以及显示广告的程序ShowAd.php3,都存放在服务器PHP文件目录下的“test/guanggao/”目录中。在guanggao目录中建立一个存放广告链接图片的子目录“adbanner/”。下面我们按步骤进行分析。

1.首先,建立MySQL数据库:guanggao

在Windows环境下,建立一个MySQL空数据库很简单,因为每个数据库都是存在于mysql/data/目录下的一个子目录,所以只要在该目录下新建子目录guanggao就可以了,这时数据库内还没有任何表和数据。

2.建立新增广告程序:AddNewAd.php3

设计思路:其中先用表单得到用户的新广告信息;然后用PHP函数copy()将链接图片(banner)文件上传到服务器adbanner目录下;最后将图片文件名、广告网址、说明、加权信息等写入建立的MySQL数据表ad中。该程序代码如下:

# AddNewAd.php3——增添新的广告 #

增添新广告

    //表单用来输入新增广告信息,并交给下面的PHP程序处理;
    //其中,加权值priority数字愈大,载入页面图片出现的机率就愈高,默认为1。

    广告 Banner:  

    广告网址URL:  

    图片链接说明ALT:  

    显示加权:  

     

    //处理表单数据的PHP程序;
         //图片banner名和链接地址不能为空;
    if (( banner!="") & ( url!="")) {
    //若广告链接和图片名已被使用,必须另选;
    if (file_exists("adbanner/". banner_name)) {
    echo "广告图片. banner_name.已被使用,请另选!";
    exit;
    };
    //上传链接图片文件名到adbanner目录;
    copy( banner,"adbanner/". banner_name);
   //连接MySQL数据库;
     connection = mysql_connect();  
   //选择数据源guanggao,执行查询;;
   mysql_select_db("guanggao", );  
    query="SELECT * FROM ad";
    result=mysql_query( query);
   //如果数据表ad不存在,则按以下结构创建新数据表ad;
   if(!result){
   mysql_query("
   create table ad(
   url varchar(100) not null,
   banner varchar(150) not null,
   alt varchar(100) null,
   priority  tinyint(4) default '1' not null  
   )") or die(mysql_error());  
   }
   //向数据表ad中插入来自于表单的新数据;
    query="insert into ad(url, banner, alt, priority) values(' url', ' banner_name', '
  alt', ' priority')";
   //插入成功则显示以下信息;
    try=mysql_query( query);
   if( try){
   echo "一条广告新增完成,详细信息:
";
   echo "
";
   echo "广告网址:  url
广告链接说明:  alt
显示加权:  priority ";
    }
    }
    ?>

3.建立显示广告程序:ShowAd.php3

设计思路:得到数据库表中所有各列信息分别存到相应的一维数组中,将所有广告的权值相加得到一个最大随机数,每次载入页面用srand() 产生一个随机树种子,再用rand()函数产生一个从1到最大随机数之间的一个随机数,然后按照一定的规则随机显示不同广告条,权值越大被显示的机会越大。

    # ShowAd.php3——随机显示广告 #
         //连接选择数据库;
     connection = mysql_connect();  
    mysql_select_db("guanggao",  connection);
    //执行查询得到广告条数;
     query="SELECT url, banner, alt, priority FROM ad where priority > 0";
     result=mysql_db_query("guanggao",  query);
     numrows=mysql_num_rows( result);
   //使用mysql_fetch_object()函数获取有用的列信息并存到相应数组中;
    while( row = mysql_fetch_object( result)) {
     adurl[]= row->url;
     adbanner[]= row->banner;
     adalt[]= row->alt;
     adpriority[]= row->priority;
    }
    //初始化中间变量;
     numcheck= numrows;
     i= pricount=0;
    //得到最大随机数;
    while( numcheck) {
     pricount+= adpriority[ i];
     i++; numcheck--;
   }
   //程序执行时的百万分之一秒产生随机数种子;
   srand((double)microtime()*1000000);
   //得到1到最大随机数之间的一个随机数;
    pri = rand(1, pricount);
   //中间变量清零;
     pricount=0;
    //按加权值不同,产生用来显示广告的、元素为字串的数组;
    for(  i=0;  i< numrows-1;  i++) {
     pricount +=  adpriority[ i];
    if ( pri <=  pricount) {
     ad[]="";
    }
    }
    //显示广告,权值越大,显示机会越大;
    echo  ad[0];
    ?> 

PHP 相关文章推荐
PHP设计聊天室步步通
Oct 09 PHP
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
UCenter 批量添加用户的php代码
Jul 17 PHP
php生成二维码时出现中文乱码的解决方法
Dec 18 PHP
php+ajax登录跳转登录实现思路
Jul 31 PHP
php利用header函数下载各种文件
Aug 24 PHP
PHP针对多用户实现更换头像功能
Sep 04 PHP
PHP实现二维数组按某列进行排序的方法
Nov 18 PHP
CI框架中类的自动加载问题分析
Nov 21 PHP
PHP赋值的内部是如何跑的详解
Jan 13 PHP
php+mysql开发中的经验与常识小结
Mar 25 PHP
在Laravel 中实现是否关注的示例
Oct 22 PHP
一个域名查询的程序
Oct 09 #PHP
PHP脚本的10个技巧(7)
Oct 09 #PHP
PHP脚本的10个技巧(6)
Oct 09 #PHP
复杂检索数据并分页显示的处理方法
Oct 09 #PHP
PHP脚本的10个技巧(5)
Oct 09 #PHP
打造计数器DIY三步曲(中)
Oct 09 #PHP
打造计数器DIY三步曲(下)
Oct 09 #PHP
You might like
php访问查询mysql数据的三种方法
2006/10/09 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
php简单实现快速排序的方法
2015/04/04 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
2016/03/11 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
javascript实现数据双向绑定的三种方式小结
2017/03/09 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
[01:31]完美与DOTA2历程
2014/07/31 DOTA
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
如何在 Django 模板中输出 &quot;{{&quot;
2020/01/24 Python
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
期末总结的个人自我评价
2013/11/02 职场文书
2014年调度员工作总结
2014/11/19 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
武当山导游词
2015/02/03 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android