前提・実現したいこと
セレクトボックスで職種選択し(全員、マネージャー、アナリスト、一般職)、表示ボタンを押すと
その職種に対応した人物名が絞り込みされる操作を行いたい。
職種の(マネージャー、アナリスト、一般職)を選択した際には絞り込みされるが、
全員を押した際には、データが空になってしまう。
該当のソースコード
php
1<?php 2 3$emp = ''; 4$all = ''; 5if (isset($_POST['all']) === TRUE) { 6 $all = $_POST['all']; 7} 8 9if (isset($_POST['emp']) === TRUE) { 10 $emp = $_POST['emp']; 11 12} 13 14$emp_data = array(); 15$order = ''; 16 17$host = 'localhost'; // データベースのホスト名又はIPアドレス 18$username = 'codecamp21605'; // MySQLのユーザ名 19$passwd = 'MQSOCCZP'; // MySQLのパスワード 20$dbname = 'codecamp21605'; // データベース名 21$link = mysqli_connect($host, $username, $passwd, $dbname); 22// 接続成功した場合 23if ($link) { 24 // 文字化け防止 25 mysqli_set_charset($link, 'utf8'); 26 27 if (isset($_POST['all']) === TRUE) { 28 $query = "SELECT * FROM emp_table"; 29 } 30 31 if (isset($_POST['emp']) === TRUE) { 32 $query = "SELECT * FROM emp_table WHERE job = '$emp'"; 33 } else { 34 $query = 'SELECT * FROM emp_table'; 35 } 36 // クエリを実行します 37 $result = mysqli_query($link, $query); 38 // 1行ずつ結果を配列で取得します 39 while ($row = mysqli_fetch_array($result)) { 40 $emp_data[] = $row; 41 } 42 // 結果セットを開放します 43 mysqli_free_result($result); 44 // 接続を閉じます 45 mysqli_close($link); 46// 接続失敗した場合 47} else { 48 print 'DB接続失敗'; 49} 50 51?> 52<!DOCTYPE html> 53<html lang="ja"> 54<head> 55 <meta charset="UTF-8"> 56 <title>サンプル</title> 57 <style type="text/css"> 58 table, td, th { 59 border: solid black 1px; 60 } 61 table { 62 width: 200px; 63 } 64 </style> 65</head> 66<body> 67 <p>表示する職種を選択してください。</p> 68 <form method ="post"> 69 <select name="emp"> 70 71 <option value="all" name="all" <?php if ($emp === 'all') { print 'selected'; } ?>>全員</option> 72 <option value="manager" <?php if ($emp === 'manager') { print 'selected'; } ?>>マネージャー</option> 73 <option value="analyst" <?php if ($emp === 'analyst') { print 'selected'; } ?>>アナリスト</option> 74 <option value="clerk" <?php if ($emp === 'clerk') { print 'selected'; } ?>>一般職</option> 75 76 </select> 77 <input type="submit" value="表示"></form> 78 <h>社員一覧</h> 79 <table> 80 <tr> 81 <th>emp_name</th> 82 <th>job</th> 83 <th>age</th> 84 </tr> 85<?php 86foreach ($emp_data as $value) { 87?> 88 <tr> 89 <td><?php print htmlspecialchars($value['emp_name'], ENT_QUOTES, 'UTF-8'); ?></td> 90 <td><?php print htmlspecialchars($value['job'], ENT_QUOTES, 'UTF-8'); ?></td> 91 <td><?php print htmlspecialchars($value['age'], ENT_QUOTES, 'UTF-8'); ?></td> 92 } 93?> 94 </table> 95</body> 96</html>
試したこと
・form内のoption要素にname="all"をつけ、上のPHP内でif文を使い、全員が選択されたときに
'SELECT * FROM emp_table';
を実行させ、emp_tableの値をすべて取り出そうとした。
おわりに
あと一息で完成なので、分かる方がおられましたら、お力添えになっていただきたいです。
回答2件
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2018/04/16 23:24