• 締切
  • すぐに回答を!

ページングでの問題点

  • 質問No.7117744
  • 閲覧数192
  • ありがとう数1
  • 回答数2

お礼率 17% (44/249)

<?php
DB接続文等

$search_query = "select SQL_CALC_FOUND_ROWS * from ilab";

$usersearch= $_POST['usersearch'];
$clean_search = str_replace('、', ' ',$clean_search);
$clean_search = str_replace(' ', ' ',$usersearch);
$search_words = explode(' ', $clean_search);
$final_search_words = array();
if (count($search_words) > 0) {
foreach ($search_words as $word) {
if (!empty($word)) {
$final_search_words[] = $word;
}
}
}

// Generate a WHERE clause using all of the search keywords
$where_list = array();
if (count($final_search_words) > 0) {
foreach($final_search_words as $word) {
$where_list[] = "syou LIKE '%$word%'";
}
}
$where_clause = implode(' AND ', $where_list);

// Add the keyword WHERE clause to the search query
if (!empty($where_clause)) {
$search_query .= " WHERE $where_clause";
}

$pid = intval($_GET['pid']);
if ($pid < 1) $pid = 1;
$limit_start_rows = ( $pid - 1 ) * 10;
$search_query .= " LIMIT {$limit_start_rows}, 10";

$result = mysql_query($search_query);

$num_rows_result = mysql_query("SELECT FOUND_ROWS()");
$num_rows = mysql_fetch_assoc($num_rows_result);
$num_rows = $num_rows['FOUND_ROWS()'];

if($num_rows== 0){
$message="該当データは見つかりませんでした。";
}
else $message=$num_rows ."件該当しました<br/>";
echo $message;
?>
<?php
$pid = $_GET['pid'];
$countRe=$num_rows;
pager($_GET["pid"],$countRe);
function pager($pid,$countRe){
if($pid=="") $pid=1;

$maxPage=ceil($countRe/10);
if($maxPage==1 or $maxPage<$pid) return false;

if($pid>10){
$startPage=$pid-9;
$startMore="<a href=\"$PHP_SELF?pid=".($startPage -1)."\">&lt; PREV</a>";
}else{
$startPage=1;
}

if($pid+10<$maxPage){
$endPage=$pid+10;
$endMore=" <a href=\"$PHP_SELF?pid=".($endPage+1)."\">NEXT &gt;</a>";
}else{
$endPage=$maxPage;
}
$page_footer="";
for($i=$startPage;$i<=$endPage;$i++){
$page_footer.=" ".(($pid==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?pid=$i\">$i</a>");
}
$page_footer=$startMore.$page_footer.$endMore;
print $page_footer."<br>";
}

?>
このソースだとテキストボックスに未入力だと、全件表示してしまいます。
そして、例えば、「東京」等で検索し、12とリンクがつくわけですが、2を押したら東京の2の情報ではなく、全件データの2(10件~20件)が表示されてしまいます。どうすれば上記問題点を改善できるでしょうか??

回答 (全2件)

  • 回答No.2

ベストアンサー率 41% (255/620)

むしろ、問題を解決するのにどういう情報が必要かを質問したほうが早そうです。
とりわけ、私の印象としては、何かに困っているのは分かるんですが、状況がつかめません。
目標と問題点を分けて、箇条書きにした方がいいかもしれませんね。
補足コメント
drmada

お礼率 17% (44/249)

目標はリンクが12と出た際、2を押した際に、テキストボックスに入力された東京に該当するデータだけを表示させたいわけです。現段階の問題点としましては、東京に該当したデータの1ページ目は東京に該当したデータが表示されますがリンク2を押した際、東京のデータではなく、データベース内の全データの10件から20件が表示されてしまいます。宜しくお願いいたします。
投稿日時:2011/11/07 12:25
  • 回答No.1

ベストアンサー率 12% (1/8)

> このソースだとテキストボックスに未入力だと、全件表示してしまいます。

javascriptなりPHPで入力チェックをすればよいだけの話です。

> そして、例えば、「東京」等で検索し、12とリンクがつくわけですが、2を押したら東京の2の情報ではなく、全件データの2(10件~20件)が表示されてしまいます。

むしろ何が問題なのでしょうか?これは以前の質問でも拝見したページャー機能( http://okwave.jp/qa/q7103652.html )ですが、これを問題といっている意味が分かりません。ページャー機能は不要という意味でしょうか?
以前の質問の時ととまったくソースが一字一句同じですが、ご自分で何らかの試行錯誤はされているのでしょうか?

> どうすれば上記問題点を改善できるでしょうか??
テーブルの構造を示さないと、回答するほうも困ってしまいます。回答に必要な情報が不足しています。
補足コメント
drmada

お礼率 17% (44/249)

2のリンクを押した際、東京のが15件あるとしたら、五件表示されねばなりませんが現在、2を押すと全件データの2の情報が出てしまい、10件表示されリンクも全件でてしまいます。これでは東京2の情報が見れません。データベースはカラム5つの構成です。お力添え宜しくお願いいたします。
投稿日時:2011/11/07 06:58
お礼コメント
drmada

お礼率 17% (44/249)

現在訪問者が数人単位ですが増えており、無知な私がソースを大胆に変えれない状態です。携帯サイトなのでJavaScriptは使えないです。宜しくお願いいたします。
投稿日時:2011/11/07 07:01
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ