• 締切済み

ページング機能の追加

以前に同じような質問し回答して頂きましたが、どうにもうまくいかず、正直ギブアップぎみで限界を感じました。 やりたいことは、検索結果のページング機能追加(例えば5件づつとか10件づつで表示させて残りの結果は次のページや前のページって感じです。)ほかにいい方法やアドバイスがあれば、どなたか助けていただけないでしょうか。長くなりますが、サンプルコードを公開しますので親切な方お願いします。 function search($w, $andor, $target){ global $path; if(get_magic_quotes_gpc()) $w = stripslashes($w); //¥消去 $log = file(LOGFILE); head($dat); echo $dat; echo "[<a href=\"".PHP_SELF."\">掲示板に戻る</a>] <h3>検索モード</h3> 検索したい単語をスペースで区切って入力してください。<br /> <form action=\"".PHP_SELF."\" method=\"post\"> <input type=\"hidden\" name=\"mode\" value=\"search\" /> <input type=\"text\" name=\"w\" size=\"30\" value=\"".htmlspecialchars($w)."\" /> <select name=\"andor\"><option value=\"and\" selected=\"selected\">AND\n <option value=\"or\">OR</select> <input type=\"submit\" value=\"検索\" /><br /><br />\n"; if(trim($w)!=""){// 前後のスペース除去 $keys = preg_split("/( | )+/", $w);// 複数語を配列に while(list(,$line) = each($log)){// ログを走査 $find = FALSE; for($i = 0; $i < count($keys); $i++){ if($keys[$i]=="") continue; if(stristr($line,$keys[$i])){// マッチ $find = TRUE; $line = str_replace($keys[$i],"<b style='color:green;background-color:#ffff66'>$keys[$i]</b>",$line); }elseif($andor == "and"){// ANDの場合次へ $find = FALSE; break; } } if($find) $result[] = $line; //マッチしたログを配列に } //結果表示 echo "<div align=\"left\">検索結果".count($result)."件<br />"; for($c = 0; $c < count($result); $c++){//結果展開 list($no,$res_no,$now,$name,$email,$sub,$com,$url, $host,$pw,$ext,$w,$h,$time,$chk,$color,) = explode(",", $result[$c]); //結果表示 echo "<hr size=\"1\" />[No.$tit] <b>$sub</b> Name:<b>$name</b> <small>Date:$now</small> $url<br /> <blockquote>$com</blockquote><br />\n"; } } die("</form></body></html>"); }

みんなの回答

回答No.2

前回ご質問された内容に回答したものですが、 あのスクリプトでは問題がありましたか?

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

ページング機能は自前で実装すると意外と面倒ですよね。 外部のライブラリに頼ってしまうというのも手です。PEARにPagerというパッケージがあります。 http://pear.php.net/package/Pager http://pear.php.net/manual/ja/package.html.pager.php http://www.phpbook.jp/pear/pear_pager/index.html

関連するQ&A