使用带有随机结果选择器的返回SQL数组

时间:2018-01-16 21:31:56

标签: javascript php jquery

我正在为我开发的网站编写一个新的功能插件,并坚持如何实现这样的功能。我试图将SQL查询返回到一个数组,然后我可以将其传递给PHP或JavaScript中的函数,以执行随机选项选择器,并将结果显示给用户。我试图通过点击功能来执行随机选择器。

到目前为止,我已经想出如何成功选择我的SQL查询,返回语句,以及在JavaScript中使用随机选项选择器。但是,我找不到将所有这些东西组合在一起产生结果的好方法。

我想知道是否有人知道如何做到这一点。是否更好地在PHP中执行整个程序功能或更好地将其传递给JavaScript函数并通过JS代码返回结果?

以下是我的代码的一些示例。请假设我的查询有效。我的代码中不需要显示选项。它被实现为检查查询结果。我希望在用户的真实插件中隐藏数组,并将返回的结果用于附加到HTML元素的点击功能。

<?php
    function choices() {
        $config = parse_ini_file(*database file*);
        $con = mysqli_connect(*database information*);
        if(!$con){
            exit("Please try again later."); 
        }

        $query = "SELECT * FROM *query*";
        $result = @mysqli_query($con, $query);
        $num = mysqli_num_rows($result);
        if ($num > 0) {

            echo "<p>There are currently $num restaurants.</p>\n";

            echo '<table width="60%">
            <thead>
            <tr>
                <th align="left">Restaurant Title: </th>
                <th align="left">Link: </th>
            </tr>
            </thead>
            <tbody>
        ';

            while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
                echo '<tr><td align="left">' . $row['post_title'] . '</td><td align="left">' . $row['guid'] . '</td></tr>
                ';
            }

            echo '</tbody></table>';

            mysqli_free_result($result);
        }

        else {
            echo '<p class="error">The results could not be retrieved.</p>';
        }

        mysqli_close($con);
    }

    $foo = choices();
?>

我的JS代码。

var favorites = ["choice #1, choice #2, choice #3, choice #4"];
var favorite = favorites[Math.floor(Math.random() * favorites.length)];

非常感谢您对此问题的任何意见!我知道这是一个相当冗长的问题,我很感激时间来帮助我理解它。

2 个答案:

答案 0 :(得分:1)

为什么不让你的数据库返回一个随机结果,因为这就是你所需要的一切?

SELECT * FROM tbl ORDER BY RAND() LIMIT 1

查看this post about getting random rows

答案 1 :(得分:0)

将查询结果放在PHP数组中。然后使用json_encode()将其转换为Javascript数组。然后onclick功能可以显示数组的随机元素。

$array = array();
while ($row = mysqli_fetch_assoc($result)) {
    $array[] = $row['post_title'];
}
?>
<script>
var favorites = <?php echo json_encode($array); ?>;
$("#button").click(function() {
    var favorite = favorites[Math.floor(Math.random() * favorites.length)];
    alert(favorite);
});
</script>