一覧 → 動的詳細画面 へ遷移 【POST とGET】

PHP

前回で一覧の作成はひと段落したので、

こんどはその一覧にリンクを貼る!

そしてその内容の詳細画面へ飛ぶようにしたい・・

ここもよくある話だと思うのになかなか難しかった。

「PHP 一覧 詳細」

とかで検索して調べる。

諸々見たけど役立ったのは以下

ECサイトの商品詳細画面を作成しよう!

なるほどまずは一覧のほうに
~~.php?code=2002
という感じで自動でパラメータがつく様にリンクを貼る。

▽一覧側 一部抜粋
———
echo”<td>
<a href=\”item_detail.php?code=” . htmlspecialchars( $row[“main_id”] ) . “\”>” . $row[“main_name”] . “</a>
</td>”;
———
(ブログにソースが反映されるので< >を全角にしてます)
(ちなみにechoとかの”と”の間にある普通に使いたい「”」については、直前に¥をつける!)

これは難なく成功。

さて、詳細画面側はこれをどうやって受け取るのか?
受け取ったパラメータを
データベースの検索キーにしたい。

つまりmysql_queryの中のSQL文の
where main_table.main_id = ☆☆ ←ここに入れたい

これが上記ページでは分からず・・ なんだ”?”って・・

いろいろ調べたうえ試行錯誤したらできました。

POSTGETが大事なのね!

今回はURLで受け取るのでGETで。
振り返ってみると結構単純・・

▽詳細側 一部抜粋
———
//まず最初のほうで、URLから受け取ったデータを変数に入れる。

$code = $_GET[‘code’];

確かにこれを知らないと始まらなかったな・・

//そしてSQL文の、where main_table.main_id = ☆☆ ←ここに入れたい~の件は下記のとおり
//(前回記事に引き続きで書き加えてみます)

———————
SELECT
メインマスタ.ID, メインマスタ.NAME, メインマスタ.LV, GROUP_CONCAT(DISTINCT タスクテーブル.タスク名), GROUP_CONCAT(DISTINCT 追加テーブル.追加項目)
FROM
メインマスタ
LEFT JOIN
タスクテーブル on メインマスタ.ID = タスクテーブル.ID
LEFT JOIN
追加テーブル on メインマスタ.ID = 追加テーブル.ID
WHERE
メインマスタ.ID =
‘$code’
GROUP BY ID;
———————

これで引き継ぐことができた!クラッカー

将来的にはURLをちゃんとディレクトリのように変換したいな。。

そして次の謎は実際のHTMLのような場所の書き方。。

詳細画面だから、一覧と違ってwhile~~で繰り返さなくて良いので
出力のしかたがちょっと勝手が違う?

と思って調べたら

●mysql_fetch_array
●mysql_fetch_row
●mysql_fetch_assoc

となんかいろいろある。結局 mysql_fetch_assoc を使ったのだけど

違いは・・

→mysql_fetch_array:連想配列、添字配列、またはその両方として結果の行を取得
→mysql_fetch_row:結果を添字配列として取得する
→mysql_fetch_assoc:連想配列として結果の行を取得する

なんのこっちゃショック!と思ったけど

配列は連なる要素の一つ一つに一意の数値がついていて、
それが「数値(=添字配列)」なのか「文字列(=連想配列)」なのかということと。

▽添字配列
while ($row = mysql_fetch_row($result)) {
echo $row[“0“];
echo $row[“1“];
echo $row[“2“];
}

▽連想配列
while ($row = mysql_fetch_assoc($result)) {
echo $row[“userid“];
echo $row[“fullname“];
echo $row[“userstatus“];
}

私のテーブルは横長くて出したいカラムが何番目なのかなんてさっぱり分からないので
文字列で指定できる連想配列、mysql_fetch_assocで決定ビックリマーク

詳細ページだからwhileの繰り返しではなくていいよね?の件については、

mysql_fetch_assoc の説明に

注: 結果が 1 行であることがわかっているのなら、ループを利用しなくてもよい

と書いてあり、なるほどとひらめき電球
単純にwhileを外すだけか・・

$row = mysql_fetch_assoc($result)
echo $row[“userid”];
echo $row[“fullname”];
echo $row[“userstatus”];

これでHTMLに入れ放題!パズルがどんどんはまっていく終盤のようにテンションがあがるアップ

echo”<H1>” . $row[“userid”] . “</H1>”;

echo”<td>” . $row[“fullname”] . “</td>”;

こころなしか、まったく見る気がしなかった
PHPのマニュアルが読めるようになってきたきがするドキドキ
(単語を検索すると日本語になりますね~ ’-^o)

さて次は検索周りかな。

—–

コメント

タイトルとURLをコピーしました