質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

625閲覧

[PHP]一覧画面でクリックしたタイトルの情報を詳細画面に表示させたい

kirisaki_aoi

総合スコア27

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2019/10/10 07:57

編集2019/10/10 08:36

お世話になっております。PHP初学者です。
PHPにて、一覧画面でクリックしたタイトルが持つ情報を詳細画面に表示させたいと思っています。
一覧画面にはデータベースに登録されている内容が正常に表示されていますが、詳細画面への受け渡し方が分かりません。
似た質問がいくつかあったのですが、解決に至らなかったため質問させて頂きました。
ソースコードは以下の通りです。

index

1<?php 2//MySQLへ接続 3$pdo = new PDO("mysql:host=localhost;dbname=PHPsample", "name", "password"); 4 5//テーブル取得 6$st = $pdo->query("SELECT * FROM menulist"); 7 8//取得したデータを選択 9$menus = $st->fetchAll(); 10 11require 't_index.php'; 12 13?>

tindex

1<?php require_once('menu.php'); ?> 2 3<!DOCTYPE html> 4<html> 5<head> 6 <meta charset="utf-8"> 7 <title>shop</title> 8 <link rel="stylesheet" type="text/css" href="stylesheet.css"> 9 <link href='https://fonts.googleapis.com/css?family=Pacifico|Lato' rel='stylesheet' type='text/css'> 10</head> 11<body> 12 <?php foreach ($menus as $menu): ?> 13 <h3 class="menu-item-name"> 14 <a href="show.php?name=<?php echo $menu['name'] ?>" > 15 <?php echo $menu['name'] ?> 16 </a> 17 </h3> 18 <?php endforeach ?> 19</body> 20</html>

show

1<?php 2 require_once('menu.php'); 3 4$name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_SPECIAL_CHARS); 5$menu = "select * from menulist where name = ".$name; 6 7?> 8 9<!DOCTYPE html> 10<html> 11<head> 12 <meta charset="utf-8"> 13 <title>Progate</title> 14 <link rel="stylesheet" type="text/css" href="stylesheet.css"> 15 <link href='https://fonts.googleapis.com/css?family=Pacifico|Lato' rel='stylesheet' type='text/css'> 16</head> 17<body> 18 <h3 class="menu-item-name"><?php echo $menu['name'] ?></h3> 19 <p class="menu-item-type"><?php echo $menu['price'] ?></p> 20</body> 21</html>

情報や説明が足りないところがありましたら申し訳ありません。
ご教示いただけますと幸いです。よろしくお願い致します。

追記
失礼致しました。本文に記載させて頂きます。
テーブル作成時のcreate文です。

create table menulist (id int, name varchar(255), price int,image varchar(255),kind varchar(255));
insert into menulist values('1','hoge1','100','/picture/hoge1.jpg','1st');
insert into menulist values('2','hoge2','100','/picture/hoge2.jpg','1st');

PHPのバージョンは7.2です。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/10/10 07:59

menulist テーブルの構造をcreate文で提示してください。
m.ts10806

2019/10/10 08:17

「似た質問」に回答したことがあるものです。 よろしければ確認した質問URLを質問本文に追記いただけますか? 考え方が理解できれば簡易的なものでしたらじゅうぶん実装できそうに思います。
kirisaki_aoi

2019/10/10 08:22

情報が足りず申し訳ありません。データ作成は以下のように行いました。 こちらの情報で合っていますでしょうか…? create table mydb.user (id int, name varchar(255), price int,image varchar(255),kind varchar(255)); insert into menulist values('1','hoge1','100','/picture/hoge1.jpg','1st'); insert into menulist values('2','hoge2','100','/picture/hoge2.jpg','1st');
退会済みユーザー

退会済みユーザー

2019/10/10 08:23

本文に書いて!
退会済みユーザー

退会済みユーザー

2019/10/10 08:33

提示のコードでは menulist なのに、create文は user です。生合成がありません。
退会済みユーザー

退会済みユーザー

2019/10/10 08:34

PHPのバージョンも記載してください。
kirisaki_aoi

2019/10/10 08:37

確認したら別のcreate文を貼っていました…。 本当に申し訳ありません、修正したcreate文が正しいものです。 PHPのバージョンも併せて記載させて頂きました。よろしくお願い致します。
guest

回答2

0

ベストアンサー

php

1<?php 2/** 3 * tindex 4 */ 5?> 6<?php require_once('menu.php'); ?> 7 8<!DOCTYPE html> 9<html> 10<head> 11 <meta charset="utf-8"> 12 <title>shop</title> 13 <link rel="stylesheet" type="text/css" href="stylesheet.css"> 14 <link href='https://fonts.googleapis.com/css?family=Pacifico|Lato' rel='stylesheet' type='text/css'> 15</head> 16<body> 17 <?php foreach ($menus as $menu): ?> 18 <h3 class="menu-item-name"> 19 <a href="show.php?id=<?php echo $menu['id'] ?>" > 20 <?php echo $menu['name'] ?> 21 </a> 22 </h3> 23 <?php endforeach ?> 24</body> 25</html>

php

1<?php 2/** 3 * show 4 */ 5require_once('menu.php'); 6 7$id = filter_input(INPUT_GET, 'id'); 8 9$pdo = new PDO("mysql:host=localhost;dbname=PHPsample", "name", "password"); 10$sql = "select * from menulist where id = ?"; 11$stmt = $pdo->prepare($sql); 12$stmt->execute([$id]); 13$row = $stmt->fetch(); 14?> 15<!DOCTYPE html> 16<html> 17<head> 18 <meta charset="utf-8"> 19 <title>Progate</title> 20 <link rel="stylesheet" type="text/css" href="stylesheet.css"> 21 <link href='https://fonts.googleapis.com/css?family=Pacifico|Lato' rel='stylesheet' type='text/css'> 22</head> 23<body> 24 <h3 class="menu-item-name"><?php echo $row['name'] ?></h3> 25 <p class="menu-item-type"><?php echo $row['price'] ?></p> 26</body> 27</html>

投稿2019/10/10 08:44

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kirisaki_aoi

2019/10/10 08:53

こちらのコードで無事詳細画面に情報を渡すことが出来ました…! 情報が足りなかった点につきましてはご迷惑をおかけして申し訳ありませんでした。 本当にありがとうございます…!
guest

0

少し詳細はわかりかねますが、show.phpではただ

$name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_SPECIAL_CHARS); $menu = "select * from menulist where name = ".$name;

とSQLを作成しているだけで、DBにクエリを送信できていないように見えます。

indexと同じように、

//テーブル取得 $st = $pdo->query($menu); //取得したデータを選択 $menus = $st->fetchAll();

という処理を挟んであげる必要があるのではないでしょうか?

投稿2019/10/10 08:17

Spade

総合スコア115

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

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

kirisaki_aoi

2019/10/10 08:30

ご回答ありがとうございます。一度その方法を試したのですがうまくいかず断念していました…。 現在一覧(t_index.php)で表示しているデータはindec.phpに記述している内容を用いているのですが、 showページにも同じように表示させるためには「t_show.php」を作成し、「require 't_show.php';」で データベースのクエリ情報を渡せば良いという事でしょうか…? その際、現在「t_index.html」に記述してある「"show.php?name=<?php echo $menu['name'] 」の部分の書き換えは必要でしょうか? 本当に初歩的な所で申し訳ありません…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問