2013-07-15 3 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 код в форме, он будет автоматически отправить форму и do PHP POST. Однако, onclick работает только в том случае, если checkbox НЕ проверен. Если он установлен, экран обновляется, как если бы он делал что-то, но POST никогда не отправлялся.

Итак, подведем итоги; все работает так, как ожидается, когда флажок не установлен, и его необходимо установить. Но чтобы UNSET это, серверная функция никогда не вызывается. Может ли кто-нибудь понять, почему?

примечание: это тестовый код, поэтому, пожалуйста, никаких замечаний по SQL Injection

+0

Это может быть решить в JQuery, вы можете использовать его? – Mollo

+0

@Mollo У меня есть некоторые базовые знания о нем. Как бы вы это сделали? – KickingLettuce

+0

Дайте мне несколько минут, и я добавлю свой ответ – Mollo

ответ

1

значения Checkbox не отправленного, когда они бесконтрольно, поэтому $_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 Я бы сделал следующее: вам нужно создать файл с функциями, которые вы хотите выполнить. Этот файл будет получать через POST или 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

Да, это действительно полезно в некоторых случаях. Я рекомендую вам прочитать о вызовах POST в JQuery [ссылка] (http://api.jquery.com/jQuery.post/) – Mollo

Смежные вопросы