如何在下拉列表和按钮可点击的数据库中查询数据?

时间:2015-02-27 21:00:51

标签: javascript php jquery mysql

我通过查询显示了4个按钮:

 <?php
                    $sql = DB::getInstance()->get('modules', array('username', '=', $user->data()->username));
                    if (!$sql->count()) {
                        echo 'No data';
                    } else {
                        foreach ($sql->results() as $sql) {
                            ?>
                            <p><button class=" btn btn-danger btn-lg btn-block" id="test1"> <?php echo $sql->name; ?></button></p>

                            <?php
                        }
                    }
                    ?>

这将从查询中输出四个按钮(属于登录用户的模块),但问题是四个按钮中只有一个按钮是可点击的并显示下一页。下面的js获取按钮的ID并重定向到下一页:

<script>
        $(document).ready(function () {
            $("#test1").click(function () {
                window.location = "module-options.php?name=" + $("#test1").text();
            });
        });
    </script>

当我点击除第一个按钮以外的其他按钮时,没有任何反应。它们都意味着重定向到与第一页相同的页面。问题是如何使其他按钮可点击。我希望我能说清楚。

1 个答案:

答案 0 :(得分:2)

首先,您需要将SELECT标记放在foreach循环之外。您可以将循环语句更改为以下内容:

if (!$sql->count()) {
    echo 'No data';
} else {
    echo '<select>';
    foreach ($sql->results() as $sql) {
        echo '<option value="module">' . $sql->name . '</option>';
    }
    echo '</select>';
}

请注意,所有OPTION标记的值都相同。这可能会给你带来麻烦。

关于按钮问题,您的代码只显示一个按钮。什么&#34;其他&#34;你指的是什么?假设你复制了这个:

<p><button class=" btn btn-danger btn-lg btn-block" id="test"> <?php echo $sql->name; ?></button></p>

将它放在foreach循环中,然后一个问题是你为每个按钮使用相同的ID。每个HTML元素实体只应有一个ID。如果您只需要ID,那么您可以在javascript中引用元素,那么您可以将它作为一个类并像这样引用它们:

<p><button class="test btn btn-danger btn-lg btn-block"> <?php echo $sql->name; ?></button></p>

<script>
     $(document).ready(function () {
         $(".test").click(function () {
             window.location = "#?name=" + $(this).text();
         });
     });
</script>

选择器(&#34; .test&#34;)表示具有&#34; test&#34;的任何元素。作为一个班级。 $(this).text()将输出任何元素的文本,其中包含&#34; test&#34;作为一个班级,点击了。