2012-04-02 104 views
0

我有一些數據會顯示這樣到mysql;添加使用複選框和AJAX

foreach ($holidays as $holiday) 
      { 
       $resultTable .= "<p><a href=\"{$holiday->link}\">{$holiday->title}</a>" . "<br/>" . 
       "{$holiday->pubDate}" . "<br>" . 
       "{$holiday->description}" . "<input type=\"checkbox\" name=\"saveCB\" value=\"3\"/>" . "<br /></p>";     

      } 

有沒有簡單的方法,當點擊複選框,數據將被添加到使用AJAX的MySQL表?

問候達倫

+1

Javascript + Ajax應該可以解決你的問題 – 2012-04-02 11:10:23

回答

0

PHP沒有onclick事件,您將不得不使用JavaScript類似的東西..或使其所以你用PHP發表您的值(使用一種形式),那麼這將是可能。

+0

不,表單刷新整個頁面。你將不得不考慮使用異步數據發送的東西,像AJAX(http://en.wikipedia.org/wiki/Ajax_%28programming%29) – Bono 2012-04-02 11:12:57

2

是你需要JavaScript才能做到這一點。如果您對提交表單感到滿意,並且每次更改選擇框(即選中/取消選中)時刷新頁面,都可以非常容易地完成。如果你不能接受這個,你必須使用ajax。這將是您的最佳解決方案,並且就像ajax一樣簡單,在您的工具箱中安裝未來項目是一件好事。

這就是說,你可以給你的身形一個id屬性做到這一點,並粘貼只是你的形式下該JavaScript(及編輯等形式ID VAR):

<script type="text/javascript"> 
    var formId = "YOUR FORM ID HERE"; 
    function submitForm(){document.getElementById(formId).submit()} 
</script> 

然後將以下屬性添加到每個複選框:onchange="submitForm()"

同樣,強烈建議對這類東西使用ajax,如果你看看jQuery ajax,你會留下深刻的印象,這是多麼容易做到。

編輯:你能做些什麼來真正在現有的代碼實現這個(更換):

<form action="php-file-to-process-form.php" id="your-form-id" method="post"> 
    <?php if(count($holidays)>0): foreach($holidays as $holiday): ?> 
    <p> 
     <a href="<?php echo $holiday->link; ?>"><?php echo $holiday->title; ?></a> 
     <br> 
     <?php echo $holiday->description; ?> 
     <input type="checkbox" name="saveCB[<?php echo $holiday->id; ?>]" value="<?php echo $holiday->id; ?>"> 
    </p> 
    <?php endforeach; endif; ?> 
</form> 
<script type="text/javascript"> 
    var formId = "your-form-id"; 
    function submitForm(){document.getElementById(formId).submit()} 
</script> 

請注意我改寫了你的部分代碼。但在這種情況下,假設你的$ holiday對象有一個「id」屬性,php-file-to-process-form.php應該會收到一個相當理解的post請求。

+0

我不知道你這是什麼意思 - 希望我的回答編輯您的題?除非你對錶單或p標籤的顯示模式進行了一些css調整,否則它不會影響你的頁面顯示方式。如果您遇到渲染問題,通過css添加'margin:0; padding:0;'到您的表單標籤也可能是一個好主意。 – 2012-04-02 14:12:09

+0

你得到了我的意思謝謝,但如果我沒有度假 - > ID怎麼辦? – 2012-04-02 15:28:08

0

爲了避免使用表單提交頁面刷新,您需要使用AJAX。你沒有把你的問題標記爲使用jquery,但我強烈推薦它。這裏是你想要的一個jQuery例如:

$('input[type=checkbox]').click(function() { 
    if ($(this).is(':checked')) { 
     var name = $(this).attr('name'); 
     var value = $(this).val(); 
     $.post('/path/to/your/php/code', {name: value}, function(data){ 
      //Handle the result of your POST here with data containing whatever you echo back from PHP. 
     }); 
    } 
}); 

需要注意的是,這把相同的單擊處理程序上的所有複選框,這可能是錯誤的假設。如果你有你的窗體上的其他複選框,你不想與這個邏輯用你只需要jQuery選擇從「輸入[類型=複選框]」比如有一定的CSS輸入更改爲更嚴格類。