できていること
未完のToDoを一覧で表示し、ToDoが終わったら「完了」ボタンを押して一覧から消していく、という仕組みをPHPとMySQLで作っています。
この一覧を取得し、完了ボタンをクリックすることでDBを更新して、WEB上のToDo一覧から表示を消す、というところまでは実装できたのですが、操作ミスを防ぐために確認のメッセージを出し、その結果も表示したいと思います。
確認メッセージについては、検索してJavaScriptのconfirmが使えそうだったのでこれを使って、表示することができました。
わからないこと
confirmの確認ダイアログで「OK」をクリックした場合は「状況を「完了」に更新しました」、「キャンセル」をクリックした場合については「キャンセルしました」、などの結果メッセージを出したいのですが、これがうまくいきません(検索して見つけられませんでした)。
確認の部分も含めてJavaScriptにこだわらないのですが(VBAでいうところのmsgbox的なものとか)、確認と結果を表示する何かよい方法がおればお知恵を拝借できますとありがたいです。
宜しくお願い致します。
PHP
1<?php 2require('db.php'); 3 4// 本日の完了していないToDoを、更新ボタン(「完了」)付きで表示する 5// rctは、「ToDoがない場合はメッセージを出す。」のチェックカウント用 6$rct = 0; 7$db=new DB(); 8try{ 9 $sql = "SELECT * FROM schedule where situation <> "完了" and date=DATE(NOW())"; 10 $stmt = $db->executeSQL($sql,null); 11 $array = null; 12 $stmt->execute($array); 13 $recordlist = "<table>\n"; 14 while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ 15 $id = $row['id']; 16 //表示用のレコードセット 17 $recordlist .= "<tr><td>{$row['ToDo']}</td>"; 18 $rct++; 19 20 //更新ボタンのコード 21 $recordlist .= <<<eof 22 <td><form method='POST' action=''> 23 <input type='hidden' Name='id' value='$id'> 24 <input type='submit' name='update' value='完了' onclick='return CheckUpdate()'> 25 </form></td> 26eof; 27 $recordlist .= "</tr>\n"; 28 } 29 $recordlist .= "</table>\n"; 30}catch(Exception $e){ 31 $recordlist = $e->getMessage(); 32} 33 34//任意のレコードの更新ボタンがクリックされたときの更新処理 35if(isset($_POST['update'])){ 36 $db = new DB(); 37 try{ 38 $sql = "UPDATE schedule SET situation="完了" WHERE id=? "; 39 $array = array($_POST['id']); 40 $stmt = $db->executeSQL($sql,$array); 41 }catch(Exception $e){ 42 $res = $e->getMessage(); 43 } 44} 45?> 46 47<!DOCTYPE html> 48<html> 49<head> 50 <meta charset="utf-8" /> 51 <title>ToDo</title> 52 53 <!-- 更新ボタンを押した際の確認メッセージ --> 54 <script> 55 function CheckUpdate(){ 56 return confirm("状況を「完了」に更新してもよろしいですか?"); 57 } 58 </script> 59</head> 60 61<body> 62 <?php 63 // ToDo一覧を表示。本日のToDoがない場合はメッセージを出す。 64 if($rct !== 0){ 65 echo $recordlist; 66 } else { 67 echo '<FONT COLOR="RED">本日のToDoありません。</FONT>'; 68 } 69 ?> 70</body> 71</html>
回答1件
あなたの回答
tips
プレビュー