使用复选框和AJAX添加到mysql

时间:2012-04-02 11:04:17

标签: php javascript 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表时,有一种简单的方法吗?

关心达伦

3 个答案:

答案 0 :(得分: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应该会收到一个相当易于理解的帖子请求。

答案 1 :(得分:0)

PHP没有onClick事件,你必须使用JavaScript来做类似的事情。或者做到这样你用PHP发布你的值(使用表格),那么它就有可能。

答案 2 :(得分: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选择器从'input [type = checkbox]'更改为更具限制性的内容,例如具有某个css的输入类。