• ベストアンサー

php_selfで複数の変数をパラメタとしたいとき

php4.3.5にてdbデータをページ分けして表示する簡単なプログラムで、次ページへのリンクにページ番号をパラメタとして持たせていますが、もう1つの変数をパラメタに追加したいのですが私の追加方法では変数値が帰って来ません。 ~dbリード~dbデータの表示~ // 前のページ/次のページへのリンク if ($p > 1) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$prev\"> 前のページ</a>"; } if (($next - 1) * $lim < $dtcnt) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$next\">←ココに?age=$ageを追加したい。 次のページ</a>"; } 単なる書式の問題なのかも知れませんが、オンラインマニュアル・MLの検索でも分かりませんでした。 ご教授よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

>echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$prev&?age2=$age\"> ?はひとつでよいかと。

marokun
質問者

お礼

お答えありがとうございます。 出来ました。 やはりとんでもない思い違いでした。 この件で3日程悩んでいたのが情けないですが、自分ではどうしても抜け出せなかったので嬉しいです。 ありがとうございました。

その他の回答 (2)

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.2

> $ageは$age = intval(@$_GET["age"]);で24を取得出来ません。 PHPにおいて、私は変数の前に置く @の意味を知らないのですが、通常QUERY_STRING(get)の値の参照は $_GET['hoge']ですよね。 $p = intval($_GET["p"]); $age = intval($_GET["age"]); で問題なく取得できると思うのですが...。

marokun
質問者

お礼

お答えありがとうございます。 解決しました。 くだらないミスで申し訳ありませんでした。 変数の前の@ですが、今日たまたま別件で調べていたら、変数・関数の前に置くことでエラーメッセージを表示させないようです。デバッグ時にはない方がよいのかも知れません。 ありがとうございました。

marokun
質問者

補足

ソースの一部をアップさせてもらいます。(db部分は省略しました) 1回目はpostで別ページよりageを取得しています。 1回目に生成された次ページへのリンクでは、 ~.php?p=2&?age=24と表示されていますが、デバッグ用に入れたechoではpのみ2と表示されてage,age2は0となります。いろいろ試してみましたが、&で繋いだ2つ目の変数が取得出来ないようです。pとageを入れ替えるとpも取得出来なくなりました。 <?php // フォーム値取得 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ // 「magic_quotes_gpc = On」のエスケープ解除 if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $$k = $v; } } $p= intval(@$_GET["p"]); if ($p > 0) { $age= intval(@$_GET["age2"]); $age2= intval(@$_GET["age2"]); } else { $age2= $age; } echo "p=$p age=$age age2=$age2"; // レコード数/ページ $lim = 10; // ページ位置取得 if ($p < 1) { $p = 1; } // データ位置取得 $st = ($p - 1) * $lim; // 前のページ/次のページのページ番号を取得する $prev = $p - 1; if ($prev < 1) { $prev = 1; } $next = $p + 1; // 前のページ/次のページへのリンク if ($p > 1) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$prev&?age2=$age\"> 前のページ</a>"; } if (($next - 1) * $lim < $dtcnt) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$next&?age2=$age\"> 次のページ</a>"; } ?> phpは初心者ですのでとんでもない間違いをしてるかも知れませんがよろしくお願いします。

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

URLで複数のパラメータを渡す場合、&で繋ぎます。 ?p=$next&age=$age

marokun
質問者

補足

お答えありがとうございます。 早速試してみました。受け渡しのリンクでは、?p=2&age=24と正しく渡せました。 ですが受け取りがうまくいきません。 $pは$p = intval(@$_GET["p"]);で2を取得できますが、 $ageは$age = intval(@$_GET["age"]);で24を取得出来ません。 ロジックか変数に原因があるとは思いますが、もし、他に注意点等あればご教授願います。 よろしくお願いします。

関連するQ&A

専門家に質問してみよう