提交表单后未设置值

时间:2014-07-31 13:44:23

标签: javascript php

我试图将用户的签入值插入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'])

4 个答案:

答案 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代码