PHPと MySQLを利用して勤怠管理システムを作成しております。システムの構成としましては、ログイン機能と出退勤登録機能を持たせます。ログイン機能では、従業員番号とパスワードをログイン画面へ入力し、ログイン操作を行います。ログインした情報をデータベースに保存します。出退勤登録機能では、出勤ボタンまたは退勤ボタンを押したら、日付と時刻を記録し、データベースに保存します。最終的にデータベースに保存したものを一覧に表示させます。ここで、出退勤登録機能を実装中にエラーが発生しました。解決方法を教えて下さい。
Notice: Undefined variable: user_no in /Applications/XAMPP/xamppfiles/htdocs/timecard1/begin.php on line 15
Notice: Undefined variable: password in /Applications/XAMPP/xamppfiles/htdocs/timecard1/begin.php on line 15
Notice: Undefined variable: pdo in /Applications/XAMPP/xamppfiles/htdocs/timecard1/begin.php on line 24
Fatal error: Uncaught Error: Call to a member function prepare() on null in /Applications/XAMPP/xamppfiles/htdocs/timecard1/begin.php:24 Stack trace: #0 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/timecard1/begin.php on line 24
if(isset($_POST['begin'])){
echo "出勤しました。";
echo "";
};
$db_user = "kintai";
$db_pass = "password";
$db_host = "localhost";
$db_name = "mydb";
$dsn = "mysql:host=$db_host; dbname=$db_name; charset=utf8";
try {
$dbh = new PDO($dsn, $user_no, $password);
} catch (PDOException $Exception) {
die('エラー:'.$Exception->getMessage());
}
try{
$date = new DateTime();
$date = $date->format('Y-m-d H:i:s');
$sql = 'INSERT INTO users(use_no,password) VALUES(:use_no, :password)';
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':use_no', $_SESSION['use_no'], PDO::PARAM_STR);
$stmt->bindValue(':password', $_SESSION['password'], PDO::PARAM_STR);
$stmt->execute();
}catch (PDOException $Exception) {
die('エラー:'.$Exception->getMessage());
}
?>
以下のプログラムは、ログイン機能です。
<?php
//ログイン状態を確認
session_start();
//ログインされていない場合はログイン画面へ
if(!isset($_SESSION['id'])){
$link = '<a href = "login.php"ログイン画面へ</a>';
exit;
}
//ログインユーザ番号の情報をセッションから取得
$use_no = $_SESSION['use_no'];
//もし出勤ボタンを押したら、begin.phpへ遷移する。その際、出勤ボタンを押した日付と時刻をセッションする。
//もし退勤ボタンを押したら、finish.phpへ遷移する。その際、出勤ボタンを押した日付と時刻をセッションする。
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>出退勤登録</title>
</head>
<body>
<h1>出退勤登録画面</h1>
<p id="RealdateTime"></p>
<script src = "timecard.js"></script>
<div class = "kinmu">
<form name = "form1" method = "post" action = "begin.php">
<input type = "submit" name = "begin" value = "出勤">
</form>
<from>
<form name = "form2" method = "post" action = "finish.php">
<input type = "submit" name = "finish" value = "退勤">
</form>
</div>
</body>
</html>
下図はログイン機能の画面です。