澳门新浦京8455com用PHP实现小型站点广告管理(修正版)

今天做照着例子做,发现其中有很多错误的地方,为了让广大菜鸟兄弟更好的理解,我把修改后的文件给大家看看。
数据结构如下: CREATE TABLE ad ( url varchar(100) NOT NULL, banner
varchar(150) NOT NULL, alt varchar(100), priority int(4) DEFAULT ‘1’ NOT
NULL, )增加广告的文件
***************putad.php********************
? if($submit){ //处理表单数据的PHP程序;
//图片banner名和链接地址不能为空; if (( banner!=) & ( url!=)) {
//若广告链接和图片名已被使用,必须另选; if (file_exists(adbanner/.
$banner_name)) { echo 广告图片. banner_name.已被使用,请另选!; exit;
}; //上传链接图片文件名到adbanner目录; copy( $banner,adbanner/.
$banner_name); //连接MySQL数据库; include(config.inc);
//向数据表ad中插入来自于表单的新数据; $query=insert into ad (url, alt,
priority, banner) values(‘$url’,’$alt’,’$priority’,’$banner_name’);
//插入成功则显示以下信息; $try=mysql_query($query); if($try){ echo
一条广告新增完成,详细信息:; echo ; echo 广告网址:$url 广告链接说明:
$alt 显示加权:$priority ; }else{echo 出错;} } }else{ ? html head
titleUntitled/title /head body bgcolor=#ffffff p广告交换表/p form
method=post action=putad.php enctype=multipart/form-data p图 片 URL:
input type=file name=banner /p p连接 URL: input type=text name=url /p
p显示权数: input type=text name=priority/p p连接说明: input type=text
name=alt /p p input type=submit name=submit value=确定 input type=reset
name=concel value=重填 /p /form /body /html ?}?
***************showad.php********************
? include(config.inc); $query=SELECT url, banner, alt, priority from ad;
$result=mysql_query($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;$i++) { $pricount+=$adpriority[$i]; if
($pri=$pricount) { $ad[]=a href=$adurl[$i]img
src=adbanner/$adbanner[$i] alt=$adalt[$i] border=0/a; } }
//显示广告,权值越大,显示机会越大; echo$ad[0]; ?
注释:其中config.inc里面就是连接mysql数据库的东西,在这就不列出来了。上面的程式还有改进空间,还有好多功能没实现,如果你愿意你也可以修改。不过修改后最好给一份给我:terence611005@sina.com
有问题请和我联系:oicq:18680986

图片链接广告大概是最为常用的网络广告模式,但是多条广告的动态随机显示可不是那么简单的事情。PHP的文件上传函数提供了在这块468×60像素的区域实现能够根据权值大小而随机显示广告的解决方案,从而避免了开发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文件上传到服务器adbanner目录下;最后将图片文件名、广告网址、说明、加权信息等写入建立的MySQL数据表ad中。该程序代码如下:
# AddNewAd.php3——增添新的广告 # 增添新广告
//表单用来输入新增广告信息,并交给下面的PHP程序处理;
//其中,加权值priority数字愈大,载入页面图片出现的机率就愈高,默认为1。
广告
Banner:广告网址URL:图片链接说明ALT:显示加权://处理表单数据的PHP程序;
//图片banner名和链接地址不能为空; if (( banner!=””) & {
//若广告链接和图片名已被使用,必须另选; 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; //如果数据表ad不存在,则按以下结构创建新数据表ad;
if{ mysql_query(” create table ad not null, banner varchar not null,
alt varchar null, prioritytinyint default ‘1’ not null)”) or die;}
//向数据表ad中插入来自于表单的新数据; query=”insert into ad(url,
banner, alt, priority) values(‘ url’, ‘ banner_name’, ‘ alt’, ‘
priority’)”; //插入成功则显示以下信息; try=mysql_query{ echo
“一条广告新增完成,详细信息: “; echo ” “; echo “广告网址:url
广告链接说明:alt 显示加权:priority “; } } ?>
3.建立显示广告程序:ShowAd.php3
设计思路:得到数据库表中所有各列信息分别存到相应的一维数组中,将所有广告的权值相加得到一个最大随机数,每次载入页面用srand函数产生一个从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;
//使用mysql_fetch_object()函数获取有用的列信息并存到相应数组中;
while( row = mysql_fetch_object { adurl[]= row->url;
adbanner[]= row->banner; adalt[]= row->alt; adpriority[]=
row->priority; } //初始化中间变量; numcheck= numrows; i= pricount=0;
//得到最大随机数; while { pricount+= adpriority[ i]; i++; numcheck–;
} //程序执行时的百万分之一秒产生随机数种子; srand*1000000);
//得到1到最大随机数之间的一个随机数; pri = rand; //中间变量清零;
pricount=0; //按加权值不同,产生用来显示广告的、元素为字串的数组; for {
pricount +=adpriority[ i]; if { ad[]=””; } }
//显示广告,权值越大,显示机会越大; echoad[0]; ?>

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图