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>

function: でできると思いますが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

あなたは軌道に乗っていますが、この場合のajaxは少しやり過ぎだと思います。配列を文字どおりに JavaScript で定義するだけで (json_encode は javascrip 配列を出力するため)、データを使用して beforeShowDay の各日をフォーマットできます。動的更新の機能が失われます (datepicker データを更新するには、ページ全体を再読み込みする必要があります)。次に 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 に答える
0

正確なコードはわかりませんが、これは役立つかもしれません

まず、日付をデータベースに保存する形式を見つける必要があります。

1970 年 1 月 30 日のような場合は、それをフィルタリングする必要があります

使用する

$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 に答える