LoginSignup
0
0

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-10-27

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

===================================

<select name="complete">
    <option></option>
    <option>完了</option>
    <option>未完了</option>
</select>

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

===================================

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

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

===================================

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

初心者のため、簡易でわかりやすくご回答頂けたら助かります。
宜しくお願いたします。

<form action="" method="post">  
<?php
$i=0;
$sql = "SELECT count(*) FROM task";
$stmt = $pdo->prepare($sql); $stmt->execute();
$row = $stmt->fetchColumn();

if($row > 0){
$sql = "SELECT
 task.complete_flag, task.id AS id,
 COALESCE(owners.name, '[データありません]') AS owner_name,
 COALESCE(staffs.name, '[データありません]') AS staff_name
 FROM task 
  LEFT JOIN m_user AS owners ON owners.id = task.owner 
  LEFT JOIN m_user AS staffs ON staffs.id = task.staff;";
  $stmt = $pdo->prepare($sql); 
  $stmt->execute();
 $a_a=array();
 $b_b=array();
while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
array_push($a_a, $result['owner_name']);
array_push($b_b, $result['staff_name']);

}
echo "<select name='owner'>";
echo "<option></option>";   
foreach ($a_a as $key) {
    echo "<option>";
    echo $key;

}
echo "</select>";

echo "<select name='staff'>";
echo "<option></option>";
foreach ($b_b as $key) {
    echo "<option>";
    echo $key;
    echo "</option>";
}
echo "</select>";
?>
<select name="complete">
    <option></option>
    <option>完了</option>
    <option>未完了</option>
</select>
<?php
}else{
  // SELECT結果がない場合の処理
  echo "データがありません。";
}
?>
<input type="button" name="btn" value="検索">

 </form>





<div id="items"></div>

<table id="myTable"> 
<thead>
  <tr>
    <th data-column-id="id" data-type="numeric">ID</th>
    <th data-column-id="title">タスク名</th>
    <th data-column-id="owner" data-order="desc">作成者</th>
    <th data-column-id="staff" data-type="numeric">メンバー</th>
    <th data-column-id="complete_flag">完了フラグ</th>
  </tr>
</thead>
<tbody>
    <?php

$sql = "SELECT count(*) FROM task";
$stmt = $pdo->prepare($sql); $stmt->execute();
$row = $stmt->fetchColumn();
if($row > 0){
  // SELECT結果がある場合の処理
$sql = "SELECT
 task.title, task.complete_flag, task.id AS id,
 COALESCE(owners.name, '[データありません]') AS owner_name,
 COALESCE(staffs.name, '[データありません]') AS staff_name
 FROM task 
  LEFT JOIN m_user AS owners ON owners.id = task.owner 
  LEFT JOIN m_user AS staffs ON staffs.id = task.staff;";
  $stmt = $pdo->prepare($sql); 
  $stmt->execute();
  while($result = $stmt->fetch(PDO::FETCH_ASSOC)){

?>
  <tr>
    <td><?php echo htmlspecialchars($result['id'], ENT_QUOTES, "UTF-8");?></td>
    <td><?php echo htmlspecialchars($result['title'], ENT_QUOTES, "UTF-8");?></td>
    <td><?php echo htmlspecialchars($result['owner_name'], ENT_QUOTES, "UTF-8");?></td>
    <td><?php echo htmlspecialchars($result['staff_name'], ENT_QUOTES, "UTF-8");?></td>
    <?php
    if ($result['complete_flag'] == "0") {
        echo "<td>未完了</td>";
    }else if ($result['complete_flag'] == "1") {
        echo "<td>完了</td>";
    }else{
        echo "<td>[データありません]</td>";
    }
    ?>
  </tr>

  <?php
}
}else{
  // SELECT結果がない場合の処理
  echo "データがありません。";
}
?>
</tbody>
</table>

<?php

?>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0