2013-08-31 3 views
-3

이 페이지 번호 코드가 있는데 &pagenum=whatever은 내 URL에 완벽하게 표시되지만 실제로는 아무 것도 아니며 그 이유를 모르겠습니다. 여기 내 코드입니다 :왜 내 페이지 매김 코드가 작동하지 않습니까?

paginate.php :

<?php 

include("config.php"); 

if (!(isset($pagenum))) 

{ 

$pagenum = 1; 

} 

$data = mysql_query("SELECT * FROM shop 
    WHERE MATCH (name,description,keywords) AGAINST ('$search' IN BOOLEAN MODE)") or die(mysql_error()); 

$rows = mysql_num_rows($data); 

$page_rows = 5; 

$last = ceil($rows/$page_rows); 

if ($pagenum < 1) 

{ 

$pagenum = 1; 

} 

elseif ($pagenum > $last) 

{ 

$pagenum = $last; 

} 

$max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows; 

?> 

search.php : 솔직히 난처한 해요

<?php 
include("config.php"); 
$search = mysql_real_escape_string($_GET['result']); 
?> 
<HTML> 
<HEAD> 
</HEAD> 
<BODY> 
<div id="wrapper"> 
<div class="searchleft"> 
</div> 
<div class="search"> 
<center> 
<form method="get" action="search.php"> 
<input type="text" name="result" value="<?php echo $search; ?>" /> 
<input type="submit" /> 
</form> 
<?php 
include("paginate.php"); 

$data_p = mysql_query("SELECT * FROM shop 
    WHERE MATCH (name,description,keywords) AGAINST ('$search' IN BOOLEAN MODE) $max") or die(mysql_error()); 

$num_rows = mysql_num_rows($data_p); 

if ($num_rows == "1") { 
    echo "Returned 1 result."; 
} else { echo "Returned ".$num_rows." results."; } 

while ($info = mysql_fetch_assoc($data_p)) { 
    $name = stripslashes($info['name']); 
    $desc = stripslashes($info['description']); 
    $desc = substr($desc, 0, 150); 
    $price = stripslashes($info['price']); 
    Print "<div style=\"width:600px; height:150px; border:1px solid black; overflow:hidden\"><div style=\"height:148px; width:25%; border:1px solid red; float:left\"><center><img src=\"".$picture."\" height=\"120\" width=\"120\" style=\"margin-top:15px\" /></center></div><div style=\"height:150px; width:50%; border:1px solid blue; float:left; text-overflow: ellipsis; padding-top:5px\"><center><font size=\"+1\"><b><a href=\"result.php?product=".urlencode($name)."\">".$name."</b></a></font><br><br>".$desc."...</center></div><div style=\"height:150px; width:24%; border:1px solid green; float:left\"><center><h1>$".$price."</h1><button>Add to Cart</button></center></div></div>"; 
} 
echo " --Page $pagenum of $last-- <p>"; 
if ($pagenum == 1) 
{ 

} 

else 

{ 
echo " <a href='{$_SERVER['PHP_SELF']}?result=".$search."&pagenum=1'> First</a> "; 
$previous = $pagenum-1; 
echo " <a href='{$_SERVER['PHP_SELF']}?result=".$search."&pagenum=$previous'>Previous</a> "; 

} 
    if ($pagenum == $last) 
{ 
} 
else { 
$next = $pagenum+1; 
echo " <a href='{$_SERVER['PHP_SELF']}?result=".$search."&pagenum=$next'>Next</a> "; 

echo " "; 

echo " <a href='{$_SERVER['PHP_SELF']}?result=".$search."&pagenum=$last'>Last</a> "; 

} 

?> 

.

+0

'$ pagenum '은 어디에 설정되어 있습니까? – JJJ

+0

내가 생각하기에 paginate.php의 맨. 설정되어 있지 않으면 1로 설정됩니다. 이미 설정되어 있다면 – user2566387

+0

으로 설정됩니다. 대신 $ _GET [ 'pagenum']'을 대신 사용하십시오. – JJJ

답변

1

if (!(isset($pagenum))) 
{ 
    $pagenum = 1; 
} 

대신, 의견을보고 당신이 필요합니다

코드의이 부분은 고가의 데이터베이스 호출하고있다 또한
if (!(isset($_GET['pagenum']))) {  
    $pagenum = 1; 
} else { 
    $pagenum = $_GET['pagenum']; 
} 

// or with a ternary line 
$pagenum = (isset($_GET['pagenum'])) ? $_GET['pagenum'] : 1; 

:

$data = mysql_query("SELECT * FROM shop WHERE MATCH (name,description,keywords) AGAINST ('$search' IN BOOLEAN MODE)") or die(mysql_error()); 
$rows = mysql_num_rows($data); 

을 전체 테이블을 가져 오는 대신 계산하기 :

$data = mysql_query("SELECT COUNT(*) FROM shop WHERE MATCH (name,description,keywords) AGAINST ('$search' IN BOOLEAN MODE)") or die(mysql_error()); 
$result = mysql_fetch_array($data, MYSQL_NUM); 
$rows = $result[0]; 
+0

멋지게 작동했습니다. 작은 질문은 지금 ... 나는 3 페이지를 산출 할 11의 입장이 있다고 말한다. 페이지로 이동이라는 드롭 다운 목록을 만들 수있는 간단한 방법이 있습니까? 그리고 드롭 다운 목록에 옵션으로 1, 2 및 3이 있습니까? 아니면 많은 페이지가 있습니까? – user2566387

관련 문제