🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1178閲覧

phpで一覧ページと詳細ページを作りたい

nagimasa

総合スコア13

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/10/25 10:09

お店一覧ページを作り、それぞれのお店に「詳しくはこちら」ボタンをつけ、個別の詳細ページを作りたいです。

list.phpで一覧を作り
detail.phpで個別の詳細を掲載

テーブル

テーブル名shops

shop_idnametelopenclose
1お店1000-000-000110:00-11:00月曜日

list.php

php

1 <?php 2 foreach ($db->query('SELECT * FROM shops') as $row){ 3 ?> 4 <section class="shop-tile shadow-radius border-ocher"> 5 <h2><?php echo $row['name'] ?></h2> 6 <table> 7 <tr> 8 <th>営業時間</th> 9 <td><?php echo $row['open'] ?></td> 10 </tr> 11 <tr> 12 <th>定休日</th> 13 <td><?php echo $row['close'] ?></td> 14 </tr> 15 </table> 16 <a class="btn tel-btn" href="tel:<?php echo $row['tel'] ?>">電話する</a> 17 <a class="btn" href="detail.php?id=<?php echo $row['shop_id'] ?>"><?php echo $row['name']?></a> 18 </section> 19 <?php } ?>

foreachで登録しているお店の一覧を表示。
下部にあるaタグでそれぞれのページに移動させようとしています。

php

1<a class="btn" href="detail.php?id=<?php echo $row['shop_id'] ?>"><?php echo $row['name']?></a>

detail.php

一覧のaタグからこちらに移動し詳細をを表示させようとしています。

php

1 2 <?php 3 $sql = $db->prepare('SELECT * FROM shops WHERE shop_id=?'); 4 $sql->execute([$_REQUEST['shop_id']]); 5 foreach($sql as $row){ 6 ?> 7 8 <h1 class="border-bottom-ocher">test<?php echo $row['name']?></h1> 9 <table class="system"> 10 <tr> 11 <th>営業時間</th> 12 <td><?php echo $row['open'] ?></td> 13 </tr> 14 <tr> 15 <th>定休日</th> 16 <td><?php echo $row['close'] ?></td> 17 </tr> 18 </table> 19<?php } ?>

しかし、結果では表示してもらえません。
このとき、urlは detail.php?id=[shop_id]となってくれています。
問題があるのはdetail.phpだと思うのですが、どのようにしたらテーブルからデータをとってきてくれるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

?id=なのであれば$_REQUEST['shop_id']でなく$_REQUEST['id'] です。

投稿2019/10/25 10:14

編集2019/10/25 10:15
kei344

総合スコア69596

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nagimasa

2019/10/25 15:48

そこをみなければならなかったんですね。 shop_idからidに変えたら期待の結果になりました。 一人で悩まずに早く頼ればよかったです。 ありがとうございました。
guest

0

$sql->execute([$_REQUEST['shop_id']]);

であれば

PHP

1while($row=$sql->fetch(PDO::FETCH_ASSOC)){ 2 3}

するか

PHP

1$rows=$sql->fetchAll(PDO::FETCH_ASSOC);

してデータを全部得るかしてはどうでしょか?

投稿2019/10/25 10:14

yambejp

総合スコア116661

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nagimasa

2019/10/25 15:47

データのとり方もまだまだ理解できていないので参考にさせていただきます、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問