0

ページネーションを組み合わせた条件ベースの検索を使用するのはこれが初めてです。

検索クエリの結果をページネーションし、検索条件に基づいて検索結果の次のページと前のページに移動できるようにしたいと考えています。今のところ、ページネーションはテーブルからすべてのレコードを返します。NEXT および PREVIOUS ボタンの URL リンクに 1 つの検索用語を含めようとしましたが、それでもボタンをクリックすると、次のページに MySQL テーブルからすべてのレコードがロードされます。検索語 (gallery.php?cmaterial=$cmaterial など) は、現在のページではなく [次へ] をクリックしたときにのみ URL に表示されます。それでも、検索結果は検索用語と一致しません。

このトピックに関する以前の投稿から学ぼうとしましたが、間違っているかどうかはわかりません。

これが私のコードです:

<?php

$s=$_GET['s'];

// rows to return
$limit=12;

// check for a search parameter
//if (!isset($var))
//  {
//  echo "<p>We dont seem to have a search parameter!</p>";
//  exit;
//  }

$ctitle = mysql_real_escape_string($_POST['ctitle']);
$csubject = mysql_real_escape_string($_POST['csubject']);
$creference = mysql_real_escape_string($_POST['creference']);
$cat_id = ($_POST['cat_id']);
$cmaterial = mysql_real_escape_string($_POST['cmaterial']);
$ctechnic = mysql_real_escape_string($_POST['ctechnic']);
$cartist = mysql_real_escape_string($_POST['cartist']);
$csource = mysql_real_escape_string($_POST['csource']);
$stolen = mysql_real_escape_string($_POST['stolen']);

$sql = "SELECT * FROM collections WHERE c_id>0 AND `ctitle` LIKE '%".$ctitle."%' AND `csubject` LIKE '%".$csubject."%' AND `creference` LIKE '%".$creference."%' AND `cat_id` LIKE '%".$cat_id."%' AND `cmaterial` LIKE '%".$cmaterial."%' AND `ctechnic` LIKE '%".$ctechnic."%' AND `cartist` LIKE '%".$cartist."%' AND `csource` LIKE '%".$csource."%'  ORDER BY c_id ASC";

$sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);

 $numresults=mysql_query($sql);
 $numrows=mysql_num_rows($numresults);

// next determine if s has been passed to script, if not use 0
  if (empty($s)) {
  $s=0;
  }

// get results
$sql .= " limit $s,$limit";
  $sql_result = mysql_query($sql) or die("Couldn't execute query");

$count = 1 + $s ;

while ($row = mysql_fetch_assoc($sql_result)) {
    $c_id=$row['c_id'];
?>

..............................................HTML RESULT TABLE ...................................................

<?php
$currPage = (($s/$limit) + 1);

//break before paging
  echo "<br />";

  // next we need to do the links to other results
  if ($s>=1) { // bypass PREV link if s is 0
  $prevs=($s-$limit);
  print "&nbsp;<a href=\"$PHP_SELF?s=$prevs&cmaterial=$cmaterial\">&lt;&lt;
  Prev 10</a>&nbsp&nbsp;";
  }

// calculate number of pages needing links
  $pages=intval($numrows/$limit);

// $pages now contains int of pages needed unless there is a remainder from division

  if ($numrows%$limit) {
  // has remainder so add one page
  $pages++;
  }
echo "</table>";
// check to see if last page
  if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {

  // not last page so give NEXT link
  $news=$s+$limit;

    echo "&nbsp;<a href=\"$PHP_SELF?s=$news&cmaterial=$cmaterial\">Next 10 &gt;&gt;</a>";
  }

$a = $s + ($limit) ;
  if ($a > $numrows) { $a = $numrows ; }
  $b = $s + 1 ;
    echo "<p>Showing results $b to $a of $numrows</p>";

?>
4

0 に答える 0