質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

10438閲覧

phpとMYSQLでタイムカードの作り方

rura

総合スコア70

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/09/18 08:41

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
今、就労支援施設のタイムカードを作ってます。
下記の勤務体系で作成予定です。
A・・・フルタイム(9時~18時)
B・・・就労移行組(10時~16時)
それで困ってることただいま出勤エリアを作成中ですが、
どうしても、今を打刻した時間で表示したいのに書き方が解らず困ってます。
また、HTMLのvalueに改定あるPHP文の書き方がこれで良いか不安です。
訂正があれば、お願いします。

###発生している問題・エラーメッセージ

MySQLの出力表示 startweekがæ—¥を水 field2が00:00:17を打刻した現在時刻 例 10時なら10:00:00

###該当のソースコード

<?php ini_set('display_errors', 'On'); error_reporting(E_ALL); $dsn = 'mysql:dbname=mfdb;host=localhost'; $user = 'root'; $password = ''; //日本語の曜日配列 $weekjp = array( '日', //0 '月', //1 '火', //2 '水', //3 '木', //4 '金', //5 '土' //6 ); //現在の曜日番号(日:0 月:1 火:2 水:3 木:4 金:5 土:6)を取得 $weekno = date('w'); try { if (filter_input_array(INPUT_POST)) { $id = filter_input(INPUT_POST, 'id');//利用者ID $first_name = filter_input(INPUT_POST, 'first_name');//利用者名 $startyear = filter_input(INPUT_POST, 'startyear');//かいs $startmonth = filter_input(INPUT_POST, 'startmonth');// $startday = filter_input(INPUT_POST, 'startday'); $startweek = filter_input(INPUT_POST, 'startweek'); $field2 = filter_input(INPUT_POST, 'field2'); $err = array(); if (empty($id)) { $err['id'] = "idを入力してください"; } if (empty($first_name)) { $err['first_name'] = "名前を入力してください"; } if (empty($startyear)) { $err['startyear'] = "今年度の開始年を入力してください"; } if (empty($startmonth)) { $err['startmonth'] = "今年度の開始月を入力してください"; } if (empty($startday)) { $err['startday'] = "今年度の開始日を入力してください"; } if (empty($startweek)) { $err['startweek'] = "今年度の開始曜日を入力してください"; } if (empty($field2)) { $err['field2'] = "勤務開始する現在時間を入力してください"; } // エラーの数を数えて、エラーがなければインサート if (0 == count($err)) { $db = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); $sql = "INSERT INTO attendanse ("; $sql .= "id, first_name, startyear, startmonth, startday, startweek, field2 "; $sql .= ") VALUES ("; $sql .= ":id,:first_name,:startyear,:startmonth,:startday,:startweek,:field2"; $sql .= ")"; $stmt = $db->prepare($sql); // パラメータのセットの仕方はマニュアルで確認してください。 $stmt->bindParam(':id', $id, PDO::PARAM_STR); $stmt->bindParam(':first_name', $first_name, PDO::PARAM_INT); $stmt->bindParam(':startyear', $startyear, PDO::PARAM_STR); $stmt->bindParam(':startmonth', $startmonth, PDO::PARAM_STR); $stmt->bindParam(':startday', $startday, PDO::PARAM_STR); $stmt->bindParam(':startweek', $startweek, PDO::PARAM_STR); $stmt->bindParam(':field2', $field2, PDO::PARAM_STR); // 実行 $stmt->execute(); //$registered = mysqli_affected_rows($db); echo "<P>下記表の内容で登録しました</P>"; } } } catch (PDOException $e) { $err['all'] = $e->getMessage(); } ?> <?php if (isset($err) && 0 < count($err)) : ?> <p><?= nl2br(implode(PHP_EOL, $err)); ?></p> <?php endif; ?> <?php include ('layout/Hetta.php'); ?> <title>TAG index Webサイト</title> <script type="text/javascript"> <!-- function disp(){ var now = new Date(); var hour = now.getHours(); // 時 var min = now.getMinutes(); // 分 var sec = now.getSeconds(); // 秒 // 数値が1桁の場合、頭に0を付けて2桁で表示する指定 if(hour < 10) { hour = "0" + hour; } if(min < 10) { min = "0" + min; } if(sec < 10) { sec = "0" + sec; } // フォーマットを指定(不要な行を削除する) var watch2 = hour + '時' + min + '分' + sec + '秒'; // パターン2 // テキストフィールドにデータを渡す処理(不要な行を削除する) document.form1.field2.value = watch2; // パターン2 document.form1.field3.value = watch2; // パターン2 setTimeout("disp()", 1000); } // --> </script> </head> <body onLoad="disp()"> <!-- コンテナ開始 --> <div id="container"> <div id="containerInner"> <!-- ヘッダ開始 --><?php include ('layout/riyousyagnavi.php'); ?><!-- ヘッダ終了 --> <div id="wrapper"> <ol class="topicPath"> <li><a href="index.php">利用者ログイン</a>&gt;</li> <li><a href="Attendance.php">勤怠登録</a>&gt;</li> </ol> <!-- メインカラム開始 --> <div id="content"> <div id="contentInner"> <div class="pagetitle"> <div class="pagetitles"><h3>勤怠登録</h3></div> <div class="example"> <form action="#" name="form1"action="Attendance.php" method="post"> <p>出勤時に必ず行って下さい</p> <table> <caption>勤怠登録手続き</caption> <tr> <th rowspan="2">会員番号</th> <th rowspan="2">名前</th> <th colspan="4">日付</th> <th rowspan="2">時間</th> <th rowspan="2">登録内容</th> </tr> <tr> <th>年</th> <th>月</th> <th>日</th> <th>曜日</th> </tr> <tr> <td><input type="text" name="id" size=" 10" maxlength="50" placeholder="○○太郎" value="<?php if (isset($_POST['id'])) {echo htmlspecialchars($_POST['id'],ENT_QUOTES,"UTF-8");} ?>"></td> <td><input type="text" name="first_name" size=" 10" maxlength="50" placeholder="○○太郎" value="<?php if (isset($_POST['first_name'])) {echo htmlspecialchars($_POST['first_name'],ENT_QUOTES,"UTF-8");} ?>"></td> <td><input type="text" name="startyear" id="edit_box00_year" size="1"value="<?php echo date("Y"); ?>" /></td> <td><input type="text" name="startmonth" id="edit_box00_mon" size="1"value="<?php echo date("m"); ?>" /></td> <td><input type="text" name="startday" id="edit_box00_date" size="1"value="<?php echo date("d"); ?>" /></td> <td><input type="text" name="startweek" id="edit_box00_week" size="1"value="<?php echo $weekjp[$weekno]; ?>"></td> <td><input type="text" name="field2" size="9"></td> <td><input type="submit" value="出勤(in)"></td> </tr> <tr> <td><input type="text" size="10" name="id2"></td> <td><input type="text" size="10" name="fname2"></td> <td><input type="text" size="1" name="endyear"value="<?php echo date("Y"); ?>" /></td> <td><input type="text" size="1" name="endmonth"value="<?php echo date("m"); ?>" /></td> <td><input type="text" size="1" name="endday"value="<?php echo date("d"); ?>" /></td> <td><input type="text" size="1" name="endtweek"value="<?php echo $weekjp[$weekno]; ?>"></td> <td><input type="text" size="10" name="field3"value=""></td> <td><input type="submit" value="退勤(OUT)"></td> </tr> </table> </div> <br> <?php include ('layout/footer.php'); ?>

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
PHP、ATOM,phpMyAdmin

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/09/18 09:35 編集

データベース のカラム field2 にどんな値が実際に書き込まれているのか、フィールドはどんな型で定義されているのかといった情報がないと回答できませんよ。
guest

回答1

0

ベストアンサー

今を打刻した時間で表示したい

PHPで(現在)時刻を扱うには、「time」「date」関数、
または「DateTime」クラスを使います。

解説ページがたくさんあるので、検索してみてください。


PHP文の書き方がこれで良いか不安

質問者の方の意図と異なった回答になってしまいますが、
率直に言えば、「不安」があってここで質問するくらいなら、
法人であれば商業ソフトを買ってしまえばいいのにと思います。

というのも、「勤怠管理」「タイムカード」で検索すれば、
Amazonなどの通販サイトで売ってるパッケージでも、
クラウドのサービスでも、今は安価なものがたくさんあります。

一般に売ってない独自システムを作るならともかく、
勤怠管理のようなビジネス系システムについて、
「なんでも自給自足」は割に合いません。

というと、冷たい感じの回答に思われるかもしれません。

しかしたとえば、将来的に他の方が担当されたときなど、
システムを保守できずに業務に支障をきたす、
といった自作ならではのリスクも想定できます。

また、任せられるところは任せることで、質問者の方や組織の方が、
より意義のある仕事に取りかかれる、というメリットもあります。

そういうわけでして、広い視野で検討して頂ければと思います。

投稿2016/09/18 09:55

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rura

2016/09/18 10:21

法人であれば商業ソフトを買ってしまえばいいのにと思います。 >そう思うのですが、周りと私が買えと言っても、 うちの施設の代表はそんなものびた一文たりともだすか!といって、 言うことを聞いて貰えず、 次にそんなこと言ったら、 お前らを首にすると豪語されたので、 こういうことやれる私がやれと渋々やらされているわけです。 シクシク。
LLman

2016/09/18 10:36

うーん、それは大変ですね……。 ソフトを買って、時間を買った方が、 人件費から見てどう考えても得だと思いますが、 組織の事情でしたら仕様がないですね。 技術的な話をすると、プログラムで不安がある部分は、 テスト、リファクタリング、例外処理、などでカバーします。 これらは、開発コスト(時間)はかかるが、 エラーやバグを少なくする方法です。 業務上重要な部分ほど、手厚くやります。
kei344

2016/09/18 10:59

To: UmemuraYukaさん こういったものもありますよ。 【こんなにあるよ!無料で使える勤怠管理のクラウドサービス・フリーソフトをまとめてみた!全18選  | sounansa.nethttp://sounansa.net/archives/1074
LLman

2016/09/18 11:08

なるほど、無料のクラウドがありましたね。 無料だと人数制限とかの条件はありますが、 今回の場合は有料だとダメなので、私も良いと思います。
rura

2016/09/18 12:19

To: UmemuraYukaさん こういったものもありますよ。 【こんなにあるよ!無料で使える勤怠管理のクラウドサービス・フリーソフトをまとめてみた!全18選  | sounansa.nethttp://sounansa.net/archives/1074 >これもよいとおすすめしたのですが、 http://www.kaigo-wel.city.nagoya.jp/_files/00015271/syuroikosien_jisseki.pdf このページある開始時間と終了時間などをすべて形そっくりに自動で記入できないならやらないとおっしゃるのです。 ちなみにわたしのいるところはなんらかの病気や障がいのある方向けの施設なのです
退会済みユーザー

退会済みユーザー

2016/09/18 12:24

秒単位でとかキチガイじみてる気がするが
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問