|
本例在php4+MySQL+Apache for Win9x/2000下調(diào)試通過,共包括兩部分:用來增加新廣告的程序AddNewAd.php3以及顯示廣告的程序ShowAd.php3,都存放在服務(wù)器php文件目錄下的“test/guanggao/”目錄中。在guanggao目錄中建立一個(gè)存放廣告鏈接圖片的子目錄“adbanner/”。下面我們按步驟進(jìn)行分析。
1.首先,建立MySQL數(shù)據(jù)庫:guanggao
在Windows環(huán)境下,建立一個(gè)MySQL空數(shù)據(jù)庫很簡單,因?yàn)槊總€(gè)數(shù)據(jù)庫都是存在于mysql/data/目錄下的一個(gè)子目錄,所以只要在該目錄下新建子目錄guanggao就可以了,這時(shí)數(shù)據(jù)庫內(nèi)還沒有任何表和數(shù)據(jù)。
2.建立新增廣告程序:AddNewAd.php3
設(shè)計(jì)思路:其中先用表單得到用戶的新廣告信息;然后用php函數(shù)copy()將鏈接圖片(banner)文件上傳到服務(wù)器adbanner目錄下;最后將圖片文件名、廣告網(wǎng)址、說明、加權(quán)信息等寫入建立的MySQL數(shù)據(jù)表ad中。該程序代碼如下:
# AddNewAd.php3――增添新的廣告 #
增添新廣告
//表單用來輸入新增廣告信息,并交給下面的php程序處理;
//其中,加權(quán)值priority數(shù)字愈大,載入頁面圖片出現(xiàn)的機(jī)率就愈高,默認(rèn)為1。
廣告 Banner:
廣告網(wǎng)址URL:
圖片鏈接說明ALT:
顯示加權(quán):
//處理表單數(shù)據(jù)的php程序;
//圖片banner名和鏈接地址不能為空;
if (( banner!="") & ( url!="")) {
//若廣告鏈接和圖片名已被使用,必須另選;
if (file_exists("adbanner/". banner_name)) {
echo "廣告圖片. banner_name.已被使用,請另選!";
exit;
};
//上傳鏈接圖片文件名到adbanner目錄;
copy( banner,"adbanner/". banner_name);
//連接MySQL數(shù)據(jù)庫;
connection = mysql_connect();
//選擇數(shù)據(jù)源guanggao,執(zhí)行查詢;;
mysql_select_db("guanggao", );
query="SELECT * FROM ad";
result=mysql_query( query);
//如果數(shù)據(jù)表ad不存在,則按以下結(jié)構(gòu)創(chuàng)建新數(shù)據(jù)表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());
}
//向數(shù)據(jù)表ad中插入來自于表單的新數(shù)據(jù);
query="insert into ad(url, banner, alt, priority) values(' url', ' banner_name', '
alt', ' priority')";
//插入成功則顯示以下信息;
try=mysql_query( query);
if( try){
echo "一條廣告新增完成,詳細(xì)信息:
";
echo "
";
echo "廣告網(wǎng)址: url
廣告鏈接說明: alt
顯示加權(quán): priority ";
}
}
?>
3.建立顯示廣告程序:ShowAd.php3
設(shè)計(jì)思路:得到數(shù)據(jù)庫表中所有各列信息分別存到相應(yīng)的一維數(shù)組中,將所有廣告的權(quán)值相加得到一個(gè)最大隨機(jī)數(shù),每次載入頁面用srand() 產(chǎn)生一個(gè)隨機(jī)樹種子,再用rand()函數(shù)產(chǎn)生一個(gè)從1到最大隨機(jī)數(shù)之間的一個(gè)隨機(jī)數(shù),然后按照一定的規(guī)則隨機(jī)顯示不同廣告條,權(quán)值越大被顯示的機(jī)會(huì)越大。
# ShowAd.php3――隨機(jī)顯示廣告 #
//連接選擇數(shù)據(jù)庫;
connection = mysql_connect();
mysql_select_db("guanggao", connection);
//執(zhí)行查詢得到廣告條數(shù);
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()函數(shù)獲取有用的列信息并存到相應(yīng)數(shù)組中;
while( row = mysql_fetch_object( result)) {
adurl[]= row->url;
adbanner[]= row->banner;
adalt[]= row->alt;
adpriority[]= row->priority;
}
//初始化中間變量;
numcheck= numrows;
i= pricount=0;
//得到最大隨機(jī)數(shù);
while( numcheck) {
pricount+= adpriority[ i];
i++; numcheck--;
}
//程序執(zhí)行時(shí)的百萬分之一秒產(chǎn)生隨機(jī)數(shù)種子;
srand((double)microtime()*1000000);
//得到1到最大隨機(jī)數(shù)之間的一個(gè)隨機(jī)數(shù);
pri = rand(1, pricount);
//中間變量清零;
pricount=0;
//按加權(quán)值不同,產(chǎn)生用來顯示廣告的、元素為字串的數(shù)組;
for( i=0; i< numrows-1; i++) {
pricount += adpriority[ i];
if ( pri <= pricount) {
ad[]="";
}
}
//顯示廣告,權(quán)值越大,顯示機(jī)會(huì)越大;
echo ad[0];
?>
php技術(shù):用PHP實(shí)現(xiàn)小型站點(diǎn)廣告管理,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。