こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPでレコード一覧から詳細へのリンク方法

MySQLでデータベースを構築し、PHPで表示しています。
レコードを一覧で並べるのはうまく行きましたが…一覧から詳細へリンクさせるのがうまく行きません。

detail.phpというファイルを作成してリンクさせようと思っていますが…

(1)formタグを使って、GETでSUBMITする形にする場合はどうしたらいいでしょうか?

(2)普通にaタグを使って、detail.php?id=xxxxx という形にする方法でもいいのですが、リンクを教えてdetail.phpに移った時点で"?"以下が消えてしまいます。

(1)の方法がやり易いかと思い、色々調べて自分なりにやってみましたが、"detail.php?id=%BE%DC%BA%D9&id=1&id=4&id=3&id=5&id=6&id=7&id=9&id=10&id=11" という形になり、なんでか全てのIDを並べている形になっています…

理想はdetail.php?id=xxxxxとなって欲しいのですが…
ちなみにコードは以下の通りです。

<? php

echo "<table>";
echo "<tr>";
echo "<th>ID</th>";
echo "<th>名前</th>";
echo "<th>所在地</th>";
echo "<th>詳細</th>";
echo "</tr>";
while( $row = mysql_fetch_array($result) ) {
echo "<form method=\"GET\" action=\"detail.php?id=".$row["id"]."\">";
echo "<tr>";
echo "<td>".$row["id"]."</td>";
echo "<td>".$row["name"]."</td>";
echo "<td>".$row["addr"]."</td>";
echo "<td><input type=\"submit\" value=\"詳細\" name=\"id\"></td>";
echo "<input type=\"hidden\" value=\"".$row["id"]."\" name=\"id\">";
echo "</tr>";
}
echo "</table>";

?>

投稿日時 - 2008-03-31 00:52:34

QNo.3908978

すぐに回答ほしいです

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

<form>が閉じてないのが、原因でしょう。
このままでは、HTMLとして、間違ってます。
ブラウザは多分、一個のフォームとして解釈しているのでしょう。
ブラウザは、間違ったHTMLでも文句を言いませんので。

ループの最後に、
echo "</form>";
を入れれば、良いと思います。

投稿日時 - 2008-03-31 05:43:03

お礼

ありがとうございます!!

めちゃくちゃ初歩的なミスに唖然としました・・・

で、formを閉じましたが、するとこんな感じになりました。

detail.php?id=%BE%DC%BA%D9&id=1

純粋にdetail.php?id=1

となってくれた方がいいかと思っていたのですが・・・

上記のような形でもいいのでしょうか?
よくグーグルの検索結果とかそんな感じになってますよね・・・

%BE%DC%BA%D9 の部分はおそらく、submitのnameが文字化け(暗号化?)されて出てきていると思います。

【結論と質問】
これ(%BE%DC%BA%D9)は無視していいものでしょうか?
出ない方がいいのでしょうか?出ないほうがいい場合はどうやったら消えますでしょうか?

お手数ですが、どうぞよろしくお願いします!!

投稿日時 - 2008-03-31 10:09:18

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

基本的に1つのformの中では、同じ名前は1つです。
PHPですと、名前にa[]などを指定すると、同じ名前のチェックボックスのVALUEを配列で受けるなんてこともできますが。
わけの分からない文字は、「詳細」をエンコードしたものです。

投稿日時 - 2008-03-31 13:05:41

お礼

ありがとうございます!!

まじうまく行きました!!

ありがとうございます!!!

詳細画面もうまく行きました。

次は画像のアップロードです。
難関です。

投稿日時 - 2008-04-01 01:08:14

ANo.2

>detail.php?id=%BE%DC%BA%D9&id=1

<input type="submit" value="詳細" name="id">
とサブミットのnameにidとつけているからですね。
おそらくつかっていないと思うのでnameをとってしまえばいいでしょう。

>これ(%BE%DC%BA%D9)は無視していいものでしょうか?

無視しても、受け取り側で競合しますね。
上記のようにform中では無駄なnameはつけない・・・という処理で

投稿日時 - 2008-03-31 11:11:55

お礼

ありがとうございますーーー!!

うまくいきました!!

<input type="submit" value="詳細" name="id">
の name="id" を消したら、うまくいきました!!

ほんまにありがとうございます!!

次は・・・詳細画面です!!

頑張ります!!

投稿日時 - 2008-03-31 21:07:29

あなたにオススメの質問