sql数据验证中的循环问题

时间:2014-07-03 08:39:58

标签: php mysql loops while-loop

嗨,这是我的出勤登录PHP代码,但是当我删除while循环时它会输入多个条目。

请帮助我了解哪种循环更适合此编码...

当我删除while循环时工作正常。但是,可以输入多个参赛作品。

<?php

$conn = mysqli_connect("localhost", "Vijay", "vijay123", "test");
if (mysqli_connect_errno())
    {
        echo "Unable to connect the Server" . mysqli_connect_error();
    }

if ($_SERVER["REQUEST_METHOD"] == "POST")
    {
        // getting details from form
        $EmployeeNoA = mysqli_real_escape_string($conn, $_POST['EmployeeNoA']);
        $EmployeeNameA = mysqli_real_escape_string($conn, $_POST['EmployeeNameA']);
        $Shift = mysqli_real_escape_string($conn, $_POST['Shift']);
        $SignInDay = mysqli_real_escape_string($conn, $_POST['SignInDay']);
        $SignInDate = mysqli_real_escape_string($conn, $_POST['SignInDate']);
        $SignInTime = mysqli_real_escape_string($conn, $_POST['SignInTime']);

        if ($Shift == "0")
            {
                echo "<script>alert('Please Select the Shift!');</script>";
            }
        else
            {

                // $rowcount = mysqli_query($conn, "SELECT * From attend");
                // $rowCount = mysqli_num_rows($rowcount);

                $ver = mysqli_query($conn, "SELECT * FROM attend WHERE EmployeeNoA='$EmployeeNoA' && SignInDate='$SignInDate'");
                while ($view = mysqli_fetch_array($ver, MYSQL_ASSOC)) // **it is repeatedly running and store multiple data and error message. 
                    {
                            if ($SignInDate != $view['SignInDate'])
                            {
                                $sql = "INSERT INTO attend (EmployeeNoA, EmployeeNameA, Shift, Day, SignInDate, SignInTime) VALUES ('$EmployeeNoA', '$EmployeeNameA', '$Shift', '$SignInDay', '$SignInDate', '$SignInTime')";

                                if (!mysqli_query($conn, $sql))
                                    {
                                        echo mysqli_error($conn);
                                    }
                                else
                                    {
                                        echo "<script>alert ('You have Signed In!');</script>";
                                    }
                            }
                        else
                            {
                                echo "<script>alert ('You have ALREADY Signed In!');</script>";
                            }
                    }
            }
    }

?>

这里请找我的HTML

<h2 style="text-align:center;margin-bottom:1.5em;margin-top:1.5em;font-family:sans-serif">ATTENDANCE SIGN IN</h2>
<form action="<?php ($_SERVER['PHP_SELF']);?>" method="POST">
<div style="margin-top:20px;margin-left:20px;">
<table cellpadding="5">
<tr><td><label>Employee No:</label></td><td><input type="text" name="EmployeeNoA" value="<?php echo $EmployeeNo; ?>" readonly="readonly"></td></tr>
<tr><td><label>Employee Name:</label></td><td><input type="text" name="EmployeeNameA" value="<?php echo $EmployeeName; ?>" readonly="readonly"></td></tr>
<tr><td style="vertical-align:top;"><label>Shift:</label></td><td>
<select name="Shift" id="Shift">
<option value="0">-- Select --</option>
<option value="Shift1">I Shift</option>
<option value="Shift2">IA Shift</option>
<option value="Shift3">II Shift</option>
<option value="Shift4">General Shift</option>
<option value="Shift5">General A Shift</option>
</select>

<!--<tr><td style="vertical-align:top;"><label>Shift:</label></td><td style="line-height:1.6em; text-align:justify;font-weight:bold;"><input type="radio" name="shift" value="I"> I Shift <span style="font-weight:normal;font-size:small;color:grey;">6:00 - 3:00</span><br/><input type="radio" name="shift" value="IA"> IA Shift <span style="font-weight:normal;font-size:small;color:grey;">7:00 - 4:00</span><br/><input type="radio" name="shift" value="II"> II Shift<br/><input type="radio" name="shift" value="G"> Gen. Shift <span style="font-weight:normal;font-size:small;color:grey;">8:00 - 5:00</span><br/><input type="radio" name="shift" value="G1"> G I Shift <span style="font-weight:normal;font-size:small;color:grey;">10:00 - 7:00</span>--><td></tr>
<tr><td><label>Day:</label></td><td><input style="text-align:center;" type="text" name="SignInDay" value="<?php date_default_timezone_set('Asia/Kolkata'); echo date('l'); ?>" readonly="readonly"></td></tr>
<tr><td><label>SignIn Date:</label></td><td><input style="text-align:center;" type="text" name="SignInDate" value="<?php date_default_timezone_set('Asia/Kolkata'); echo date('Y-m-d'); ?>" readonly="readonly"></td></tr>
<tr><td><label>SignIn Time:</label></td><td><input style="text-align:center;color:blue;" type="text" name="SignInTime" value="<?php date_default_timezone_set('Asia/Kolkata'); echo date('H:i:s'); ?>" readonly="readonly"></td></tr>
<tr><td style="text-align:center;" colspan="2"><input style="margin-top:20px;" type="submit" name="signin" value="Sign In">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<button type="close" name="close" onclick="closeWin()">Exit</button></td></tr>
</table>
</div>
</form>

1 个答案:

答案 0 :(得分:1)

看起来您只想测试第一个查询是否返回任何行。使用:

$ver = mysqli_query($conn, "SELECT COUNT(*) AS count FROM attend WHERE EmployeeNoA='$EmployeeNoA' && SignInDate='$SignInDate'");
$row = mysqli_fetch_assoc($ver);
if ($row['count'] == 0) {
    sql = "INSERT INTO attend (EmployeeNoA, EmployeeNameA, Shift, Day, SignInDate, SignInTime) VALUES ('$EmployeeNoA', '$EmployeeNameA', '$Shift', '$SignInDay', '$SignInDate', '$SignInTime')";
    if (!mysqli_query($conn, $sql)) {
        echo mysqli_error($conn);
    } else {
        echo "<script>alert ('You have Signed In!');</script>";
    }
} else {
    echo "<script>alert ('You have ALREADY Signed In!');</script>";
}