使用ajax在PHP中更新多个记录

时间:2014-09-05 01:35:10

标签: php jquery codeigniter

我需要以下代码的帮助。我正在尝试使用ajax调用更新数据库中的多行。我没有收到任何错误消息,也没有出现在我的浏览器日志中。我可以看到click函数正在执行但数据库查询没有被执行。有人能指出我正确的方向吗?

感谢您提供任何帮助。

更新 - 以下代码已更新为可用。我已经注释掉了原始的非工作代码。

我的输入字段:

<input type="hidden" id="Opportunity_Id" name="Opportunity_Id" value="<?php echo $opportunity->Opportunity_Id; ?>"/>
<input type="hidden" id="Class_Numbers[]" name="Class_Numbers" value="<?php echo $Class_Number; ?>"/>
<input type="text" id="Class_Dates[]" name="Class_Dates" value="<?php echo $Class_Date; ?>"/>
<input type="text" id="Start_Times[]" name="Start_Times" class="col-xs-12 col-sm-11" value="<?php echo $Preferred_Start_Time; ?>"/>
<input type="text" id="End_Times[]" name="End_Times" class="col-xs-12 col-sm-11" value="<?php echo $Preferred_End_Time; ?>"/>

我的jQuery函数:

/*$("#test").click(function() {
    $("#validation-form").ajaxForm({url: 'schedule/schedule_opportunity', type: 'post'});
    var form_data = {
        Opportunity_Id: $('#Opportunity_Id').val(),
        Class_Number: $('#Class_Numbers').val(),
        Class_Date: $('#Class_Dates').val(),
        Start_Time: $('#Start_Times').val(),
        End_Time: $('#End_Times').val(),
        ajax: '1'
    };

    $.ajax({
        url: "<?php echo site_url('schedule/schedule_opportunity'); ?>",
        type: 'POST',
        data: form_data,
        dataType: 'json',
        cache: false
    });

    return false;
})*/

$('#validation-form').submit(function(e){
    e.preventDefault();
    var form = $(this);

    $.ajax({
        url: "<?php echo site_url('schedule/update_classes'); ?>",
        method: form.prop('method'),
        data: $('#validation-form').serialize(),
        success: function(){
            alert('Success');
        }
    });

})

我的控制器:

function update_classes() {
    $Opportunity_Id = $this->input->post('Opportunity_Id');
    $Class_Numbers = $this->input->post('Class_Numbers');
    $Class_Dates = $this->input->post('Class_Dates');
    $Start_Times = $this->input->post('Start_Times');
    $End_Times = $this->input->post('End_Times');
    $this->ion_auth_model->update_classes($Opportunity_Id, $Class_Numbers, $Class_Dates, $Start_Times, $End_Times);
}

我的模特:

function update_classes($Opportunity_Id, $Class_Numbers, $Class_Dates, $Start_Times, $End_Times) {
    foreach($Class_Numbers as $key => $Class_Number) {
        //$Opportunity_Id = $Opportunity_Id[$key];
        $Class_Date = $Class_Dates[$key];
        $Start_Time = $Start_Times[$key];
        $End_Time = $End_Times[$key];

        $Class = array(
            'Class_Date' => $Class_Date,
            'Start_Time' => $Start_Time,
            'End_Time' => $End_Time
        );

        $this->db->where('Opportunity_Id', $Opportunity_Id);
        $this->db->where('Class_Number', $Class_Number);
        $this->db->update('Classes', $Class);
    }
}

1 个答案:

答案 0 :(得分:1)

好吧,我觉得是时候做一些调试了。我不清楚的是你打算如何从前端获取所有字段的多个值,但话虽如此,这些是我在此时看到的代码中的问题:

  1. Opportunity_Id: $('#Opportunity_Id').val() =&gt;我看不到ID为“Opportunity_Id”的字段。 (通过问题编辑修复)
  2. Class_Number: $('#Class_Numbers').val()等等=&gt;没有ID为“Class_Numbers”的字段。有一个“Class_Numbers []”,但在查找中不会返回。所有其他领域也一样。
  3. 您似乎认为JQuery会根据您的文本框值自动创建某种数组,并将它们传递给服务器。这不会发生。