表題の通りデータべース内のレコードを取得したいのですが、
例えば「id=1」のカラム内に同じレコードが複数ありその中の一つを
指定して取得したいと考えております。
勤怠管理ページを作っており
a_m.phpで「出勤」「退勤」「休憩開始」「休憩終了」をラジオボタンで選択し
a_ma.phpでデータベースに保存しています。
name=NoでスタッフNoを、name=officeで勤怠を、date関数で出した時間をそれぞれ
データベース内に保存しています。
今回、そこから日当を計算したいので
データベース内の該当スタッフNoの出勤~退勤の時間の差分を割り出し
時給を掛けて表示をさせたいと思っております。
a_m.php
1<DOCTYPE html> 2<html lang ="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <link rel="stylesheet" type="text/css" href="cms1.css"> 6<title>勤怠管理</title> 7</head> 8<body> 9 10<h1><u>勤怠管理</u></h1> 11 12<div class="aaa"> 13<?php 14$week = ['日','月','火','水','木','金','土']; 15$weekday = date('w'); 16$now3 =$week[$weekday]; 17$now1 =date('Y-m-d'. '(' . $now3 .')'); 18$now2 =date('H:i'); 19 20print '<table border="5" class="a">'; 21print '<tr>'; 22print '<th>'; 23print '<span style="font-size:300%;">'. $now1 .'</span><br>'; 24print '<span style="font-size:300%;">'. $now2 .'</span><br>'; 25 26print '</th>'; 27print '</tr>'; 28print '</table>'; 29 30?> 31</div> 32 33<div class="bbb"> 34<form action="a_ma.php" method="POST"> 35 <b>No.</b> 36 <input type="text" name="No" placeholder="スタッフNo.を入力"><br> 37 <span style="font-size: 14px;"><u>下記を選択し、登録ボタンをクリックしてください。</u></span><br> 38 <input type="radio" name="office" value="出勤">出勤<br> 39 <input type="radio" name="office" value="退勤">退勤<br> 40 <input type="radio" name="office" value="休憩開始">休憩開始<br> 41 <input type="radio" name="office" value="休憩終了">休憩終了<br> 42 <input type="submit" value="登録"> <input type="reset"> 43</form> 44</div> 45 46</body> 47</html> 48
a_ma.php
1<DOCTYPE html> 2<html lang ="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <link rel="stylesheet" type="text/css" href="cms1.css"> 6<title>勤怠管理 登録完了</title> 7</head> 8<body> 9 10<h1><登録完了></h1> 11 12<?php 13 14$week = ['日','月','火','水','木','金','土']; 15$weekday = date('w'); 16$now3 =$week[$weekday]; 17$now1 =date('Y-m-d'. '(' . $now3 .')'); 18$now2 =date('H:i'); 19 20if(isset($_POST['No'])){ 21 $No = $_POST['No']; 22 $office = $_POST['office']; 23 24 25try{ 26 $pdo = new PDO("mysql:host=localhost;dbname=part_time_job;charset=utf8;","root",""); 27 $pdo ->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 28 29 $sql = "INSERT INTO ptj(No, office, ymd, time, week) VALUES (:No, :office, :ymd, :time, :week)"; 30 31 $stmt = $pdo->prepare($sql); 32 $stmt ->bindparam(':No',$No,PDO::PARAM_STR); 33 $stmt ->bindparam(':office',$office,PDO::PARAM_STR); 34 $stmt ->bindparam(':ymd',$now1,PDO::PARAM_STR); 35 $stmt ->bindparam(':time',$now2,PDO::PARAM_STR); 36 $stmt ->bindparam(':week',$now3,PDO::PARAM_STR); 37 38 $stmt ->execute(); 39 $id = $pdo->lastinsertid(); 40 41}catch (PDOException $e){ 42 print "データベースエラー"; 43 var_dump($e->getMessage()); 44 throw $e; 45 }catch (PDOException $e){ 46 //UTF8に文字エンコーディングを変換 47 print mb_convert_encoding($e->getMessage(),'UTF-8','SJIS-win'); 48} 49$pdo = null; 50} 51?> 52<br><br> 53<div class="table"> 54<h1>登録が完了しました。</h1> 55 56<br><a href="http://localhost/ptj/a_m.php">【勤怠ページ】へ戻る</a> 57</div> 58 59</body> 60</html> 61
データベースは上記のような感じになるのですが、例えば「No9998の出勤時間と退勤時間を
取得したい」という場合、取得することは可能でしょうか?
(Noは今後増えていくため[WHERE句][LIMIT句]では難しいのではと思い壁にぶつかっております)
コードのアドバイスや、この書き方では難しいなどいろいろなご意見・アドバイスが頂けましたら
幸いです。
なお、その際には参考になるようなやり方もご教授いただければ助かります。
何卒、宜しくお願い致します。
(追記)
pyj.sql
1-- phpMyAdmin SQL Dump 2-- version 4.8.3 3-- https://www.phpmyadmin.net/ 4-- 5-- Host: 127.0.0.1 6-- Generation Time: 7-- サーバのバージョン: 10.1.35-MariaDB 8-- PHP Version: 7.2.9 9 10SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 11SET AUTOCOMMIT = 0; 12START TRANSACTION; 13SET time_zone = "+00:00"; 14 15 16/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 17/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 18/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 19/*!40101 SET NAMES utf8mb4 */; 20 21-- 22-- Database: `part_time_job` 23-- 24 25-- -------------------------------------------------------- 26 27-- 28-- テーブルの構造 `ptj` 29-- 30 31CREATE TABLE `ptj` ( 32 `num` int(11) NOT NULL, 33 `No` int(4) NOT NULL, 34 `office` varchar(10) NOT NULL, 35 `ymd` varchar(10) NOT NULL, 36 `time` varchar(10) NOT NULL, 37 `week` varchar(10) NOT NULL 38) ENGINE=InnoDB DEFAULT CHARSET=utf8; 39 40-- 41-- テーブルのデータのダンプ `ptj` 42-- 43 44INSERT INTO `ptj` (`num`, `No`, `office`, `ymd`, `time`, `week`) VALUES 45(20, 9998, '出勤', '2018-12-26', '12:48', '水'), 46(21, 9999, '出勤', '2018-12-26', '12:48', '水'), 47(23, 9998, '退勤', '2018-12-26', '16:04', '水'), 48(28, 9999, '退勤', '2018-12-26', '18:21', '水'), 49(36, 1, '出勤', '2018-12-28', '11:42', '金'), 50(37, 1, '退勤', '2018-12-28', '16:24', '金'); 51 52-- 53-- Indexes for dumped tables 54-- 55 56-- 57-- Indexes for table `ptj` 58-- 59ALTER TABLE `ptj` 60 ADD PRIMARY KEY (`num`); 61 62-- 63-- AUTO_INCREMENT for dumped tables 64-- 65
回答3件
あなたの回答
tips
プレビュー