php - 从 mysql 数据库中突出显示日期选择器中的事件

标签 php jquery mysql ajax jquery-ui

尝试使用 jquery 和 php 在日期选择器中“突出显示”我的数据库中的日期。我到处寻找可以帮助我的东西......

这是我目前正在使用的代码。 请注意,它有一个 onSelect 状态,可以单击日期并从数据库获取事件并将其打印到 div,这有效,现在我想让日期也突出显示事件..

$(document).ready(function() {
        var SelectedDates = {};
        $.getScript('eventdates.php', function(eventsdate) {
            eventsdate;
        });
        $("#kalender").datepicker({
            firstDay: 1,
            dayNamesMin: ['Sö', 'Må', 'Ti', 'On', 'To', 'Fr', 'Lö'],
            monthNames: ['Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December'],
            dateFormat: "yy-mm-dd",
            beforeShowDay: function(date) {
                var Highlight = SelectedDates[date];
                if (Highlight) {
                    return [true, "Highlighted", Highlight];
                }
                else {
                    return [true, '', ''];
                }
            },
            onSelect: function(dateText, inst) {
                var myDate = new Date(dateText);
                var newFormat = $.datepicker.formatDate('yy-mm-dd', myDate);
                $.ajax({
                    url: 'events.php',
                    type: 'POST',
                    dataType: 'json',
                    data: {selectedData: newFormat},
                    success: function(result) {
                        if (result.date === newFormat) {
                            $('#event').html(result['date'] + " " + result['event']);
                        }
                        else {
                            $('#event').html(result['none']);
                        }
                    }
                });
            }
        });

    });​

事件日期.php

<?php

include_once ('connect.php');
$sql = mysql_query("SELECT * FROM `events`");
while ($row = mysql_fetch_array($sql)) {
    echo "SelectedDates[new Date('{$row['date']}')] = new Date('{$row['date']}')<br/>";
}
?>

事件.php

<?php
include_once ('connect.php');
if (isset($_POST['selectedData'])) {
    $sql2 = mysql_query("SELECT * FROM `events` WHERE `date`='{$_POST['selectedData']}'");
    $row2 = mysql_fetch_array($sql2);
    if ($row2['date'] == $_POST['selectedData']) {
        $sql = mysql_query("SELECT * FROM `events` WHERE `date`='{$_POST['selectedData']}'");
        while ($row = mysql_fetch_array($sql)) {
            $data = array(
                "date" => $row['date'],
                "event" => utf8_encode($row['event'])
            );
            echo json_encode($data);
        }
    } else {
        $data = array(
            "none" => "Inget event denna dag!"
        );
        echo json_encode($data);
    }
}

?>

最佳答案

我解决了这个问题,并想与其他遇到此类问题的人分享我的解决方案!

jQuery 脚本

<script>
    $(document).ready(function() {
        $("#kalender").datepicker({
            firstDay: 1,
            dayNamesMin: ['Sö', 'Må', 'Ti', 'On', 'To', 'Fr', 'Lö'],
            monthNames: ['Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December'],
            dateFormat: "yy-mm-dd",
            onSelect: function(dateText, inst) {
                var myDate = new Date(dateText);
                var newFormat = $.datepicker.formatDate('yy-mm-dd', myDate);
                $.ajax({
                    url: 'events.php',
                    type: 'POST',
                    dataType: 'json',
                    data: {selectedData: newFormat},
                    success: function(result) {
                        if (result.date === newFormat) {
                            $('#event').html(result['date'] + "<br />\n" + result['event']);
                        }
                        else {
                            $('#event').html(result['none']);
                        }
                    }
                });
            }, beforeShowDay: function(date) {

                var yy = date.getFullYear(), mm = date.getMonth() + 1, dd = date.getDate();
                if (dd < 10) {
                    var dt = yy + "-" + mm + "-0" + dd;
                } else {
                    var dt = yy + "-" + mm + "-" + dd;
                }
<?php include_once ('eventdates.php') ?>
                return [true, ''];

            }
        });

    });
</script>

事件.php

<?php
include_once ('connect.php');
if (isset($_POST['selectedData'])) {
    $sql2 = mysql_query("SELECT * FROM `events` WHERE `date`='{$_POST['selectedData']}'");
    $row2 = mysql_fetch_array($sql2);
    if ($row2['date'] == $_POST['selectedData']) {
        $sql = mysql_query("SELECT * FROM `events` WHERE `date`='{$_POST['selectedData']}'");
        while ($row = mysql_fetch_array($sql)) {
            $data = array(
                "date" => $row['date'],
                "event" => utf8_encode($row['event'])
            );
            echo json_encode($data);
        }
    } else {
        $data = array(
            "none" => "Inget event denna dag!"
        );
        echo json_encode($data);
    }
}

?>

事件日期.php

<?php

include_once ('connect.php');
$sql = mysql_query("SELECT * FROM `events`");

while ($row = mysql_fetch_array($sql)) {
    echo "var selDate" . $row['event_ID'] . " = '" . $row['date'] . "';";
    echo "if (dt === selDate" . $row['event_ID'] . ") {";
    echo "return [true, 'Highlighted'];";
    echo "}";
}
?>

希望这对其他人有帮助!

关于php - 从 mysql 数据库中突出显示日期选择器中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13542733/

相关文章:

php - 如何使用 GTFS-realtime 获取日程提醒和延误?

php - 在 mysql 中编写查询时

javascript - 尝试使用 bootstrap 时出现 meteor 抛出错误

php - 计算网站拥有的数量或发布参数

php - 即使知道 SQL 是正确的,MySQLi 查询也会返回 bool(false)

php - MySQL超时后删除

jquery - 如果没有其他列,我想扩展该列以适合屏幕

javascript - 发送表单时向表单插入新元素会导致问题(空数据)

php - JQuery AJAX 请求答案但没有成功

php - 如何从 html 插入 select/option 并从 SQL 表中的 array_rand 插入变量