[WAMP網站開發] PHP實現select新聞查詢及超連結詳情跳轉

Eastmount發表於2017-05-02

這篇文章是最近教學生使用WAMP(Windows+Apache+MySQL+PHP)開發網站的基礎知識。前文 "[WAMP網站開發] PHP連線MySQL資料庫基礎知識" 講解了HTML佈局首頁,PHP連線資料庫以及XAMPP運算元據庫等基礎知識。這篇文章主要講解網站新聞查詢,點選每條新聞檢視詳情的功能。

這是是一篇教學文章,比較基礎,主要是給PHP網站開發的學生做個入門介紹,希望對你有所幫助,不足之處還請海涵。
下載地址:


一. 執行結果

執行結果如下圖所示,顯示所有的新聞資訊。注意:這裡我使用我從CSDN爬取我的部落格資訊資料庫作為新聞資訊。
爬蟲參考:[python爬蟲] Selenium爬取內容並儲存至MySQL資料庫


然後點選每一條新聞,去到詳情頁面並顯示。比如:點選最後一條新聞,“2016年總結:教師路的開啟,愛情味 的 初嘗”。


核心考點:
        1.PHP如何連線資料庫,並實現查詢;
        2.PHP通過<a href="info.php?id=xxx"></a>進行頁面跳轉;
        3.PHP在寫SQL語句時,如何通過.$name.連線變數,進行查詢。


二. PHP資料庫連線方法

連線資料庫的方法我見解了學生ZT的方法,程式碼比較簡潔明瞭。
        1.建立兩個PHP檔案:config.php 和 connect.php;
        2.然後在需要連線資料庫的PHP檔案,呼叫 require_once('connect.php');
        3.如果是含登入的介面,使用<?php session_start(); $_SESSION['name']; ?>


config.php 程式碼:

<?php
	header('content-type:text/html;charset=utf-8');
	define('HOST','localhost');
	define('USERNAME','root');
	define('PASSWORD','123456');
?>
connect.php 程式碼,注意呼叫 config.php,資料庫名:hcpmanage(火車票管理)。
<?php
	require_once('config.php');
	if(!($con=mysql_connect(HOST,USERNAME,PASSWORD)))
	{	
		die('Could not connect database: ' . mysql_error()); 
	}
	if(!mysql_select_db('hcpmanage'))
	{
		die ("Can\'t use hcpmanage : " . mysql_error()); 
	}
	mysql_query('set names utf8');
?>
main.php 使用的時候,核心程式碼如下所示,這也是獲取Select結果核心內容。
<?php
	//PHP連線資料庫 
	require_once('connect.php');
	$sql="select ID, Artitle, FBTime from csdn_blog 
			order by FBTime desc limit 6;";
	$query = mysql_query($sql);
	if($query&&mysql_num_rows($query))
	{
		while($row = mysql_fetch_assoc($query))
		{
			$data[] = $row;
		}
	}
	
?>


三. 首頁新聞查詢

建立的資料庫如下表所示,包括標題、URL、作者、時間、摘要、閱讀數、評論數等資訊,這些都是使用Python爬取的內容。哈哈~


建立資料庫程式碼如下:

DROP TABLE IF EXISTS `csdn_blog`;
CREATE TABLE `csdn_blog` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `URL` varchar(100) COLLATE utf8_bin DEFAULT NULL,
  `Author` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '作者',
  `Artitle` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '標題',
  `Description` varchar(400) COLLATE utf8_bin DEFAULT NULL COMMENT '摘要',
  `FBTime` date DEFAULT NULL COMMENT '釋出日期',
  `YDNum` int(11) DEFAULT NULL COMMENT '閱讀數',
  `PLNum` int(11) DEFAULT NULL COMMENT '評論數',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3593 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
main.php 主介面,程式碼如下:
<?php
	//PHP連線資料庫 
	require_once('connect.php');
	$sql="select ID, Artitle, FBTime from csdn_blog 
			order by FBTime desc limit 6;";
	$query = mysql_query($sql);
	if($query&&mysql_num_rows($query))
	{
		while($row = mysql_fetch_assoc($query))
		{
			$data[] = $row;
		}
	}
	
?>
<!DOCTYPE>
<html>
  <head>
    <title>火車票訂票系統管理系統</title>
    <style type="text/css">
    	#middle {  
		    margin:0 auto;         /* 水平居中 */  
		    margin-top: 10px;  
		    width: 80%;  
		    height: 60%;      
		    background-color: #E6E6FA;  
		}  
		#left {  
		    float: left;  
		    margin-left: 20px;  
		    margin-top: 5px;  
		    width: 25%;  
		    height: 95%;  
		    background-color: #9ACD32;  
		}  
		#right {  
		    float: left;  
		    margin-left: 20px;  
		    margin-top: 5px;  
		    width: 70%;  
		    height: 95%;  
		    background-color: #BFEFFF;  
		}  
    </style>
  </head>

  <body>
    <div align="center">
	   <div class="trainCSS">
	   <table width="1024"  height="150" cellpadding="0" cellspacing="0">
			<tr><td colspan="2">
				<img src="./image/logo.jpg" alt="logo" 
					width="1024" height="149">		
			</td></tr>		
	        <tr><td height="12"></td></tr>
	  </table>
	  </div>
	</div> 	

	<!-- 中部內容查詢設計 -->
	<div id="middle">
		<div id="left">
		<table width="100%" cellpadding="1" 
			cellspacing="1"  border="1">
			<tr><td height="10"></td></tr>
			<tr><td align="center">	<font size="3" color="blue">使用者:xxx,歡迎您!</font></td></tr>
			<tr><td height="10"></td></tr>
			<tr>
				<td align="center"><p><a href="trainManage.php">
				<img src="image/ccxxgl-xz.jpg" width="194" height="37" border="0"></a><td> </td>
			</tr>
			<tr><td height="10"></td></tr>
			<tr><td align="center"><a href="https://www.baidu.com/">
				<img src="image/dpgl.jpg" width="194" height="37" border="0"></a>
			</td></tr>
			<tr><td height="10"></td></tr>
		</table>
		</div>

		<div id="right">
		<table width="100%" height="98%" border="1" cellpadding="0" cellspacing="0"  bgcolor="#dfeaf1">
				<tr><td align="left" valign="top" style="padding-left:20px;padding-top:10px;">
					當前位置: <a href="main.jsp">首頁</a> > 車次資訊管理
					<br /><br />
				<form action="main_new.jsp" method="post">
					輸入關鍵詞: 
					<input type="text" id="info" name="start" style='font-size:18px' width=400/>
					<input type="submit" name="Select" value="搜尋" style='font-size:18px;'/>
				</form>
					<table width="90%" height="50%" 
					align="cneter" border="0" cellpadding="0" cellspacing="0" >

				<?php
					//獲取值
					if(!empty($data))
					{
						foreach($data as $value)
						{
							$Nid = $value['ID'];  //獲取新聞標號
							echo "<tr><td width='80%' style='line-height:2em;'>
									<a href='main_news.php?id=".$Nid."'>"
								 .$value['Artitle']."</a></td>";
							echo "<td align='right'>".$value['FBTime'].
								 "</td></tr>"; 

						}
					}
				?>
						<tr><td><br /></td></tr>
						<tr>
							<td width="80%"><a href="">更多</a></td>
						</tr>
					</table>
				</td></tr>
				
		</table>
		</div>
	</div>


	<div class="div">
	<!-- 底部版權所有介面 -->
	<TABLE class=wrapper border=0 cellSpacing=0 cellPadding=0 width="100%" align=center>
		 <TBODY>
		  <TR><TD style="LINE-HEIGHT: 100%" align="center"> 
		      <HR style="WIDTH: 96%; HEIGHT: 4px; COLOR: #02457c">
		     <font size="2"> <SCRIPT language=javascript src=""></SCRIPT>
		     <!-- target=_blank開啟新的網頁 -->
		     <BR><A href="aboutme.jsp">關於我們</A> | <A href="wzsm.jsp" 
				>網站宣告</A> <BR>版權所有&copy;2016-2017 貴州財經大學 Eastmount   <BR>
		      	資訊學院10006號 </font>
		  </TD></TR>
		  </TBODY>
	 </TABLE>
	</div>
	</div>
  </body>
</html>

SQL語句按照發布時間排序,然後輸出前6行資料。
select ID, Artitle, FBTime from csdn_blog order by FBTime desc limit 6;

其中的重點是,在顯示新聞內容過程中的方法,這裡介紹兩種方法,Select查詢也顯示兩種方法供大家學習。
方法一:採用<table></table>迴圈顯示。

<?php
	require_once('connect.php');
	$start=$_POST['start'];
	$end=$_POST['end'];
	$sql="select * from ticket_tb where start like $start and end like $end";
	$query=mysql_query($sql);
	if($query&&mysql_num_rows($query))
	{
		while($row=mysql_fetch_assoc($query))
		{
			$data[]=$row;
		}
	}
?>
<div class="row" style="margin-top:50px;margin-left:30px;">
	<table border="1" cellpadding="0">
		<tr style="background:#06F;color:#FFF;height:30px;text-align:center;font-weight:bold;font-size:12px;font-family:雅黑">
            <td style="width:80px;">汽車編號</td>
            <td style="width:100px;">出發地</td>
            <td style="width:100px;">目的地</td>
            <td style="width:140px;">途徑站</td>
            <td style="width:100px;">票價</td>
            <td style="width:100px;">票數</td>
            <td style="width:120px;">操作</td>
        </tr>
        <?php
			if(!empty($data))
			{
				foreach($data as $value)
				{
        ?>
        <tr>
	    	<td><?php echo $value['busid']?></td>
	        <td><?php echo $value['start']?></td>
	        <td><?php echo $value['end']?></td>
	        <td><?php echo $value['startTime']?></td>
	        <td><?php echo $value['busid']?></td>
	        <td><?php echo $value['busid']?></td>
	        <td><?php echo $value['busid']?></td>
	    </tr>
        <?php
				}
			}
		?>
   </table>
</div>
輸出結果如下圖所示,它相當於table顯示錶頭,然後再html中結合php程式碼,while迴圈輸出查詢的資訊。注意: <?php } ?>需要匹配迴圈的結束括號。


方法二:PHP中呼叫echo "<tr><td>"迴圈顯示。

<table width="90%" height="50%" align="cneter" 
	border="0" cellpadding="0" cellspacing="0" >
<?php
	//PHP連線資料庫 
	require_once('connect.php');
	$sql="select ID, Artitle, FBTime from csdn_blog 
			order by FBTime desc limit 6;";
	$query = mysql_query($sql);
	while($row = mysql_fetch_row($result))
	{
		list($ID, $Artitle, $FBTime) = $row; 
		
		$Nid = $id;  //獲取新聞標號
		echo "<tr><td width='80%' style='line-height:2em;'>
					<a href='main_news.php?id=".$Nid."'>"
				 .$Artitle."</a></td>";
		echo "<td align='right'>".$FBTime.
				 "</td></tr>"; 
	}

?>					
</table>
重點內容:如何在PHP中通過“.”連線句子及變數,如 .$name. 。



方法三:使用printf規則輸出。
<table border="1" cellpadding="0">
<tr style="background:#06F;color:#FFF;height:30px;text-align:center;font-weight:bold;font-size:12px;font-family:雅黑">
    <td style="width:80px;">汽車編號</td>
    <td style="width:100px;">出發地</td>
    <td style="width:100px;">目的地</td>
    <td style="width:140px;">出發日期</td>
    <td style="width:100px;">出發時間</td>
    <td style="width:100px;">票價</td>
    <td style="width:100px;">餘票數</td>
    <td style="width:120px;">操作</td>
</tr>
<?php
   $sql="select a.id, a.busid,a.start,a.end,busDate,startTime,price,total-sellnum from ticket_tb a,saleticket_tb b where a.busid=b.busid and a.start like '%".$start."%' and a.end like '%".$end."%' and busDate ='".$busDate."' limit 11";
   $query=mysql_query($sql);
   while($data = mysql_fetch_row($query)) 
    {
        printf("<tr style='text-align: center;''>
                   <td>%s</td>
                   <td>%s</td>
                   <td>%s</td>
                   <td>%s</td>
                   <td>%s</td>
                   <td>%s</td>
                   <td>%s</td>
                   <td><a href='buy.php?id=%s>'>購票
                       </a></td>
                </tr>", 
                $data[1],$data[2],$data[3],$data[4],
                $data[5],$data[6],$data[7],$data[0]);    
    }
    // 結束 顯示首頁 地點查詢
?>
</table>


四. 詳情顯示

詳情頁面,主要通過超連結進行跳轉。
跳轉前URL:http://localhost:8080/Eastmount/main.php
跳轉後URL:http://localhost:8080/Eastmount/main_news.php?id=79

main.php 設定超連結:

main_news.php?id=70 表示該跳轉的ID為70,通過select找到這條新聞的詳細資訊,再通過 <?php echo $Description;?> 輸出顯示。

<?php	
	$sql="select Artitle, Author, URL, FBTime, 
			Description, PLNum, YDNum 
		  from csdn_blog where ID=".$_GET["id"]."";
	$query = mysql_query($sql);
	while($row = mysql_fetch_row($query))
	{
		list($Artitle, $Author, $URL, $FBTime, 
				$Description, $PLNum, $YDNum) = $row;  
	}
?>
main_news.php 完整代:
<?php
	//PHP連線資料庫 
	require_once('connect.php');
?>
<!DOCTYPE>
<html>
  <head>
    <title>火車票訂票系統管理系統</title>
    <style type="text/css">
    	#middle {  
		    margin:0 auto;         /* 水平居中 */  
		    margin-top: 10px;  
		    width: 80%;  
		    height: 60%;      
		    background-color: #E6E6FA;  
		}  
		#left {  
		    float: left;  
		    margin-left: 20px;  
		    margin-top: 5px;  
		    width: 25%;  
		    height: 95%;  
		    background-color: #9ACD32;  
		}  
		#right {  
		    float: left;  
		    margin-left: 20px;  
		    margin-top: 5px;  
		    width: 70%;  
		    height: 95%;  
		    background-color: #BFEFFF;  
		}  
    </style>
  </head>

  <body>
    <div align="center">
	   <div class="trainCSS">
	   <table width="1024"  height="150" cellpadding="0" cellspacing="0">
			<tr><td colspan="2">
				<img src="./image/logo.jpg" alt="logo" 
					width="1024" height="149">		
			</td></tr>		
	        <tr><td height="12"></td></tr>
	  </table>
	  </div>
	</div> 	

	<!-- 中部內容查詢設計 -->
	<div id="middle">
		<div id="left">
		<table width="100%" cellpadding="1" 
			cellspacing="1"  border="1">
			<tr><td height="10"></td></tr>
			<tr><td align="center">	<font size="3" color="blue">使用者:xxx,歡迎您!</font></td></tr>
			<tr><td height="10"></td></tr>
			<tr>
				<td align="center"><p><a href="trainManage.php">
				<img src="image/ccxxgl-xz.jpg" width="194" height="37" border="0"></a><td> </td>
			</tr>
			<tr><td height="10"></td></tr>
			<tr><td align="center"><a href="https://www.baidu.com/">
				<img src="image/dpgl.jpg" width="194" height="37" border="0"></a>
			</td></tr>
			<tr><td height="10"></td></tr>
		</table>
		</div>

		<div id="right">
		<table width="100%" height="98%" border="1" cellpadding="0" cellspacing="0"  bgcolor="#dfeaf1">
				<tr><td align="left" valign="top" style="padding-left:20px;padding-top:10px;">
					當前位置: <a href="main.php">首頁</a> > 車次資訊管理
					<br /><br />
					<?php	
						$sql="select Artitle, Author, URL, FBTime, 
								Description, PLNum, YDNum 
							  from csdn_blog where ID=".$_GET["id"]."";
						$query = mysql_query($sql);
						while($row = mysql_fetch_row($query))
						{
							list($Artitle, $Author, $URL, $FBTime, 
									$Description, $PLNum, $YDNum) = $row;  
					?>
					<div style="text-align:center;">
						<h3><?php echo $Artitle;?></h3>
                    </div>
                    <hr/>
                    <div style="padding-top:10px;">
                        <p>  時間:<?php echo $FBTime;?>
                            釋出人:<?php echo $Author;?>
                            評論數:<?php echo $PLNum;?>
                            閱讀數:<?php echo $YDNum;?> <br />
                             連結:<?php echo $URL;?> 
                        </p>
                        <p>

                               <?php echo $Description;?>
                        </p>
                    </div>  
					 <!--上面的php中while迴圈並沒有結束,還有右括號-->
                     <?php
                         }
                     ?>
					
				</td></tr>
				
		</table>
		</div>
	</div>


	<div class="div">
	<!-- 底部版權所有介面 -->
	<TABLE class=wrapper border=0 cellSpacing=0 cellPadding=0 width="100%" align=center>
		 <TBODY>
		  <TR><TD style="LINE-HEIGHT: 100%" align="center"> 
		      <HR style="WIDTH: 96%; HEIGHT: 4px; COLOR: #02457c">
		     <font size="2"> <SCRIPT language=javascript src=""></SCRIPT>
		     <!-- target=_blank開啟新的網頁 -->
		     <BR><A href="aboutme.jsp">關於我們</A> | <A href="wzsm.jsp" 
				>網站宣告</A> <BR>版權所有&copy;2016-2017 貴州財經大學 Eastmount   <BR>
		      	資訊學院10006號 </font>
		  </TD></TR>
		  </TBODY>
	 </TABLE>
	</div>
	</div>
  </body>
</html>

        希望基礎性文章對你有所幫助,如果文章中存在不足或錯誤的地方還請您海涵~
        不管秀璋本人多麼平庸,但我總覺得對你的愛真的很美。

        (By:Eastmount 2017-05-02 下午5點  http://blog.csdn.net/eastmount/ )


相關文章