前回質問
上記質問の内容の続きとなりますが、質問内容の変更に伴い新たに質問させていただきます。
phpで勤怠管理のようなものを作成しており、
下記コードにあるよう、
①a_m.phpのフォームでNoを入力後、出勤/退勤/休憩開始/休憩終了をラジオボタンにて選択
②a_ma.phpでデータベースにインサートしております。
質問内容は、
保存されたデータベースの中からNoごとの該当の日付の「出勤時間」「退勤時間」を
取り出したいです。
困っていることは、
現状では一つのNoに複数日の出勤/退勤があるため[該当の日付の「出勤時間」「退勤時間」を
取り出すこと]ができません。
お教えいただきたい内容は、
下記コードで上記質問内容を実行するにはどのようなコードを書けばいいか?
また、コードやデータベースをどのように変更すればより簡単に(簡潔に)実行できるか、です。
前回質問時に多くの方にご回答いただいている中、大変恐縮ですがいただいたご説明で理解ができなかったため
再度質問をさせていただきました。
何卒、宜しくお願い致します。
<DOCTYPE html> <html lang ="ja"> <head> <meta charset="UTF-8"> <title>勤怠管理</title> </head> <body> <h1><u>勤怠管理</u></h1> <div class="aaa"> <?php $week = ['日','月','火','水','木','金','土']; $weekday = date('w'); $now3 =$week[$weekday]; $now1 =date('Y-m-d'. '(' . $now3 .')'); $now2 =date('H:i'); print '<table border="5" class="a">'; print '<tr>'; print '<th>'; print '<span style="font-size:300%;">'. $now1 .'</span><br>'; print '<span style="font-size:300%;">'. $now2 .'</span><br>'; print '</th>'; print '</tr>'; print '</table>'; ?> </div> <div class="bbb"> <form action="a_ma.php" method="POST"> <b>No.</b> <input type="text" name="No" placeholder="スタッフNo.を入力"><br> <span style="font-size: 14px;"><u>下記を選択し、登録ボタンをクリックしてください。</u></span><br> <input type="radio" name="office" value="出勤">出勤<br> <input type="radio" name="office" value="退勤">退勤<br> <input type="radio" name="office" value="休憩開始">休憩開始<br> <input type="radio" name="office" value="休憩終了">休憩終了<br> <input type="submit" value="登録"> <input type="reset"> </form> </div> </body> </html>
<DOCTYPE html> <html lang ="ja"> <head> <meta charset="UTF-8"> <title>勤怠管理 登録完了</title> </head> <body> <h1><登録完了></h1> <?php $week = ['日','月','火','水','木','金','土']; $weekday = date('w'); $now3 =$week[$weekday]; $now1 =date('Y-m-d'. '(' . $now3 .')'); $now2 =date('H:i'); if(isset($_POST['No'])){ $No = $_POST['No']; $office = $_POST['office']; try{ $pdo = new PDO("mysql:host=localhost;dbname=part_time_job;charset=utf8;","root",""); $pdo ->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); $sql = "INSERT INTO ptj(No, office, ymd, time, week) VALUES (:No, :office, :ymd, :time, :week)"; $stmt = $pdo->prepare($sql); $stmt ->bindparam(':No',$No,PDO::PARAM_STR); $stmt ->bindparam(':office',$office,PDO::PARAM_STR); $stmt ->bindparam(':ymd',$now1,PDO::PARAM_STR); $stmt ->bindparam(':time',$now2,PDO::PARAM_STR); $stmt ->bindparam(':week',$now3,PDO::PARAM_STR); $stmt ->execute(); $id = $pdo->lastinsertid(); }catch (PDOException $e){ print "データベースエラー"; var_dump($e->getMessage()); throw $e; }catch (PDOException $e){ //UTF8に文字エンコーディングを変換 print mb_convert_encoding($e->getMessage(),'UTF-8','SJIS-win'); } $pdo = null; } ?> <br><br> <div class="table"> <h1>登録が完了しました。</h1> <br><a href="http://localhost/ptj/a_m.php">【勤怠ページ】へ戻る</a> </div> </body> </html>
-- phpMyAdmin SQL Dump -- version 4.8.3 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: -- サーバのバージョン: 10.1.35-MariaDB -- PHP Version: 7.2.9 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `part_time_job` -- -- -------------------------------------------------------- -- -- テーブルの構造 `ptj` -- CREATE TABLE `ptj` ( `num` int(11) NOT NULL, `No` int(4) NOT NULL, `office` varchar(10) NOT NULL, `ymd` varchar(10) NOT NULL, `time` varchar(10) NOT NULL, `week` varchar(10) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- テーブルのデータのダンプ `ptj` -- INSERT INTO `ptj` (`num`, `No`, `office`, `ymd`, `time`, `week`) VALUES (20, 9998, '出勤', '2018-12-26', '12:48', '水'), (21, 9999, '出勤', '2018-12-26', '12:48', '水'), (23, 9998, '退勤', '2018-12-26', '16:04', '水'), (28, 9999, '退勤', '2018-12-26', '18:21', '水'), (36, 1, '出勤', '2018-12-28', '11:42', '金'), (37, 1, '退勤', '2018-12-28', '16:24', '金'); -- -- Indexes for dumped tables -- -- -- Indexes for table `ptj` -- ALTER TABLE `ptj` ADD PRIMARY KEY (`num`); -- -- AUTO_INCREMENT for dumped tables --
回答1件
あなたの回答
tips
プレビュー