0

我有一个包含新闻的数据库(日期 - 描述 - 链接 - 等等..)我想将每个日期的 CSS 更改为 DatePicker 以帮助用户知道哪个日期有新闻。

这是我的代码,我实现了一个过滤器。只需要将 CSS 更改为那些天已加载到我的数据库中。

<script>
$(function() {
$(“#datepicker”).datepicker({
changeMonth: true,
changeYear: true,

beforeShowDay: // need help here! 

onSelect: function(selectedDate) {
var mydate;
fecha = $(“#datepicker”).attr(“value”);
$.ajax({
type: “GET”,
url: “news.php”,
data: ‘datepicker=’+mydate,
success: function(data) {
$(‘#result’).html(data);
}
});
}

});
});
</script>

我想我可以用一个函数来做到这一点:beforeShowDay,但我不知道怎么做,我正在学习 jQuery,直到现在我在网上冲浪都没有运气。

也许我需要一个数组来从我的数据库中调用数据,这里是我的脚本:

<?php

$Host = "localhost";
$User = "root";
$Password = "";
$Base = "mydatabase";


$Link = mysql_connect($Host, $User, $Password) or die("error");


$db = mysql_select_db($Base) or die("Ha fallado la seleccion de la base de datos");

$return_arr = array();

$fetch = mysql_query("SELECT id, mydate, text FROM news"); 

while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
    $row_array['id'] = $row['id'];
    $row_array['mydate'] = $row['mydate'];
    $row_array['text'] = $row['text'];

    array_push($return_arr,$row_array);
}

echo json_encode($return_arr);
?>

但我现在不知道如何将它调用到我的 DatePicker 中。

希望有人可以帮助我。

4

2 回答 2

0

我不知道确切的代码,但这可能会有所帮助

首先,您应该找到将日期保存到数据库中的格式。

如果它像 30-1-1970 比你应该过滤

利用

$date=date in database;
$newdate=explode("-",$date);

$row['date']=$newdate[0];
$row['month']=$newdate[1];
$row['year']=$newdate[2];

//将此数据发送到javaacript

$.ajax({
type: “GET”,
url: “news.php”,
data: ‘datepicker=’+mydate,
success: function(data) {
var newdata=$.parseJSON[data];

//use a loop foreach (datepicker.date as date)
// if keyexixts(newdata);
// $(this).css("whatever you want");

// this is not a exact loop you should do something like that
//change all css using a ajax call
}
于 2012-09-15T06:00:34.887 回答
0

你在轨道上,但我认为在这种情况下 ajax 有点矫枉过正。您可以直接在 javascript 中定义数组(因为 json_encode 将输出一个 javascrip 数组),然后在 beforeShowDay 上使用数据来格式化每一天。您失去了动态更新的能力(您必须完全重新加载页面才能更新日期选择器数据)。然后在 beforeShowDay 上,根据文档返回一个包含 3 个值的数组

像这样的东西:

<script type="text/javascript">
var daysData = <?= json_encode($news) ?>; // here you convert your array from PHP to JS
$(function() {
    $('#your_date_picker').datepicker({
        showButtonPanel: true,
        dateFormat: 'dd/mm/yy',
        numberOfMonths: 3,
        regional: 'es',
        onSelect: function(dateText, inst) {
            var url = '<?=$url_to_go?>/';
            $(location).attr('href', url + dateText); // I use the select event to do a redirect
        },
        beforeShowDay: function(date) { // date is the day you are formatting, on a DateTime JS object
            //alert( date.getFullYear() + '-' + date.getMonth() + '-' + date.getDay() );
            var year = date.getFullYear();
            // JS returns months from 0 to 11
            var month = date.getMonth() + 1;
            var day = date.getDate();
            var daySettings = new Array(); // day settings are the settings for the DatePicker plugin to apply to that day's cell // default settings
            daySettings[0] = true; // show the day
            daySettings[1] = 'day_green'; // default css class
            daySettings[2] = ''; // default tooltip
            if(typeof daysData[year] != 'undefined'){
                if(typeof daysData[year][month] != 'undefined'){
                    if(typeof daysData[year][month][day] != 'undefined'){
                        dayData = daysData[year][month][day];
                        //alert( year + '-' + month + '-' + day + '-' + dayType);
                        if (dayData['news'] == true){
                            daySettings[1] = 'day_red';
                        }
                    }
                }
            }
            return daySettings;
        }
    });</script>

在 PHP 端,在输出 JS 之前,您必须将数组格式化为如下形式:

while($row = mysql_fetch_array($fetch, MYSQL_ASSOC)){
    $news[$row['year']][$row['month']][$row['day']] = array('news' => 1);
}

您可能也可以通过连接来做这样的事情(其中数组键是整个日期,而不是指向另一个数组的数组键)。

于 2012-09-15T06:17:18.390 回答