現状:
データベースをテーブルに作成しました。
検索ボタンを押すと、すべてが順調に進みますが、最初アクセスする時だけエラーが出てしまいます。
エコしながらやっていますが、selectに値が入ってなかったことが判明しました。
最初にアクセスした時
![]
そのまま検索ボタンを押した時
やりたいこと:
アクセスしたらテーブルを表示したいです。(現在はすべて未選択で検索すればテーブルが表示します。)
if文をいじれば解決できそうな気がしますが、どういじればいいかわからないです。
ご回答宜しくお願いいたします。
php
1<form method="post"> 2<?php 3 4$sql = "SELECT count(*) FROM task"; 5$stmt = $pdo->prepare($sql); $stmt->execute(); 6$row = $stmt->fetchColumn(); 7 8echo "<select name='sakusei' class='sakusei'>"; 9echo "<option value='free'>未選択</option>"; 10$sql1 = "SELECT name,id FROM m_user"; 11 $stmt1 = $pdo->prepare($sql1); 12 $stmt1->execute(); 13 while($result1 = $stmt1->fetch(PDO::FETCH_ASSOC)){ 14 if ($result1['name']=="") { 15 $sakusei="データがありません。"; 16 $sakusei_id="0"; 17 }else{ 18 $sakusei=$result1['name']; 19 $sakusei_id=$result1['id']; 20 } 21 echo "<option value='".$sakusei_id."'>".$sakusei."</option>"; 22} 23echo "</select>"; 24 25echo "<select name='menba' class='menba'>"; 26echo "<option value='free'>未選択</option>"; 27$sql2 = "SELECT name,id FROM m_user"; 28 $stmt2 = $pdo->prepare($sql2); 29 $stmt2->execute(); 30 while($result2 = $stmt2->fetch(PDO::FETCH_ASSOC)){ 31 if ($result2['name']=="") { 32 $menba="データがありません。"; 33 $menba_id="0"; 34 }else{ 35 $menba=$result2['name']; 36 $menba_id=$result2['id']; 37 } 38echo "<option value='".$menba_id."'>".$menba."</option>"; 39} 40echo "</select>"; 41 42$owner = $_POST['sakusei'];//ownerID 43$staff = $_POST['menba'];//menbaID 44$complete = $_POST['complete']; 45 46?> 47<select name="complete" class="complete"> 48 <option value="free">未選択</option> 49 <option value="0">未完了</option> 50 <option value="1">完了</option> 51</select> 52 53<input type="submit" name="sub" value="検索"> 54 55 56 57 58<div id="items"></div> 59 60 61<table id="myTable"> 62<thead> 63 <tr> 64 <th data-column-id="id" data-type="numeric">ID</th> 65 <th data-column-id="title">タスク名</th> 66 <th data-column-id="owner" data-order="desc">作成者</th> 67 <th data-column-id="staff" data-type="numeric">メンバー</th> 68 <th data-column-id="complete_flag">完了フラグ</th> 69 </tr> 70</thead> 71<tbody> 72 73<?php 74 75if ($owner != "free" || $staff != "free" || $complete != "free") { 76 $sql6 = "SELECT id, title, owner, staff, complete_flag FROM task WHERE"; 77}else{ 78 $sql6 = "SELECT id, title, complete_flag, owner, staff FROM task"; 79} 80 81 82if ($owner != "free" ){ 83 if ($staff != "free" || $complete != "free") { 84 $sql6.= " owner=$owner AND"; 85 }else{ 86 $sql6.= " owner=$owner"; 87} 88} 89 90 91if ($staff != "free"){ 92 93 if ($complete != "free") { 94 $sql6.= " staff=$staff AND"; 95 }else{ 96 $sql6.= " staff=$staff"; 97} 98} 99 100if ($complete != "free") { 101 if ($owner != "free" || $staff != "free") { 102 $sql6.= " complete_flag=$complete"; 103}else{ 104 $sql6.= " complete_flag=$complete"; 105} 106} 107 108 109 110echo $sql6; 111 112$sql = "SELECT count(*) FROM task"; 113$stmt = $pdo->prepare($sql); $stmt->execute(); 114$row = $stmt->fetchColumn(); 115if($row > 0){ 116 117$stmt = $pdo->prepare($sql6); 118$stmt->execute(); 119 120while($result = $stmt->fetch(PDO::FETCH_ASSOC)){ 121$sakusei = $result['owner']; 122$menba = $result['staff']; 123// taskのowner==m_userのname 124$sql1 = "SELECT name FROM m_user WHERE id = $sakusei"; 125 $stmt1 = $pdo->prepare($sql1); 126 $stmt1->execute(); 127 $result1 = $stmt1->fetch(PDO::FETCH_ASSOC); 128 if ($result1['name']=="") { 129 $sakusei="データがありません。"; 130 }else{ 131 $sakusei=$result1['name']; 132 } 133 134// taskのstaff==m_userのname 135$sql2 = "SELECT name FROM m_user WHERE id = $menba"; 136 $stmt2 = $pdo->prepare($sql2); 137 $stmt2->execute(); 138 $result2 = $stmt2->fetch(PDO::FETCH_ASSOC); 139 if ($result2['name']=="") { 140 $menba="データがありません。"; 141 }else{ 142 $menba=$result2['name']; 143 } 144 145?> 146 <tr> 147 <td><?php echo htmlspecialchars($result['id'], ENT_QUOTES, "UTF-8");?></td> 148 <td><?php echo htmlspecialchars($result['title'], ENT_QUOTES, "UTF-8");?></td> 149 <td><?php echo htmlspecialchars($sakusei, ENT_QUOTES, "UTF-8");?></td> 150 <td><?php echo htmlspecialchars($menba, ENT_QUOTES, "UTF-8");?></td> 151 <?php 152 if ($result['complete_flag'] == "0") { 153 echo "<td>未完了</td>"; 154 }else if ($result['complete_flag'] == "1") { 155 echo "<td>完了</td>"; 156 }else{ 157 echo "<td>[データありません]</td>"; 158 } 159 ?> 160 </tr> 161 162 <?php 163} 164 165}else{ 166 // SELECT結果がない場合の処理 167 echo "データがありません。"; 168} 169?> 170</tbody> 171</table> 172 173 </form>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/01 01:35