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

お世話になります。
ODBC経由でレコードを取得して表示させた後、それぞれのレコードの
後に4つのリンクを張って、押されたリンクによって状態を変更
したいです。

表はこんな感じです。
ID 氏名 状態 リンク1 リンク2 リンク3 リンク4
1 山田 1 1に状態変更 2に状態変更 3に状態変更 4に状態変更
2 山下 3 1に状態変更 2に状態変更 3に状態変更 4に状態変更
3 山本 2 1に状態変更 2に状態変更 3に状態変更 4に状態変更
以下300件くらい


ODBCに接続は成功します。

$res = $db-> query($sql);
while ($row =& $res->fetchRow(db_fechtmode_assoc)) {
print("<tr>");
print("<td>".$row["No"]."</td>");
print("<td>".$row["氏名"]."</td>");
print("<td>".$row["状態"]."</td>");
//この下が問題の行
print("<td><a href= \"hoge.php?ID=".$row["ID"]."\">1に状態変更</a></td>");
//あとリンクを状態変更4まで3つ並べます
print("</tr>\n");

テーブル形式に吐かせます。問題の行で、IDと a=1 を持って
いきたいのですが、記述の仕方が分かりません。このままでは
IDは持って行ってくれます。

//explode関数は「,」で区切り順番に配列に格納する
//$_SERVER['QUERY_STRING']はURLの?の後に付けられた
//文字列(引数)を取得できます。

という記事も見たのですが、コンマでつなげてもa=1は持って行って
くれません。
別にリンクじゃなくてもいいのです。ボタンや画像でもいいの
ですが、このWhileテーブルでボタンを4つ並べる書き方も、
ボタンを押したら値を取得する書き方も分かりませんでした。
勢いでPEARを使っています。PHP5.2.6です。よろしくお願いします。

A 回答 (2件)

補足の内容、了解です。



変数で渡そうとしている内容がサーバ側での設定を想定していたので
IDと同じような感じにしていました。
また、IDが大文字となっていたのでaの方もあわせて大文字としていましたが、
その点の説明が抜けていたようです。すみません。

では補足いただいた内容に合わせて渡したいaを設定してみましょう。
aが1固定の場合だと下のようになります。

print("<td><a href= \"hoge.php?ID=".$row["ID"]."&A=1\">1に状態変更</a></td>");

これでサーバ側でのIDでのとり方と同じようにしてAでやれば1が取れるようになります。

PHPの5.2.6でも通用するかは設定によりますが
$_REQUEST[ID] でIDの値が、$_REQUEST[A] でAの値がとれていたら正解です。
$_GET[ID] だったり、$ID だったりするかもなので調査要です。

では、ついでのついでに値が固定、中身も似ているなら for ループを追加して、
もう一歩先の応用ができそうないじくりをいれてみましょう。
余談なので上の状態のでおしまいにしてももちろんOK。

//リンクを状態変更1から4まで4つ並べます。
for( $lpcnt00 = 1; $lpcnt00 <= 4; $lpcnt00 ++)
{
print("<td><a href= \"hoge.php?ID=".$row["ID"]."&A=".$lpcnt00."\">".$lpcnt00."に状態変更</a></td>");
}

クォーテーションの¥マーク有り無しやドットのつけ方は慣れても分かりにくく、
その慣れ方もどうするのが良いのか分かり難いものです。
自分なりの解読法を構築するしかないのかもしれませんね。

作り始めの段階なら
 1.HTMLをベタで書いて。
 2.クォーテーションを¥マーク付きに置換して。
 3.PHPの文に変換して。
とやれば良さそうですが、いったん出来上がったものを編集するとなると
このクォーテーションがHTML側のものなのかPHP側のものなのかがパッと見判らない。
その辺りをサポートしてくれるエディタもあるようですが、
慣れないことにはそのエディタの表示もなんじゃらほい。
でも大丈夫。必要な情報ならきっと、情報の側からもアプローチがありますよ。
    • good
    • 0
この回答へのお礼

hisappyさん、根気よく付き合ってくださってありがとう
ございました。¥に振り回されていたのですが、ひとつ
多かったり、クォーテーションを取ったり、全部に¥つけたりと
色々したのですが、ニアミスで行き詰っていました。
PHPがうまく受け取ってくれました!
しかも残りのリンクのForまで・・・これはまた後日ためして
勉強させていただきます。
ありがとうございました。また今後ともよろしくお願いいたします。

お礼日時:2008/08/24 23:22

単純に値を持っていければ良いというのであれば、


質問文の内容を中途半端に引用して編集してみると

//この下が問題の行
print("<td><a href= \"hoge.php?ID=".$row["ID"]."&A=".$a."\">1に状態変更</a></td>");
//あとリンクを状態変更4まで3つ並べます
print("</tr>\n");

のように、IDの後ろに持っていかせたいパラメータを&で引っ付ければ
FORM タグの method で GET を指定した場合の形式で渡ると思います。
(ちなみにボタンの submit で飛ばすのが POST の形式。)

その POST の形式版だとこんな感じ。

//この下が問題の行
print("<td>");
printf("<form name=\"\" method=\"post\" action=\"hoge.php\">");
printf("<input type=\"hidden\" name=\"ID\" value=\"".$row["ID"]."\">");
printf("<input type=\"hidden\" name=\"a\" value=\"".$a."\">");
printf("<input type=\"submit\" value=\"1に状態変更\">");
printf("</form>");
printf("</td>");

//あとリンクを状態変更4まで3つ並べます
print("</tr>\n");


JavaScript を使っても良くて、画像でボタンを表示させたいなら
上で submit となっている input タグの部分を

printf("<img src=\"hoge1.jpg\" onClick=\"hoge.php?ID=".$row["ID"]."&A=".$a."\">");

みたいにすればできるのではないでしょうか。
ただ、動作確認したわけでもないですし、タグの内容などもうろおぼえなので
このままでは動作しない可能性大だったりもしますが
調査するのに必要な要素はひとまずいれたつもりですので
今回はこの辺りにて失礼します。

この回答への補足

hisappyさんありがとうございます。
?ID=".$row["ID"]."&A=".$a."\"
まさにこの部分の書き方なんですが、本当に記述の仕方だけ分からないんだと思います。初心者ですみません。
ブラウザの下にA= が現れるようになったので持って行ってくれる気があるみたいですが、$aが0なので、$aにどこかで1を入れておかないといけないのでしょうか? ここは1と決まっているので、
?ID=".$row["ID"]."&A="1"\"
としても上手くいかないのです(T_T)
どうクォーテーションしたものやら、どうドットつけたらいいやら。

補足日時:2008/08/24 20:48
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A