私は、学生の出席を挿入するPHPスクリプトを用意しています。まず、同じ学生IDと日付の出席者がすでに存在するかどうかを確認する必要があります。そうでなければ、出席を挿入する。私は学生がphp関数のcompareTimeの戻り値に基づいて存在するか遅いかに関わらず、出席状況に挿入したいと思います。しかし問題は、関数が何も返さないことです。そのため、出席データでステータス列が空白になっています。クエリ内のPHP関数が戻り値を返さない
function checkAttendance($conn, $stud_id) {
$check = mysqli_query($conn, "SELECT * FROM tbl_attendance WHERE student_id = '$stud_id' AND date = CURDATE()") or die (mysqli_error());
if(mysqli_num_rows($check) > 0) {
return true;
}
else {
return false;
}
}
function compareTime($time,$grade) {
$ctime = strtotime($time);
if($grade == "H1" || $grade == "H2" || $grade == "H3" || $grade == "H4" || $grade == "S1" || $grade == "S2") {
if ($ctime > strtotime('05:00:00') && $ctime < strtotime('07:30:00')) return "P";
else if ($ctime > strtotime('07:30:00') && $ctime < strtotime('8:30:00')) return "L";
}
else {
if($ctime > strtotime('05:00:00') && $ctime < strtotime('07:15:00'))
return "P";
else if ($ctime > strtotime('07:15:00') && $ctime < strtotime('8:30:00'))
return "L";
}
}
function recordAttendance($conn, $sid, $glid, $scid) {
$sql = mysqli_query($conn, "INSERT INTO tbl_attendance(student_id, gradeLevel_id, section_id, date, arrival_time, status) VALUES ('".$sid."', '".$glid."', '".$scid."', CURDATE(), CURTIME(), '".compareTime(date('H:i:s'),$glid)."')") or die(mysqli_error());
}
$res = mysqli_query($connect, "SELECT * FROM tbl_student WHERE card_id = '$cardID'")or die(mysqli_error());
while($row = mysqli_fetch_array($res,MYSQLI_ASSOC)) {
if (checkAttendance($connect, $row['student_id']))
echo "Already Exist!";
else
recordAttendance($connect, $row['student_id'], $row['gradeLevel_id'], $row['section_id']);
}
'else'(ここで、'場合は()...もし他の()入れてみてください。あなたの状態がどこにあるのか見てください!両方の条件が間違っていればコードを書かなかったからです! –
何か問題がありますか?また 'mysqli_error()'は接続変数を必要とします – JustBaron
$ connと$ connectの違いは何ですか? –