1

投稿する前に答えを探していたので、これはよくある問題だと思いますが、解決策がわからないようです。

問題:検索結果に使用するページ付けスクリプト(PHP)があります。明らかに一般的であるように、最初のページの結果は正常に表示され、2、3ページなどに移動すると失敗します。

2、3ページなどをクリックすると、検索で使用された変数ごとに「不明なインデックス」エラーが発生します。

したがって、フォームからこれらの変数を$_GETします。

$_SESSION['var1']= $_GET['var1'];
$_SESSION['var2']= $_GET['var2'];
$_SESSION['var3']= $_GET['var3'];

注意点:セッションはすでに私のヘッダーで開始されています。$ _GETを使用しているのは、ユーザーが「戻った」場合に「再送信」警告が表示されないようにするためです。変数はすべてクリーンアップされます(すでに十分な長さであるため、コードには表示されません)。$ _GET変数は、各結果の距離、年齢などを計算するため、WHILEループで使用する必要があります。

私のページネーションスクリプト:

$limit = 4; 

$query = "SELECT COUNT(*) as num FROM $tableName";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages['num'];

$stages = 3;
$page = mysql_escape_string(isset($_GET['page'])) ? (int)$_GET['page'] : 1;
if($page) {
  $start = ($page - 1) * $limit; 
} else {
  $start = 0;   
}   

// Get page data
$query1 = "SELECT * FROM $tableName ORDER BY joindate DESC LIMIT $start, $limit";
$result = mysql_query($query1);

// Initial page num setup
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 = 'hp1col'><div class='paginate'>";
$pagetotal = $total_pages.' Results';

// Previous
if ($page > 1){
$paginate.= "<a href='$targetpage?page=$prev'>Previous</a>";
} else {
$paginate.= "<span class='disabled'>previous</span>";}

// Pages    
if ($lastpage < 7 + ($stages * 2))  // Not enough pages to breaking it up
{   
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{ $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}                 
}
}

// Next
if ($page < $counter - 1){ 
$paginate.= "<a href='$targetpage?page=$next'>Next</a>";
} else {
$paginate.= "<span class='disabled'>Next</span>";
}
$paginate.= "</div></div>";     
}

while($row = mysql_fetch_array($result))
{
if (($part1 >= $_SESSION['var1']) AND  ($part2 <= $_SESSION['var2']) AND ($part3 <= $_SESSION['var3'])) {
echo 
"[Results]  
}
}
echo $paginate;

このifステートメントで新しいセッションを開始しようとしましたが、役に立ちませんでした。

if ($page > 1){
$paginate.= "<a href='$targetpage?page=$prev'>Previous</a>";
} else {
$paginate.= "<span class='disabled'>previous</span>";}

誰かが助けてくれることを願っています。質問のコードのスラブについてお詫びしますが、誰かが助けてくれることを願って、すべてを簡単に入れるのが最善だと思いました。

ありがとう

4

1 に答える 1

3

したがって、これらのクエリパラメータを次のページに渡す必要があります。あなたのページが存在することを期待$_GET['var1']しているが、あなたが?var1=fooURLに含まれていない場合、それは明らかに機能しません。これを処理する最も簡単な方法は次のhttp_build_queryとおりです。

printf('<a href="%s?%s">Next</a>',
       $targetpage,
       http_build_query(array('page' => 2) + $_GET));

これにより、の現在のすべての値が保持され、パラメータが$_GET追加されます。page=2ケースに応じて必要に応じて変更します。

于 2012-10-31T17:21:32.043 に答える