ホームページ > バックエンド開発 > PHPチュートリアル > 検索ページネーションのキーワード値を送信できません

検索ページネーションのキーワード値を送信できません

WBOY
リリース: 2016-06-23 13:58:34
オリジナル
1179 人が閲覧しました

search.php

<?phpinclude('db_class.php');    include('inc/function.php'); $keyword=trim($_POST['keyword']);if($keyword==""){echo "<script>alert('请输入新闻名称!'); history.go(-1);</script>";exit;//结束程序}// 数据库查找代码$page=isset($_POST['page'])?intval($_POST['page']):1;   $num=2;  $total=$db->getcount("select * from  `".$prefix."newsbase` where  id like '%{$keyword}%'  or title like  '%{$keyword}%' ");//页码计算$pagenum=ceil($total/$num);     //获得总页数,也是最后一页$page=min($pagenum,$page);//获得首页$prepg=$page-1;//上一页$nextpg=($page==$pagenum ? 0 : $page+1);//下一页$offset=($page-1)*$num;$result=$db->query("select * from `".$prefix."newsbase` where sn like '%{$keyword}%'  or title like '%{$keyword}%' or author like '%{$keyword}%' order by news_id desc");if($row=mysql_num_rows($result)){while($row=$db->getarray($result)){?><tr>        <td class="font" valign="top"  width="130"><?php echo $row[id]; ?></td>        <td class="font" valign="top"  width="130"><?php echo $row[title]; ?></td>	<td class="font" valign="top"  width="130"><?php echo $row[author]; ?></td></tr>  <?php}} else{echo "<script>alert('没有该新闻信息!'); history.go(-1);</script>";exit;//结束程序}?><?php include 'inc/fy.php'; //分页类$page=new page(array('total'=>$total,'perpage'=>$num));echo $page->show(3);?>
ログイン後にコピー


'inc/fy.php' はオンラインで見つかる PHP ページング クラスです (4 つのページング モードをサポートしています) ここでの問題は、検索が正しく表示されることです。ページネーション後の次のページをクリックすると、常に「ニュース名を入力してください」と表示され、キーワードが正常に送信されないため、フォーラムを検索しました。長い間同じような問題はありませんでしたが、助けを求めに来ました。


ディスカッションへの返信(解決策)

1. ページ変数は get を使用して渡されていませんか?
2.$result=$db->query("select * from `".$prefix."newsbase` where sn like '%{$keyword}%' or title like '%{$keyword}%' or author like '%{$keyword}%' order by news_id desc"); この文はページング条件を満たしていません。
次のように変更します:
$result=$db->query("select * from `".$prefix."newsbase` where sn like '%{$keyword}%' or title like '%{$keyword}%' or author like '%{$keyword}%' order by news_id desc Limit {$offset},{$num}");

配信を取得するためにページが変更され、目標を達成するためにページ分割条件が追加されました$ num の値に従って検索して各ページの記事数を表示するようにしましたが、次のページをクリックしても次のページに移動できず、「ニュース名を入力してください」と表示されます

URL に問題があります。 。ページネーションクラスに URL はありますか?前へ 次へ、。 。 。いずれも URL が必要です。

ニュースリスト作成時はページングクラスは成功したので問題ないと思いますが、今回の検索リスト作成時はページングに問題がありました。
http : //www.chinahtml.com/0702/php-117150834711176.html
これは、model(3) を使用するページング クラスです

2 日間考えてきましたが、まったくわかりません。ということで、Shrimpが解析をお手伝いさせていただきたいと思います!

今日再度テストしたところ、以下の検索コードを削除した後、クリックするとデータベース内のすべてのデータが表示され、ページングも正常に表示されましたが、次のコードを追加した後、次をクリックすると、ページでは常に「ニュース名を入力してください」というプロンプトが表示されますが、URL が原因でエラーが発生するはずはありません。理解できない! ?

$keyword=trim($_POST['keyword']);if($keyword==""){echo "<script>alert('请输入新闻名称!'); history.go(-1);</script>";exit;//结束程序}
ログイン後にコピー



$_POST['keyword'] はフォームが送信されたときにのみ有効で、ページがめくられると消えます

ページネーションでキーワードを渡したい場合は、次のようにするのが最善です。 GET メソッドを使用してフォームで送信します。送信後、フォーム内のアクション内のリンクのすべてのパラメーターは自動的には送信されません。これは 内に配置する必要があります。次に、中国語で問題が発生した場合は、送信する前に url_encode を実行する必要があります。そうしないとコードが文字化けします。 http://www.phpcxz.com/a/web/phpweb/2011/0802/113.html

皆さんの質問に従って、問題は解決しました。ありがとうございます。

ページをめくるときに .php?keyword=$keyword を追加してキーワード パラメータを渡すことができます
その後、 $keyword=isset($_POST['keword'])?'':(isset($_GET[ 'keyword' ])?$_GET['keyword']:'')

はい、問題を解決した後、振り返ってみると、この問題は非常に単純であることがわかりました。強化されました、笑!

LZ、私もあなたの状況に遭遇しました。検索結果の最初のページは正常ですが、次のページが表示されると、検索結果のキーワードが失われます。デフォルトでは、検索結果のすべてのレコードが失われます。データベースが表示されます。キーを入力してください。単語検索後、最初のページは通常どおり表示されますが、ページをめくると、データベース内のすべてのレコードが表示されます。学習するために、検索結果のページング コードを投稿していただけますか。それから?

すみません、投稿者さん、私もあなたと同じ問題を抱えています。どうすれば解決できますか? ?

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート