我试图将用户的签入值插入db。为此我调用函数并设置隐藏字段的值,而不是尝试提交表单,但是在表单被子模式后,hiden字段的值被重置。
HTML代码
<form name="checkinout" action="logindetails.php" method="post" enctype="multipart/form-data" id="checkinout">
<table class="login-detaills" width="100%"><thead><th></th><th>Check In</th><th>Check Out</th><th>Hours</th></thead>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
</fieldset>
<table>
<tr><td><input type="button" onClick="call()" value="checkin"></button></td><td><input type="button" id="logout" onclick="call2();" value="Check Out" ></td></tr>
<tr><td><input type="hidden" id="checkin" name="checkin"></td><td><input type="hidden" id="checkout" name="checkout"></td></tr>
</table>
</form>
的Javascript
function call(){
$('#checkin').val("checkin");
$('#checkinout').submit();
}
function call2(){
$('#checkout').val("checkout");
$('#checkinout').submit();
}
PHP代码
if(isset($_POST['checkinout']) ){
if(isset($_POST['checkin']) && $_POST['checkin']=='checkin'){
$sql = "INSERT INTO attend (loginout,log_type,fk_userid) VALUES ('".TODAY_DATETIME."','I','".$_SEESION['user_id']."')";
}elseif(isset($_POST['checkout']) && $_POST['checkout']=='checkout'){
$sql = "INSERT INTO attend (loginout,log_type,fk_userid) VALUES ('".TODAY_DATETIME."','O','".$_SEESION['user_id']."')";
}
$stmt = $class->dbh->prepare($sql);
$stmt->execute();
$res = $stmt->fetch(PDO::FETCH_ASSOC);
}
首先它不满意这个ifset($ _ POST ['checkinout'])
答案 0 :(得分:2)
<input type="hidden" id="checkout">
没有name
属性,因此即使您给它一个值,它也不会成功控制,也不会被提交。
如果您希望填充$_POST['checkout']
,则需要一个name="checkout"
的元素。
答案 1 :(得分:0)
您的代码中未定义name
属性。要使用$_POST['checkout']
,您必须拥有<input type="hidden" id="checkout" name="checkout">
答案 2 :(得分:0)
看起来您正在检查是否设置了帖子值$_POST['checkinout']
,但我在任何地方都看不到该表单控件。我看到的唯一控件是:
<input type="button" onClick="call()" value="checkin"></button>
<input type="button" id="logout" onclick="call2();" value="Check Out" >
<input type="hidden" id="checkin" >
<input type="hidden" id="checkout">
就像@Quentin所说,他们没有名称属性,因此在任何情况下提交后他们都不会出现在$_POST
数组中,以便& #39;你必须修理的另一件事。
我认为您最有可能假设,因为表单ID为checkinout
,所以索引$_POST['checkinout']
将在表单提交时设置。不是这种情况;只有表单控件(输入,选择,复选框,按钮等)将填充$_POST
内的数据,并且$_POST
数组内的键将被设置为等于name属性的值。形式控制。
答案 3 :(得分:0)
你真的应该考虑使用你的两个提交按钮,看看这个question,并删除隐藏的输入和所有不必要的js代码