0
我只是PHP編碼的新手。我目前正在研究一個帶分頁的簡單系統。我想知道在使用分頁時是否需要釋放收集的結果並關閉連接?使用分頁時,我是否需要使用mysql_free_result&mysql_close? PHP
在此先感謝!
下面的代碼:
<!DOCTYPE>
<html>
<head>
<title>View Records</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<?php
include("header.php");
require('config.php');
$tableName = "tracking_records";
$targetpage = "view.php";
$limit = 10;
$query = "SELECT COUNT(*) as num FROM $tableName";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages['num'];
$stages = 10;
$getpage = (isset($_GET['page'])) ? (int)$_GET['page'] : 0;
$page = mysql_escape_string($getpage);
if($page){
$start = ($page - 1) * $limit;
}else{
$start = 0;
}
$query1 = "SELECT * FROM $tableName LIMIT $start, $limit";
$result = mysql_query($query1) or die(mysql_error());
if($page == 0){$page = 1;}
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$LastPagem1 = $lastpage - 1;
$paginate = '';
if($lastpage > 1){
$paginate .= "<div class='paginate'>";
if($page > 1){
$paginate.= "<a href='$targetpage?page=$prev'>previous</a>";
}else{
$paginate.= "<span class='disabled'>previous</span>";
}
if($lastpage < 7 + ($stages * 2)){
for($counter = 1; $counter <= $lastpage; $counter++){
if($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";
}
}
}
elseif($lastpage > 5 + ($stages * 2)){
if($page < 1 + ($stages * 2)){
for($counter = 1; $counter < 4 + ($stages * 2); $counter++){
if($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";
}
}
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
}
// Middle hide some front and some back
elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2)){
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for($counter = $page - $stages; $counter <= $page + $stages; $counter++){
if($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";
}
}
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
}else{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++){
if($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";
}
}
}
}
if($page < $counter - 1){
$paginate.= "<a href='$targetpage?page=$next'>next</a>";
}else{
$paginate.= "<span class='disabled'>next</span>";
}
$paginate.= "</div>";
}
echo ' '.$total_pages.' Results';
echo $paginate;
?>
<table border='1'>
<tr>
<th>Contract #</th><th>Date</th>
<th>Vessel</th><th>Work Description</th>
<th>Specs PKG</th><th>Period of Performance</th>
<th>Required Delivery Date</th><th>IGE Amount</th>
<th>PM/SBS/MM</th><th>IDIQ</th>
<th>Solicitation #</th><th>RFP/RFQ Closing Date</th>
<th>RFP/RFQ Closing Time</th><th>Status</th>
<th>Award Amount</th><th>Award Date</th>
<th>Contractor</th><th>Remarks</th>
<th>Edit/Delete</th>
</tr>
<?php
while($row = mysql_fetch_array($result))
{
echo "<tr>
<td>$row[0]</td><td>$row[1]</td>
<td>$row[2]</td><td>$row[3]</td>
<td>$row[4]</td><td>$row[5]</td>
<td>$row[6]</td><td>$row[7]</td>
<td>$row[8]</td><td>$row[9]</td>
<td>$row[10]</td><td>$row[11]</td>
<td>$row[12]</td><td>$row[13]</td>
<td>$row[14]</td><td>$row[15]</td>
<td>$row[16]</td><td>$row[17]</td>
<td>
<a href='edit.php?cn=$row[0]'>Edit</a><br />
<a href='delete.php?cn=$row[0]' onClick=\"return confirm('Delete this record?')\";>Delete</a>
</td>
</tr>";
}
echo "</table>";
mysql_free_result($result);
mysql_close($connection);
?>
</body>
</html>
沒有必要,那些任務在單個請求完成處理後自動執行。只有在實施持久性進程時才需要它們,如守護進程。在這種情況下,這種收集是不可能的,你必須自己照顧自由結果,以防止內存溢出。 – arkascha
@arkascha謝謝! – technoken