2012-04-02 46 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输入更改为更严格类。