如何使用PHP函数中的数组更新表数据

时间:2013-12-02 01:46:03

标签: php function

我正在构建一个简单的预算应用程序,我正在尝试根据下拉菜单过滤结果表,其中包含一年中的月份。当页面加载时,它会触发一个php函数,该函数获取当前月份的所有预算类别,并且工作正常。我想要做的是能够从下拉菜单中选择不同的月份,然后仅使用该月份的项目更新表格。

如何仅使用所选月份的数据更新表格?

这是我的AJAX调用,它将成功提醒过滤结果数组,但这就是我所知道的。我不知道如何接受AJAX响应并将其提供给表格。

function filterCategory() {
var cur_month = $('#month option:selected').attr("value");

    $.ajax({
        type: "POST",
        url: 'inc/functions.php', 
        data: {action: "filter_categories", cur_month:cur_month},
        success: function(response){
                alert(response);
                }
    });
};

这是我的PHP函数,一个用于获取收入和费用类别的初始列表:

function get_income_cat() {
require(ROOT_PATH . "inc/database.php");
$cur_month = date('m');
try {
    $results = $db->query("SELECT * FROM categories WHERE is_income = '1' AND     month ='" . $cur_month . "' ORDER BY cat_name ASC;");

} catch (Exception $e) {
    echo ("ERROR: Data could not be retrieved from the database." . $e);
    exit;
}
$income = $results->fetchall(PDO::FETCH_ASSOC);

return $income;
};

function get_expense_cat() {
require(ROOT_PATH . "inc/database.php");
$cur_month = date('m');
try {
    $results = $db->query("SELECT * FROM categories WHERE is_income = '0' AND     
month ='" . $cur_month . "' ORDER BY cat_name ASC;");

} catch (Exception $e) {
    echo ("ERROR: Data could not be retrieved from the database." . $e);
    exit;
}
$expense = $results->fetchall(PDO::FETCH_ASSOC);

return $expense;
};

这是我的主要php / html代码:

<?php foreach($income as $key=>$value) { ?>
            <tr>
              <td id="<?php echo $value['cat_id_PK']; ?>"><?php echo $value['cat_name']; ?></td>
              <td id="<?php echo $value['cat_id_PK']; ?>">&#36;<?php echo $value['cat_amount']; ?></td>
            </tr>
           <?php }; ?>

<?php foreach($expense as $key=>$value) { ?>
            <tr>
              <td id="<?php echo $value['cat_id_PK']; ?>"><?php echo $value['cat_name']; ?></td>
              <td id="<?php echo $value['cat_id_PK']; ?>">&#36;<?php echo $value['cat_amount']; ?></td>
            </tr>
           <?php }; ?>

2 个答案:

答案 0 :(得分:0)

您是否收到了提醒您的回复?我没有看到在提供的代码中调用函数filterCategory()。我假设您正在使用onchange事件来启动AJAX调用。

在成功功能中,您必须接受响应而不是提醒它,您必须将其放在文档中,如下所示:

$('#the_target').html(response);

答案 1 :(得分:0)

我建议使用像JSON这样的东西来编码AJAX请求的PHP数据(参见php:json_encode。然后它就变成了一个相当简单的操作。你可以在{{3}看到这个概念的基础。虽然我甚至不打算假装我在那里使用任何最佳实践 - 但这只是一个非常粗略的草图。

$('#load').click(function() {
    $.get('http://examples.joeysmith.com/gistfile3.txt', 
        function(data) {
            var table = $('#table tr:last');
            table.html('');
            console.log(table);
            var json = JSON.parse(data);
            for(var recType in json) {

                for(var rec in json[recType]) {
                    td = json[recType][rec];
                    table.after('<tr>'
                               +'<td id="'+td.cat_id_PK+'">'+td.cat_name+'</td>'
                               +'<td>'+td.cat_amount+'</td>'
                               +'</tr>');
                }
            }
        }
    )
});