アプリ版:「スタンプのみでお礼する」機能のリリースについて

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の検索でも分かりませんでした。
ご教授よろしくお願いします。

A 回答 (3件)

>echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$prev&?age2=$age\">



?はひとつでよいかと。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/04/13 17:28

> $ageは$age = intval(@$_GET["age"]);で24を取得出来ません。



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

この回答への補足

ソースの一部をアップさせてもらいます。(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は初心者ですのでとんでもない間違いをしてるかも知れませんがよろしくお願いします。

補足日時:2004/04/12 11:52
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/04/13 17:33

URLで複数のパラメータを渡す場合、&で繋ぎます。


?p=$next&age=$age

この回答への補足

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

補足日時:2004/04/11 21:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!