質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

6642閲覧

PHP ページ移動時のデータ保存について

muranokami

総合スコア33

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2016/02/03 16:03

PHPでページネーション作成したのですが、検索後に次の検索結果を表示するページに飛んでも検索時にpostされたデータが消えてしまいます。そのため検索結果の続きを表示するページへのリンクにもデータを送信する機能を付けようと試みたのですがうまくいきません。
どうすればうまくいくでしょうか。また、他によい方法があるのでしょうか。回答よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

coba-cobaさんの回答を補足してみます。

よく使っているコードですが参考になれば。GETでページ送りするサンプルです。

PHP

1// 2 $pp = 20;//1ページの表示件数 3 $offset = 0;//オフセット件数 4 $srchwd_p = "";//検索文字列 5 6 if( !empty( $_POST['srchword']) ) { //POSTの場合 7 $tmp = sanitize( $_POST['srchword'] );//攻撃に使われるような文字を削除する 8 if( chkStr( $tmp ) ) { //文字列を検証する 9 $srchwd_p = substr( $tmp, 0, 60 );//最大60文字切り出す 10 } 11 } 12 if( !empty( $_GET['srchword']) ) {//GETの場合 13 $tmp = sanitize( $_GET['srchword'] ); 14 if( chkStr( $tmp ) ) { 15 $srchwd_p = substr( $tmp, 0, 60 ); 16 } 17 } 18 //1ページあたりの表示件数 19 if( !empty( $_POST['rw']) ) { 20 if( is_num( $_POST['rw']))$pp = $_POST['rw'];//数字なら代入する 21 } else { 22 if( !empty( $_GET['rw']) ) { 23 if( is_num( $_GET['rw']))$pp = $_GET['rw']; 24 } 25 } 26 //オフセット件数 27 if( !empty( $_GET['of']) ) { 28 if( is_num( $_GET['of']))$offset = $_GET['of']; 29 } else { 30 $offset = 0; 31 } 32 33 //GETパラメーターの作成 34 $get_param = "rw=" . $pp; 35 if( !empty( $srchwd_p ) ) { 36 $get_param .= "&srchword=" . urlencode($srchwd_p);//URLエンコードする 37 } 38

POSTする場合にはテキストボックスに検索文字列を代入しておけば持ち回せます。
ページナビからページ移動する場合はGETで持ち回します。

検索文字列 [トマト ] [検索]
表示件数[20件]▼
1 2 3 4 次のページ >>

HTML

1<input name="srchword" id="srchword" type="text" value ="<? 2 if( !empty( $srchwd_p ) )print $srchwd_p; 3?>"> 4表示件数 <select name="rw" onChange="submit();"> 5<option value="10">10件</option> 6<option value="20" selected="selected">20件</option> 7<option value="30">30件</option> 8<option value="40">40件</option> 9<option value="50">50件</option> 10<option value="100">100件</option> 11</select> 12<input type="submit" name="submit" id="submit" value="検索">

ナビゲーションバーの項目は検索結果によって動的に生成します。
ナビゲーションバーのHTMLソースコードは以下のようになります。

HTML

1 1 2<a href='search.html?rw=20&srchword=%E3%83%88%E3%83%9E%E3%83%88&of=20'>2</a> 3<a href='search.html?rw=20&srchword=%E3%83%88%E3%83%9E%E3%83%88&of=40'>3</a> 4<a href='search.html?rw=20&srchword=%E3%83%88%E3%83%9E%E3%83%88&of=60'>4</a> 5<a href='search.html?rw=20&srchword=%E3%83%88%E3%83%9E%E3%83%88&of=20'>次のページ

注意点としては検索文字列が相当長いとGETでは切れてしまいますのでPOSTを使う必要があります。

投稿2016/02/03 20:52

chinyato

総合スコア241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

雑な方法ですが、

php

1$_SESSION["postdata"]=$_POST;

と、セッションにPOSTの情報そのものを保存してしまうという手もアリかと思います。

投稿2016/04/05 23:13

ItoTomonori

総合スコア1283

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

postってことで、もし画面上に見せたくないって話なら
<INPUT type="hidden" name="hoge" value="<?php echo $fuga ?>">
みたいな感じで埋め込んどくのが簡単かなあ。
セキュリティ云々的な話が重要ならオススメしませんが…

投稿2016/03/24 10:20

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

もう試していると思いますが…、
やはり、クエリは続きを表示するリンクのURLにパラメーターとしてセットして、GETで送信するのが簡単だと思います。
例:?query=hogehoge

他にも、現在のページ数や、1ページに表示する件数も同じ方法で持ち回ります。

投稿2016/02/03 17:10

編集2016/02/03 17:12
coba-coba

総合スコア1409

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問