PHP クラシック プロジェクト ケース - (1) ブログ管理システム 3
この記事では、ホームページの左側のナビゲーション バーと右側のアナウンス領域の実装について説明します。
6. 左側のナビゲーション バー:
1. カレンダー:
ここには 1 つの PHP ファイルがあります。カレンダーが表示されます。ファイルのみ:
cale.php
<?php class calendar{ private $year,$month,$day; private $week=array("Sun","Mon","Tue","Wed","Thu","Fri","Sat"); private $_month=array( "01"=>"一月", "02"=>"二月", "03"=>"三月", "04"=>"四月", "05"=>"五月", "06"=>"六月", "07"=>"七月", "08"=>"八月", "09"=>"九月", "10"=>"十月", "11"=>"十一月", "12"=>"十二月" ); function setyear($year){ //设置年份 $this->year=$year; } function getyear(){ //获得年份 return $this->year; } function setmonth($month){ //设置月份 $this->month=$month; } function getmonth(){ //获得月份 return $this->month; } function setday($day){ //设置日期 $this->day=$day; } function getday(){ //获得日期 return $this->day; } function OUT(){ //输出日历 $this->_env(); //设置显示的日期 $week=$this->getweek($this->year,$this->month,$this->day); //获得日期为星期几 $fweek=$this->getweek($this->year,$this->month,1); //获得此月第一天为星期几 echo "<div style=width:255;font:9pt> <form action=$_SERVER[PHP_SELF] method='post' style='margin:0'> <select name='month' onchange='this.form.submit();'>"; for($ttmpa=1;$ttmpa<13;$ttmpa++){ //输出12个月 $ttmpb=sprintf("%02d",$ttmpa); if(strcmp($ttmpb,$this->month)==0){ $select="selected style='background-color:#FAFDE2'"; }else{ $select=""; } echo "<option value='$ttmpb' $select>".$this->_month[$ttmpb]."</option>"; } echo " </select> <select name='year' onchange='this.form.submit();'>"; //输出年份,前后10年 for($ctmpa=$this->year-10;$ctmpa<$this->year+10;$ctmpa++){ if($ctmpa>2050){ break; } if($ctmpa<1980){ continue; } if(strcmp($ctmpa,$this->year)==0){ $select="selected style='background-color:#FAFDE2'"; }else{ $select=""; } echo "<option value='$ctmpa' $select>$ctmpa</option>"; } echo "</select> </form><br/> <table border=0 align=center>"; for($Tmpa=0;$Tmpa<count($this->week);$Tmpa++){ //输出星期的标头 echo "<td>".$this->week[$Tmpa]."</td>"; } for($tmpb=1;$tmpb<=date("t",mktime(0,0,0,$this->month,$this->day,$this->year));$tmpb++){ //输出所有日期 if(strcmp($tmpb,$this->day)==0){ //获得当前日期,并采用特色颜色做为标记 $flag=" bgcolor='#FF3366'"; }else{ $flag=' bgcolor=#FAFDE2'; } if($tmpb==1){ echo "<tr>"; for($tmpc=0;$tmpc<$fweek;$tmpc++){ echo "<td></td>"; } } if(strcmp($this->getweek($this->year,$this->month,$tmpb),0)==0){ //如果是周日 echo "<tr><td align='center' $flag>$tmpb</td>"; }else{ echo "<td align='center' $flag>$tmpb</td>"; } } echo "</table></div>"; } //获得方法内指定的日期的星期数 function getweek($year,$month,$day){ $week=date("w",mktime(0,0,0,$month,$day,$year)); //获得星期 return $week; //获得星期 } function _env(){ if(isset($_POST["month"])){ $month=$_POST["month"]; }else{ $month=date("m"); //默认为本月 } if(isset($_POST["year"])){ $year=$_POST["year"]; }else{ $year=date("Y"); //默认为本年 } $this->setyear($year); $this->setmonth($month); $date=sprintf('%1d',date('d')); $this->setday($date); }} $D=new calendar; $D->OUT(); ?>
index.php
<!-- 日历显示 --> <tr> <span style="white-space:pre"> </span><td height="155" align="center" valign="top"><?php include 'cale.php';?></td> </tr>
ここでは、クエリを実行するときに独自のツール クラス sqlHelper.class.php
<!-- 最新文章显示 --><tr><span style="white-space:pre"> </span><td height="125" align="center" valign="top" > <table width="200" border="0" cellpadding="0" cellspacing="0"> <tr> <span style="white-space:pre"> </span><td> <table width="201" border="0" cellpadding="0" cellspacing="0" style="margin-top:25px" valign="top"> </table> </td> </tr> <?php $sql="select id,title from tb_article order by id desc limit 5"; $res = $sqlHelper->execute_dql($sql); $i=1; while($info=$res->fetch_assoc()){ ?> <tr> <span style="white-space:pre"> </span><td width="201" align="left" valign="top"> <a href="article.php?file_id=<?php echo $info['id'];?>" target="_blank"><font size="2"><?php echo $i."、".substr($info['title'],0,27);?></font></a> </td> </tr> <?php $i=$i+1; } ?> <tr> <td height="10" align="right"><a href="file_more.php"><img src=" images/more.gif" width="27" height="9" border="0"> </a></td> </tr> </table> </td></tr>
class SqlHelper{ public $mysqli; public $dbname="db_tmlog"; public $username="root"; public $password="root"; public $host="localhost"; public function __construct(){ $this->mysqli = new mysqli($this->host, $this->username, $this->password, $this->dbname); if($this->mysqli->connect_error){ die("连接失败".$this->mysqli->connect_error); } $this->mysqli->query("set names utf8"); } //执行dql语句 public function execute_dql($sql){ $res = $this->mysqli->query($sql) or die($this->mysqli->error); //这里返回的是一个结果集,当调用$row = $res->fetch_assoc()时是一条一条的向下走,应该使用while循环 return $res; } <span style="font-family: Arial, Helvetica, sans-serif;">}</span>
<!-- 最新图片显示 --><tr><span style="white-space:pre"> </span><td height="201" align="center" valign="top"><br/> <table width="145" border="0" cellspacing="0" cellpadding="0"> <tr> <span style="white-space:pre"> </span><td> <table width="201" border="0" cellspacing="0" cellpadding="0" valign="top" style="margin-top:5px;"> <?php <span style="white-space:pre"> </span>$sql="select id,tpmc,file from tb_tpsc order by id desc limit 2"; $res2 = $sqlHelper->execute_dql($sql); while($info=$res2->fetch_assoc()){ <span style="white-space:pre"> </span>$query="select * from tb_tpsc where id=".$info['id']; <span style="white-space:pre"> </span>$result=$sqlHelper->execute_dql($query); <span style="white-space:pre"> </span>if($row = $result->fetch_assoc()){ <span style="white-space:pre"> </span>$data = $row['file']; <span style="white-space:pre"> </span>} ?> <tr> <span style="white-space:pre"> </span><td width="9" rowspan="2" align="center"> </td> <td width="147" align="center"> <a href="image.php?recid=<?php echo $info['id']; ?>" target="_blank"> <img src="<?php echo $data;?>" width="120" height="80" border="0"> </a> </td> <td width="10" rowspan="2" align="center"> </td> </tr> <tr> <td align="center">图片名称:<?php echo $info['tpmc'];?></td> </tr> <?php } ?> <tr> <span style="white-space:pre"> </span><td colspan="3" height="10" align="right"><a href="pic_more.php"><img src=" images/more.gif" width="27" height="9" border="0"> </a></td> </tr> </table> </td> </tr> </table> </td></tr>
このタグは、センター タグとともに HTML5 の新しいタグです。そして使用すると下に黄色い波線が引かれますが、私は気にしませんでした。
<?php<span style="white-space:pre"> </span>$p_sql = "select * from tb_public order by id desc"; $p_rst = $sqlHelper->execute_dql($p_sql);?><marquee onMouseOver="this.stop()" style="width:426px; height:280px" onMouseOut="this.start()" scrollamount="2" scrolldelay="7" direction="up" align=""><span style="FONT-SIZE: 9pt"><center><?php<span style="white-space:pre"> </span>while($p_row = $p_rst->fetch_row()){?><a href="#" onClick="wopen=open('show_pub.php?id=<?php echo $p_row[0]; ?>','','height=200,width=1000,scollbars=no')"><?php echo $p_row[1]; ?></a><br> <?php }?></center></span></marquee>