Javascript事件监听器触发php代码,反之亦然?

时间:2017-05-16 20:26:34

标签: javascript php mysql

我的代码:

<section class="content">
    <h2 class="heading">Milestones Navigation</h2>
    <div style="width: 100%;">

    <button style="width: 16%;" id="0-3m">0-3M</button>
    <button style="width: 16%;" id="3-6m">3-6M</button>
    <button style="width: 16%;" id="6-9m">6-9M</button>
    <button style="width: 16%;" id="9-12m">9-12M</button>
    <button style="width: 16%;" id="12-18m">12-18M</button>
    <button style="width: 16%;" id="18Mup">18M+</button>

    </div>
</section>
<?php
$query = mysqli_query($db_conn, $m);

while ($row = mysqli_fetch_array($query)) {
    $id = $row['ID'];
    $age = $row['age'];
    $cat = $row['category'];
    $title = $row['title'];
    $desc = $row['description'];
    ?>
    <section class="content">
        <h2 class="heading" style="border:none;">
            <div>
                <div style=" float:left; text-align: left; font-family: 'Yu Gothic Medium',sans-serif; border-bottom: solid thin lightgray;">
                    <small><strong><?php echo $title; ?></strong></small>
                </div>

            </div>
        </h2>
        <br><br>
        <div>
            <div style="font-family: 'Droid Sans',sans-serif; margin-top: 5%; display: inline; width: 50%;">
                <?php echo $desc; ?>
            </div>
            <div style="display: inline; text-align: right; width: 30%; float:right; font-family: 'Yu Gothic Medium',sans-serif; text-transform: capitalize">
                <small><?php echo $age .' | ' . $cat; ?></small>
            </div>
        </div>
    </section>
    <?php
}
?>

我的问题:

我希望每个按钮对应一定的年龄范围,(按0-3M按钮将仅显示年龄等于00M,01M,02M和03M的那些部分)。我不确定如何提取数据,因为我使用循环从sql数据库中提取我的节内容。我正在寻找正确的方法来做到这一点。我应该在数据库中添加一个年龄范围的附加列吗? (例如,列名是Range,然后将其拉入变量进行检查?)然后用它来触发javascript?或者我应该运行if语句来检查范围?我已经尝试过了,但我并没有真正看到我试图做的任何答案。

提前致谢!

2 个答案:

答案 0 :(得分:1)

我会建议每个部分根据其范围增加一个类。您可以在数据库中添加Range字段或使用PHP代码来确定范围 - 如下所示:

switch($row['age']) {
    case '00M':
    case '01M':
    case '02M':
    case '03M':
        $range = 'age3m';
    // ...
    // Fill in the other ranges here
    // ...
    default:
        $range = 'age18m';
}

完成此操作后,您可以在该部分添加$range作为课程。然后根据按下的按钮类使用javascript显示/隐藏。

答案 1 :(得分:1)

首先,PHP是一种在服务器上运行的脚本语言。另一方面,JavaScript是一种在客户端(浏览器)上运行的脚本语言。

当JavaScript&#34;开始工作&#34;时,PHP已经完成,信息已发送给客户端。

PHP无法在JavaScript中调用任何触发器,反之亦然。但是,JavaScript可以执行AJAX调用,可以调用PHP脚本(或Web服务),PHP可以编写/回显任何JavaScript代码(但我不推荐这种方法)。

要过滤数据,有两个解决方案。

通过所选范围进行AJAX调用。

document.getElementById('button').addEventListener('click' , function(event) {
    var id = this.id;
    /** ajax call and javascript process **/
});

或渲染所有表格并显示已选择的范围。第二个选项也将使用事件监听器。