2013-07-15 80 views
4

這裏是HTML/JavaScript的:如何自動提交複選框

<form method = "post" style="display: inline;" name="thisform<?php echo $employee->id; ?>"> 
        <input type="hidden" name="user" value="<?php echo $employee->id; ?>" /> 
        <input type="hidden" name="auto" value="<?php echo $employee->stay_live; ?>" /> 
        <h3><input type="checkbox" name="stay_live" onclick="document.forms.thisform<?php echo $employee->id; ?>.submit();" <?php if ($employee->stay_live == '1') { echo "checked"; } ?> title="Click to Stay Live Every Day" />&nbsp;<?php echo $employee->name; ?> 
</form> 

這裏是PHP

<?php 
    if(isset($_POST['stay_live'])) { 
     $user=$_POST['user']; 
     $auto=$_POST['auto']; 


     if ($auto == 1) { 
      $sql = "UPDATE users SET stay_live = 0 WHERE id = '{$user}';"; 
     } 

     if ($auto != 1) { 
      $sql = "UPDATE users SET stay_live = 1 WHERE id = '{$user}';"; 
     } 

     mysqli_query($dbconnection, $sql); 
    } 
?> 

如果在表格看onclick代碼,它會自動提交表單和做PHP POST。但是,onclick只適用於checkbox未被選中。如果它被選中,屏幕會刷新,就像它做了事情一樣,但是POST永遠不會被提交。

所以總結一下;當盒子沒有被檢查並且需要設置時,所有東西都按預期工作。但是對於UNSET來說,服務器功能永遠不會被調用。任何人都能看到爲什麼

注:這是測試代碼,因此,請在SQL注入時,他們選中

+0

這可以解決的jQuery,你可以利用它? – Mollo

+0

@Mollo我有一些基本的中級知識。你會怎麼做? – KickingLettuce

+0

給馬幾分鐘,我會添加我的回答 – Mollo

回答

1

複選框值不被髮送,所以$_POST["stay_live"]沒有設置任何評論。

<?php 
if (isset($_POST["user"])) // type="hidden" will be sent regardless of checkbox 
{ 
    if (isset($_POST["stay_alive"])) echo "Checkbox checked"; 
    else echo "Checkbox not checked"; 
} 
?> 
+0

謝謝,看看我的邏輯現在到底是什麼毛病了...讓它在你的幫助下工作。 – KickingLettuce

1

使用jquery我會做以下事情:你需要使用你想要執行的函數來創建一個文件。該文件將通過郵寄方式收到或GET

要將onclick屬性只是添加的,如果你的操作變量,如果(元素選中)行動=選中---否則行動=檢查

--Jquery功能

function cBoxSubmit($employId, $action){ // call it in your onclick attribute. 
    $.post("submitFunction.php",{action: $action, employId: $employId, ...},function(data){ // Parameters: URL file, variables which will receive, call back function 
     if(data){ 
     // On Success or in your case if checked 
     // add some code if needed 
     } 
     else{ 
      // If unchecked 
      // add some code if needed 
     } 
    } 
} 

注:回聲在你的PHP文件==回報......這是你如何將數據返回到回調函數在jQuery函數

+0

嘿謝謝,我會看到有關實現這樣的東西也許 – KickingLettuce

+0

是的,這在某些情況下非常有用。我建議你閱讀Jquery中的POST調用[鏈接](http://api.jquery.com/jQuery.post/) – Mollo