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

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

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

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3029閲覧

PHP・MySQL 一覧からボタンクリックで詳細をだす。ブートストラップモーダル使用。

neko23377

総合スコア7

MySQL

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/09/03 11:21

編集2017/09/03 14:06

お忙しいところ失礼いたします。
プログラミング初心者です。

現在、PHPとMySQLを主に使用して簡易なメッセージの送・受信システムのようなものを作っています。Ajaxは使用していません。

受信したもの(カラムの送り先名が自分となっているもの)を、PDOを使用してMySQLに接続し、SELECT文で、メッセージのタイトル・日付等の一部分のみDBテーブルからとりだし、一覧で並べています(LIMITで絞った件数、while使用)。

その一覧に”詳細”のようなボタンをつけて、それをクリックしたら、そのメッセージのより詳しい内容がでてくる、というようにしたいです。
それで、ブートストラップにモーダルの機能があったのでそれを使用し、ボタンクリックでモーダルウインドウが出現し、内容が出てきたのは出てきたのですが、並べたメッセージどれの詳細ボタンをクリックしても、1番上のメッセージの詳細内容しかでてこなかったのです。

(例)
位置
上 メッセージA ボタンクリック→ A詳細
中 メッセージB ボタンクリック→ A詳細
下 メッセージC ボタンクリック→ A詳細

そうではなく、下記の様にメッセージごとに対応する詳細内容がでてくるようにしたいのです。

(例)
位置
上 メッセージA ボタンクリック→ A詳細
中 メッセージB ボタンクリック→ B詳細
下 メッセージC ボタンクリック→ C詳細

ブートストラップHPに記載されているイベントのところも参照してみたのですが、よくわからず。
SELECTでとりだした内容もしくはWhile構文がモーダルには反映しないのか、そうだとしたらどのようなことをしたらいいのか、色々書籍やHPを見たりしたのですがわからず、今回ここに質問させていただきました。

もしなにか解決策がありましたら、ご教授いただけないでしょうか。
よろしくお願いします。


遅くなりまして申し訳ありません。
「質問文の状況が再現できるPHP/JavaScriptを質問文にコードブロックで追記してください。」
コードブロックとは<code>内(青枠内)にコードを記述、ということでよろしいのでしょうか。
間違っていたらすみません。見づらいかもしれませんが、以下追記です。

<?php try{ $db = getDb(); }catch(PDOException $e){ print "エラー:{$e->getMessage()}"; } //DBからSELECT文で合致するmessagecontents_tblの行を3行選択。 $stt = 'SELECT * FROM messagecontents_tbl WHERE for_id=? ORDER BY message_id DESC LIMIT 3'; $prepare = $db->prepare($stt); $prepare->bindValue(1,$my_num); $prepare->execute(); $db = null; //while文でユーザーの受信一覧(3件)を表示 $row=array(); while($row = $prepare->fetch(PDO::FETCH_ASSOC)){ ?> <div class="panel panel-default"> <div class="panel-heading"> <div class="panel-title"> <?= h($row['date']) ?><br><?= h($row['user_name']); ?>&nbsp;&nbsp;さんへ </div> </div> <div class="panel-body"> <?= h($row['send_name']); ?>&nbsp;&nbsp;さんからメッセージ<br><br> <!--ボタンクリックでモーダルウィンドウを開き詳細表示--> <button type="button" class= "btn btn-success btn-sm" data-toggle="modal" data-target="#sampleModal">詳細</button> <div class="modal fade" id="sampleModal" > <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span>×</span></button> <h3 class="modal-title"> <?= h($row['date']) ?>&nbsp;&nbsp; <?= h($row['send_name']); ?>&nbsp;&nbsp;さんからメッセージ</h3> </div> <div class="modal-body"> ◇用件◇<br> <?= h($row['msgnote']); ?><br><br> ◇その他◇<br> <span style = "color: #ff0000;"><?php if(h($row['urg_ck'])==1){ print "至急"; }?> </span><br><br> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">閉じる</button> </div> </div> </div> </div> </div> </div> <?php }?>

・↑はページの一部分です。自分でページを確認したところ、JavaScriptの記述(Script部)はありませんでした。やはりこれが問題なのでしょうか(ブートストラップHPのイベントの説明文にはScriptでの記述があったので)。

・ページ先頭部(ヘッド部)には、ブートストラップの読み込みとして、以下記載があります。

<!-- BootstrapのCSS読み込み --> <link href="css/bootstrap.min.css" rel="stylesheet"> <!-- jQuery読み込み --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <!-- BootstrapのJS読み込み --> <script src="js/bootstrap.min.js"></script>

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

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

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

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

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

kei344

2017/09/03 12:16

質問文の状況が再現できるPHP/JavaScriptを質問文にコードブロックで追記してください。
guest

回答1

0

ベストアンサー

HTML

1<div class="modal fade" id="sampleModal" >

HTMLのid属性は1ページ中で重複することができません。
連番を振るなりして data-target="#sampleModal" と対になるように設定してみてはいかがでしょうか。

id="sampleModal1" とか連番をつけるようにして、ターゲット指定も同じく連番をつける data-target="#sampleModal1"

投稿2017/09/03 14:46

kei344

総合スコア69364

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

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

neko23377

2017/09/03 20:56

ご回答どうもありがとうございます。 すみません、あまりよくわかっていないのですが、上記のページのコード内容では、id(とdata-target)の値が1つしか設定されていないから、同じ内容のモーダルしかでてこないということですかね。 複数の異なる内容のモーダルをそれぞれ表示させるには、id(とdata-target)の値を重複しないようそれぞれに設定が必要だと考えてよいのでしょうか。
kei344

2017/09/04 04:22

はい。
neko23377

2017/09/05 18:16

返事がおそくなりまして申し訳ありません。 上記ページのコード内で、複数モーダルの際、同じ内容しかでてこない理由がわかりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問