2012-07-23 25 views
0

我知道問題標題可能會令人困惑,但這是我想要實現的:從窗體外部的PHP頁面檢索值以查詢MSSQL?

我在一張桌子內有許多物品填充UL。列表中的一個單元格包含一個複選框。這些複選框都是以數組的形式命名的「itemsDone []」我在側邊菜單(表單外部)有一個按鈕。我希望這個按鈕發送一個查詢到我的服務器來更新每個被選中的複選框的值......有可能嗎?我一直在谷歌搜索了大約一個小時,並且我可能正在尋找錯誤的關鍵字......我將不勝感激任何幫助。

謝謝你們,祝你有美好的一天!

編輯:在PHP頁面內沒有任何表單。

EDIT2:這裏是代碼我現在有:

<script type="text/javascript"> 
$(document).ready(function(){ 

    $("#saveCheckboxes").click(function(){ 
     var check = Array(); 
     var counter= 0; 

     $('.itemsDone').each(function(){ 
      if(this.checked) 
      { 
       check[counter] = this.value; 
       counter+=1; 
       console.log(check[counter]); 
      } 
     }) 

     $.post('setCommandes.php',{'check[]':check}, function(data) { 

      alert(data); 

     });  
     return false; 
    }); 
}); 
</script> 

這裏是我的setCommandes.php內容:在我的foreach語句

<?php 
    include('includes/connexion.php'); 
    $data = $_POST['check[]']; 

    $db_select=mssql_select_db("Test_CommandesWeb"); 
    foreach ($data as $checks) 
    { 
     $sql = "UPDATE Commandes SET CommandeFaite='1' WHERE CommandeId='$checks'"; 
     mssql_query($sql,$connexion); 
    } 
?> 

我得到一個錯誤(無效的論點提供)在這一刻。

+1

更改$ data = $ _POST ['check []'];到$ data = $ _POST ['check']; – user1477388 2012-07-23 20:20:00

+0

謝謝,我明白了。我也必須改變$('。itemsDone')。each(function()for $('[name = itemsDone \ \ [\\]]')。each(function()因爲我使用'name'屬性(嘆氣)。再次感謝! – 2012-07-24 13:28:01

回答

1

你應該能夠做到這一點使用jQuery.post()

我不知道你的頁面的樣子,但我猜的代碼將是這樣的:


//確保使用合適的selector

//so, do the following when .class is clicked 
$(".class").click(function(){ 

    //select the value 
    $('select.foo').val(); 

    //post the data 
    $.post('ajax/test.html', function(data) { 

     //replace the .result div with the 
     //response from the server 
     $('.result').html(data); 

    });  

}); 
1

你可以做到這一點與jQuery的,是這樣的:

$('#myButton').click(function(){ 

    // loop through all checkboxes and check if they're checked 
    $('input[type=checkbox]').each(function() { 
     if (this.checked) { 
      // do something with the checkbox if it's checked, like make ajax call 
    }); 

}); 

或者,你可以用PHP做。只需將提交按鈕放入表單中,並在提交時訪問數組itemsDone []並查看它是否被選中。

0

按鈕必須在表單中提交它們。您的表單應該包含您想要的所有輸入以及按鈕。

<form method="POST" action="/mark_items_done.php"> 

    <ul> 
    <li> 
     <input type="checkbox" name="itemsDone[]" value="1" /> 
    </li> 
    <li> 
     <input type="checkbox" name="itemsDone[]" value="2" /> 
    </li> 
    <li> 
     <input type="checkbox" name="itemsDone[]" value="3" /> 
    </li> 
    <li> 
     <input type="checkbox" name="itemsDone[]" value="4" /> 
    </li> 
    <li> 
     <input type="checkbox" name="itemsDone[]" value="5" /> 
    </li> 
    <li> 
     <input type="checkbox" name="itemsDone[]" value="6" /> 
    </li> 
    </ul> 

    <input type="submit" value="Send Items" /> 
</form> 

在你的PHP頁面上,你可以得到itemsDone

<?php 

$items_done = isset($_POST['itemsDone']) ? $_POST['itemsDone'] : null; 

if($items_done) { 
    // do something with the items 
} 

如果你不想動,你可以做這樣的事情與jQuery表單內的按鈕。

$('#submit_button').click(function() { 
    $('#my_form').submit(); 
}); 

該解決方案將重新加載頁面,但如果您需要它,實現AJAX應該不會太困難。

0

請考慮以下步驟:

1)您可以通過任何使用javascript的操作提交任何表單。 在這種情況下,您的表格中必須包含的屬性名稱或ID:

窗體本身:

<form name="formName" id="formId" method="POST" action="anyformhandler.php"> 
<input type="checkbox" value="opt1" name="itemsDone[]"> 
<input type="checkbox" value "opt2" name="itemsDone[]"> 
</form> 

外在形式發佈(例如簡單的文本):

<a href="#" onClick="document.formName.submit()">Submit the form!</a> 

<a href="#" onClick="document.forms['formId'].submit()">Submit the form!</a> 

2)在一個php文件中,處理表單獲取數據:

if ((isset($_POST["itemsDone"])) and (is_array($_POST["itemsDone"]))){ 
    // just do needed stuff. 
    } 

3)要在使用數據庫時更新每個複選框的值,您應該與數據庫交互。查詢數據庫 - >存儲數據 - >加載複選框的值。

問問你是否願意。希望這有助於;)