2013-10-29 44 views
0

GoodDay大師!點擊複選框保存到數據庫

我有一個調查網頁可以通過YES或NO(CheckBox)來回答。

我想通過單擊CheckBox來統計調查並將其保存到數據庫中。 這是我的代碼...

<label> Did you find this helpful? </label> 
    <input type="radio" name="question" value="yes">YES</input> 
    <input type="radio" name="question" value="no">NO</input> 
    <?php 
    $fieldname = $_GET['question']; 
    if($fieldname == 'YES'){ 
     mssql_query("update TBL_SURVEY SET YES = YES + 1 WHERE adddate = (SELECT max(adddate) FROM TBL_SURVEY)"); 
    }else{ 
     mssql_query("update TBL_SURVEY SET NO = NO + 1 WHERE adddate = (SELECT max(adddate) FROM TBL_SURVEY)"); 
    } 
?> 

但是我遇到錯誤 「通知:未定義指數:問題」

我應該使用JavaScript或AJAX?或者我只是混合了我的編碼?所以我的代碼有什麼問題?

如何觸發此代碼更新我的數據庫?

+0

是+1?那是什麼結果? – Loko

+0

使用AJAX,在複選框點擊 - >點擊事件更新我的DB .. – Ashish

+0

@loko添加1時checkBox YES點擊 –

回答

1

能否請您試試這個代碼未定義指數誤差過來這裏

$fieldname = $_GET['question']; 

。請將您的php代碼寫入任何函數,並將該函數調用爲ajax請求。使用POST

<input type="checkbox" class="chk" id="question" name="question" value="yes" onclick="get_checbox_data();">YES</input> 
<input type="checkbox" class="chk" id="question1" name="question1" value="no" onclick="get_checbox_data();">NO</input> 

<script type="text/javascript"> 
    function get_checbox_data(){ 

    var ans = 'no'; 
     if ($('#question').is(':checked')) { 
      ans = 'yes'; 
     }else if ($('#question1').is(':checked')) { 
       ans = 'no'; 
     } 
      $.ajax({ 
      type: "POST", 
      url: "SITE_URL/save_checkbox_data",      
      data:{'question':ans},     
      success: function (data) { 

      } 
    }); 

    }</script>  

Edited: In php file create function named save_checkbox_data like:  

function save_checkbox_data() 
{ 
    if(isset($_POST['question']) && $_POST['question'] != '') 
    { 
     $fieldname = $_POST['question']; 
     if($fieldname == 'YES'){ 
      mssql_query("update TBL_SURVEY SET YES = YES + 1 WHERE adddate = (SELECT max(adddate) FROM TBL_SURVEY)"); 
     }else{ 
      mssql_query("update TBL_SURVEY SET NO = NO + 1 WHERE adddate = (SELECT max(adddate) FROM TBL_SURVEY)"); 
     } 
    } 
} 

最佳運氣

+0

您可能還想要在之後禁用複選框或跳轉到另一頁。否則,我可以繼續點擊是。 – Waygood

+0

@jagruti在哪裏我應該插入我的mssql_query代碼?你的意思是「你的函數的URL」? –

+0

@Waygood先生我應該在哪裏插入我的mssql_query?以及如何調用這個功能! –

2

如果你改變你的代碼這樣的通知,不應該來

<?php 
if(isset($_GET['question'])) { 
    $fieldname = $_GET['question']; 
    if($fieldname == 'YES'){ 
     mssql_query("update TBL_SURVEY SET YES = YES + 1 WHERE adddate = (SELECT max(adddate) FROM TBL_SURVEY)"); 
    }else{ 
     mssql_query("update TBL_SURVEY SET NO = NO + 1 WHERE adddate = (SELECT max(adddate) FROM TBL_SURVEY)"); 
    } 
} 
?> 
+0

+1但與@Shahar一起單選按鈕的建議將是一個完整的答案。 – Waygood

+0

@Maz謝謝你,先生!然而,我應該如何創建一個觸發器,當用戶單擊複選框時,腳本更新將生成或網頁將刷新?因爲當我點擊複選框時什麼也沒有發生。 –

+0

p.s.這也不會在頁面加載時自動更新NO。即$ _GET ['question']沒有設置,所以null =='YES',這是錯誤的,所以OP的代碼做ELSE部分。 – Waygood

0

一般來說,你應該向抵押或無加入書籤的數據,而不是GET方法。 確保您的表單單選按鈕是有效的並且具有相同的名稱來對它們進行分組。

的HTML

<form id="myform" action="form_process.php" method="post"> 
    <div> 
    <label>Did you find this helpful? </label> 
    <input type="radio" name="question" value="1" />YES 
    <input type="radio" name="question" value="0" />NO 
    <input type="submit" value="Send" /> 
</div> 
</form> 



的PHP form_process.php例如:

<?php 
    // Include your database connection code 

    if (isset($_POST[question])) { 
    // If checkbox was chosen... 
     $fieldname = filter_input(INPUT_POST, $_POST['question'], FILTER_VALIDATE_BOOLEAN); 
    } 

    if ($fieldname == TRUE){ 
     // Code to run when 'YES' selected 
     mssql_query("update TBL_SURVEY SET YES = YES + 1 WHERE adddate = (SELECT max(adddate) FROM TBL_SURVEY)"); 
    } else if ($fieldname == FALSE) { 
     // Code to run when 'NO' selected 
     mssql_query("update TBL_SURVEY SET NO = NO + 1 WHERE adddate = (SELECT max(adddate) FROM TBL_SURVEY)"); 
    } else { 
     // Data was not validated correctly 
    } 
?> 


我沒有測試此代碼,但這是一般的想法。確保您測試了您的查詢並檢查數據是否正確保存(沒有提供數據庫架構,代碼或信息)。

相關問題