0

データベースから選択した複数の日付を選択できる登録フォームがあります。jQuery UI Datepicker を使用します。すべてが正常に機能しますが、フォームを送信すると、日付自体が次のように保存されます: "09/16/2012,08/04/2011,04/19/1994". 代わりに日付のIDを保存したいと思います。

value=""選択した日付のIDを取得して属性に入れる方法を知っている人はいますか?

<input type="text" class="datepicker" name="live[]" value="">

<script>
var dates = [<?php $i=0; while($dataDate = mysql_fetch_object($dates)) : echo ($i>0) ?  ", " : ""; echo '"'.date("n-j-Y", strtotime($dataDate->date)).'"'; $i++; endwhile;?>];
var enabledDays = dates;
function enableAllTheseDays(date) {
var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
for (i = 0; i < enabledDays.length; i++) {
    if($.inArray((m+1) + '-' + d + '-' + y,enabledDays) != -1) {
        return [true];
    }
}
return [false];
}
$('.datepicker').datepicker({
    beforeShowDay: enableAllTheseDays,
    yearRange: "1994:2012",
    changeMonth: true,
    changeYear: true
});
</script>
4

1 に答える 1

0

さて、望ましい結果を得るためのまったく新しいアプローチがここにあります。まず、日付をjsonオブジェクトに入れます。

php jsonが利用可能な場合は、SQLクエリでID、データベースからの日付を選択してください。

<?php   
while($row = mysql_fetch_object($query) ) {
    $data[] = array( "id" => $row['id'], "date" => $row['date'] );
}

echo "var dates = [" . json_encode($data) . "];";
?>

それ以外の場合は、次のようにできます。

<?php
echo "var dates = [";
while($row = mysql_fetch_object($query) ) {
    $data[] = '{"id" : "' .$row["id"] . '", "date" : "' . $row["date"] . '" }';
}
echo implode(',', $data);
echo "];";
?>

これで、次のようなjsonオブジェクトが得られました

[{"id" : "12", "date": "2012-02-01"},{"id" : "33", "date": "2012-02-03"}]

jsonオブジェクトを操作するために、関数を少し調整しました

function enableAllTheseDays(date) {
    var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
    var datestr = y + "-" + m + "-" + d;
    for (i = 0; i < dates.length; i++) {
        if( dates[i].date == datestr) {
            return [true];
        }
    }
    return [false];
}

$('.datepicker').datepicker({
    beforeShowDay: enableAllTheseDays,
    yearRange: "1994:2012",
    changeMonth: true,
    changeYear: true
});

IDの取得に戻ります

$('.datepciker').on('change',function() {
    for(var i = 0; i < dates.length; i++) {
        if( dates[i].date == $(this).val() )
        var index = dates[i].id;
    }

    $("#date_id_holder").val( index );

    });

$("#date_id_holder") には、選択した日付のIDが含まれています

于 2012-09-16T07:42:05.240 に答える