本篇给出首页左侧导航栏及右部公告区的实现。
六、左侧导航栏:
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>
2、最新文章显示:
<!-- 最新文章显示 -->
<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>这里我去查询数据库的时候使用了自己的工具类sqlHelper.class.php
这里给出上面用到的方法实现代码:
sqlHelper.class.php部分代码:
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>在使用数据库查询之前,先把这个文件包进去,然后new一个工具类对象,然后使用对象调用里面的函数。
3、最新图片显示
<!-- 最新图片显示 -->
<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>4、公告区实现
在公告区使用了我以前没有见过的一个标签<marquee>
它里面设置了一些属性,就是当鼠标停留在上面的时候它就停止滚动,离开的时候就开始滚动。
<?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>这个标签是HTML5新增的,还有center标签。那么在使用的时候就会出现下面画黄色波浪线的情况,我没有去管他。
在<a>这个超链接标签里,它设置了onclick这个属性,onclick这个属性后面跟的一定是js文件里面的函数,这个是打开一个自定义宽高的窗口。href="#"表示这个超链接不连接到其他页面,这里超链接的响应使用onclick来设定了。
到这里我们的首页基本就实现了。这是index.php 的完整代码:index.php提取码:iu09
原文:http://blog.csdn.net/u014470702/article/details/41787085