用PHP+MySQL 實現小型網站廣告管理

來源:互聯網
上載者:User
mysql|廣告|網站 圖片連結廣告大概是最為常用的網路廣告模式,但是多條廣告的動態隨機顯示可不是那麼簡單的事情。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——增添新的廣告 #
  <center><h1>增添新廣告</h1></center>
  //表單用來輸入新增廣告資訊,並交給下面的PHP程式處理;
  //其中,加權值priority數字愈大,載入頁面圖片出現的機率就愈高,預設為1。
  <FORM ENCTYPE="multipart/form-data" ACTION="AddNewAd.php3" METHOD=POST>
  廣告 Banner: <input name=banner TYPE="file"><br>
  廣告網址URL: <input name=url type=text size=30><br>
  圖片連結說明ALT: <input name=alt type=text size=30><br>
  顯示加權: <input name=priority type=text size=5 value=1><br>
  <input type="submit" VALUE="提交">
  </FORM>
  //處理表單資料的PHP程式;
  <?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 "<a href=" url"><img src="adbanner/ banner_name" alt=". alt." border=0></a><br>";
  echo "廣告網址: url<br>廣告連結說明: alt<br>顯示加權: priority ";
  }
  }
  ?>
  
  3.建立顯示廣告軟體:ShowAd.php3
  設計思路:得到資料庫表中所有各列資訊分別存到相應的一維數組中,將所有廣告的權值相加得到一個最大隨機數,每次載入頁面用srand() 產生一個隨機樹種子,再用rand()函數產生一個從1到最大隨機數之間的一個隨機數,然後按照一定的規則隨機顯示不同廣告條,權值越大被顯示的機會越大。
  
  # ShowAd.php3——隨機顯示廣告 #
  <?php
  //串連選擇資料庫;
  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[]="<a href=" adurl[ i]" target=new></a>";
  }
  }
  //顯示廣告,權值越大,顯示機會越大;
  echo ad[0];
  ?>


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.