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

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

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

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

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

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

Q&A

解決済

1回答

3306閲覧

mysqlの検索機能を実装したいです。

Kuriaki

総合スコア85

MySQL

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

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

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

0グッド

0クリップ

投稿2017/10/27 06:38

現状:
プルダウンにデータベースの情報を読んでいます。

html

1<select name="complete"> 2 <option></option> 3 <option>完了</option> 4 <option>未完了</option> 5</select>

ここのselectのみデータベースからではないです。

php

1 <?php 2 if ($result['complete_flag'] == "0") { 3 echo "<td>未完了</td>"; 4 }else if ($result['complete_flag'] == "1") { 5 echo "<td>完了</td>"; 6 }else{ 7 echo "<td>[データありません]</td>"; 8 } 9 ?>

しかしここで書いたように、データを選択された際、完了を選択されましたら完了のデータを表示し、未完了を選択された場合は未完了のデータを表示したいです。

やりたいこと:
プルダウンでデータを選択して、検索ボタンを押すと、AとBとCすべての条件に合うデータをテーブルに表示したいです。
一つしか選択されていなかったらその選択された条件に合ったものを出します。

ご回答宜しくお願いたします。

php

1<form action="" method="post"> 2<?php 3$i=0; 4$sql = "SELECT count(*) FROM task"; 5$stmt = $pdo->prepare($sql); $stmt->execute(); 6$row = $stmt->fetchColumn(); 7 8if($row > 0){ 9$sql = "SELECT 10 task.complete_flag, task.id AS id, 11 COALESCE(owners.name, '[データありません]') AS owner_name, 12 COALESCE(staffs.name, '[データありません]') AS staff_name 13 FROM task 14 LEFT JOIN m_user AS owners ON owners.id = task.owner 15 LEFT JOIN m_user AS staffs ON staffs.id = task.staff;"; 16 $stmt = $pdo->prepare($sql); 17 $stmt->execute(); 18 $a_a=array(); 19 $b_b=array(); 20while($result = $stmt->fetch(PDO::FETCH_ASSOC)){ 21array_push($a_a, $result['owner_name']); 22array_push($b_b, $result['staff_name']); 23 24} 25echo "<select name='owner'>"; 26echo "<option></option>"; 27foreach ($a_a as $key) { 28 echo "<option>"; 29 echo $key; 30 31} 32echo "</select>"; 33 34echo "<select name='staff'>"; 35echo "<option></option>"; 36foreach ($b_b as $key) { 37 echo "<option>"; 38 echo $key; 39 echo "</option>"; 40} 41echo "</select>"; 42?> 43<select name="complete"> 44 <option></option> 45 <option>完了</option> 46 <option>未完了</option> 47</select> 48<?php 49}else{ 50 // SELECT結果がない場合の処理 51 echo "データがありません。"; 52} 53?> 54<input type="button" name="btn" value="検索"> 55 56 </form> 57 58 59 60 61 62<div id="items"></div> 63 64<table id="myTable"> 65<thead> 66 <tr> 67 <th data-column-id="id" data-type="numeric">ID</th> 68 <th data-column-id="title">タスク名</th> 69 <th data-column-id="owner" data-order="desc">作成者</th> 70 <th data-column-id="staff" data-type="numeric">メンバー</th> 71 <th data-column-id="complete_flag">完了フラグ</th> 72 </tr> 73</thead> 74<tbody> 75 <?php 76 77$sql = "SELECT count(*) FROM task"; 78$stmt = $pdo->prepare($sql); $stmt->execute(); 79$row = $stmt->fetchColumn(); 80if($row > 0){ 81 // SELECT結果がある場合の処理 82$sql = "SELECT 83 task.title, task.complete_flag, task.id AS id, 84 COALESCE(owners.name, '[データありません]') AS owner_name, 85 COALESCE(staffs.name, '[データありません]') AS staff_name 86 FROM task 87 LEFT JOIN m_user AS owners ON owners.id = task.owner 88 LEFT JOIN m_user AS staffs ON staffs.id = task.staff;"; 89 $stmt = $pdo->prepare($sql); 90 $stmt->execute(); 91 while($result = $stmt->fetch(PDO::FETCH_ASSOC)){ 92 93?> 94 <tr> 95 <td><?php echo htmlspecialchars($result['id'], ENT_QUOTES, "UTF-8");?></td> 96 <td><?php echo htmlspecialchars($result['title'], ENT_QUOTES, "UTF-8");?></td> 97 <td><?php echo htmlspecialchars($result['owner_name'], ENT_QUOTES, "UTF-8");?></td> 98 <td><?php echo htmlspecialchars($result['staff_name'], ENT_QUOTES, "UTF-8");?></td> 99 <?php 100 if ($result['complete_flag'] == "0") { 101 echo "<td>未完了</td>"; 102 }else if ($result['complete_flag'] == "1") { 103 echo "<td>完了</td>"; 104 }else{ 105 echo "<td>[データありません]</td>"; 106 } 107 ?> 108 </tr> 109 110 <?php 111} 112}else{ 113 // SELECT結果がない場合の処理 114 echo "データがありません。"; 115} 116?> 117</tbody> 118</table> 119 120<?php 121 122?>

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

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

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

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

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

yambejp

2017/10/27 07:13

ひとつも選択されていなかった場合は全部みせるんでしょうか?
Kuriaki

2017/10/27 07:15

@yambejpさん  はい、無選択の場合は全部表示します。 できれば横のALLボタンをつけて、押したら全部表示することができるようにしたいです。
guest

回答1

0

ベストアンサー

全体の流れとしてはこうです

PHP

1<form method="post"> 2状態<select name="complete"> 3<option value="">=== 選択して ===</option> 4<option value="1">完了</option> 5<option value="0">未完了</option> 6</select><br> 7owner<select name="owner"> 8<option value="">=== 選択して ===</option> 9<option value="1">Aさん</option> 10<option value="2">Bさん</option> 11<option value="3">Cさん</option> 12</select><br> 13staff<select name="staff"> 14<option value="">=== 選択して ===</option> 15<option value="1">Aさん</option> 16<option value="2">Bさん</option> 17<option value="3">Cさん</option> 18</select><br> 19<input type="submit" value="go"> 20</form> 21<?PHP 22 23$sql="select * from tbl where 1 "; 24$owner=filter_input(INPUT_POST,"owner",FILTER_DEFAULT,["options"=>["default"=>""]]); 25$staff=filter_input(INPUT_POST,"staff",FILTER_DEFAULT,["options"=>["default"=>""]]); 26$complete=filter_input(INPUT_POST,"complete",FILTER_DEFAULT,["options"=>["default"=>""]]); 27 28$data=[]; 29if($owner!==""){ 30 $sql.=" and owner=?"; 31 $data[]=$owner; 32} 33if($staff!==""){ 34 $sql.=" and staff=?"; 35 $data[]=$staff; 36} 37if($complete!==""){ 38 $sql.=" and complete=?"; 39 $data[]=$complete; 40} 41 42print $sql; 43print "<hr>"; 44print_r($data); 45 46/* データ抽出 47$stmt = $pdo->prepare($sql); 48$stmt->execute($data); 49*/ 50

投稿2017/10/27 07:42

yambejp

総合スコア114742

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問