1

データ駆動型 (php/mysql) の Web サイトにカレンダーを実装する必要があります。js または css の datepicker 以上が必要です。カレンダーは、mysql データベース内のイベントおよび人々と統合できる必要があります。私が読んだことによると、mysql 駆動のカレンダー用の優れたスクリプトやチュートリアルはありません。しかし、私は誰かがいくつかのアイデアを持っているかもしれないと思った.

Full Calendar と呼ばれる優れた jquery カレンダーがあるようですが、mysql 呼び出しやデータ ストレージのサポートについてはあまり提供していないようです。また、Google カレンダーが推奨されているのも見てきましたが、これは私の Web サイトでのイベントや人々との統合を非常に困難にするだろうと感じています。

このリンクのように、データ駆動型でなければならない美しいカレンダーがたくさんあるようです。

http://www.webdeveloperjuice.com/2010/03/25/19-css-html-calendars-for-your-next-web-application/

しかし、これらの優れたフロント エンドをバック エンドに接続する方法についての提案を見つけることができませんでした。

別の記事では、独自のカレンダーを作成することは、実際には時間の浪費になると述べています。しかし、他に良い代替品はないようです。

この問題にアプローチする方法についての提案をいただければ幸いです。

4

1 に答える 1

0

私はあなたが求めているものに似た機能を作りました。基本的にテーブルを使用してカレンダーを生成し、日付 (つまり 2013-06-22) で構造化されたオプションの配列を渡すことができるため、次のような配列が期待されます。 $array['2013-06-22']['data']

その後、関数をカスタマイズして、必要に応じてデータを表示できます。または関数でクエリを実行するだけです(クエリを実行できる場所を示すために、関数にコメントが必要です)..そこにはたくさんのコメントがあることも思い出しました..私は怠け者です削除する必要があるため、少しクリーンアップすることをお勧めします。

正直なところ、この機能は古いバージョンで、改善されたバージョンを持っていましたが、atm が見つからないようです。

お役に立てば幸いです:)

/**
* Display Calendar (and Optional Data structured by date)
* @author: Zubair Baig
*/
function show_calendar_old($month = '', $year = '', $dataByDate = '')
{
    $listOfDaysInWeek = array('01'=>'Sunday', '02'=>'Monday',
                                  '03'=>'Tuesday', '04'=>'Wednesday',
                                  '05'=>'Thursday', '06'=>'Friday',
                                  '07'=>'Saturday');

    $month = !empty($month) ? $month : date('m', time());
    $year = !empty($year) ? $year : date('y', time());
    $dataByDate = is_array($dataByDate) ? $dataByDate : array();

    $calendar = '<table class="calendar">'.PHP_EOL;
    //$days_in_month = days_in_month($month, $year);

    $days_headings = $listOfDaysInWeek;

    //Table Head
    $calendar.= '<thead>'.PHP_EOL;
    $calendar.= '<tr class="calendar-row">'.PHP_EOL;
    $calendar.= '<th class="calendar-day-head">';
    $calendar.= implode('</th>'.PHP_EOL.'<th class="calendar-day-head">', $days_headings);
    $calendar.= '</th>'.PHP_EOL;
    $calendar.= '</tr>'.PHP_EOL;
    $calendar.= '</thead>'.PHP_EOL;

    //Table Foot
    $calendar.= '<tfoot>'.PHP_EOL;
    $calendar.= '<tr class="calendar-row">'.PHP_EOL;
    $calendar.= '<td class="calendar-day-head">';
    $calendar.= implode('</td>'.PHP_EOL.'<td class="calendar-day-head">', $days_headings);
    $calendar.= '</td>'.PHP_EOL;
    $calendar.= '</tr>'.PHP_EOL;
    $calendar.= '</tfoot>'.PHP_EOL;

    $days_counter = 0;
    //$running_day = date('w', strtotime('now'));
    $running_day = date('w', mktime(0,0,0,$month,1,$year));
    $days_in_month = date('t', mktime(0,0,0,$month,1,$year));
    $days_in_week = 7;
    $days_in_this_week = 1;
    //var_dump( $days_in_month, $running_day );

    $dates_array = array();

    //Table Body
    $calendar.= '<tbody>'.PHP_EOL;
    /* row for week one */
    $calendar.= '<tr>'.PHP_EOL;

    /* print "blank" days until the first of the current week */
    for($x = 0; $x < $running_day; $x++)
    {
        $calendar.= '<td>&nbsp;</td>'.PHP_EOL;
        $days_in_this_week++;
    }

    /* keep going with days.... */
    for($list_day = 1; $list_day <= $days_in_month; $list_day++)
    {
        $classes = '';//reset
        if (isset($dataByDate) && is_array($dataByDate))
        {
            $runningCalDateTimeStamp = mktime(0,0,0,$month,$list_day,$year);
            $runningCalDate = date('Y-m-d', $runningCalDateTimeStamp);

            if (in_array($runningCalDate, $dataByDate))
            {
                if (date('Y-m-d', time()) > $runningCalDate)
                {
                    $classes = ' day-can-be-reserved-but-old';
                } else {
                    $classes = ' day-can-be-reserved';
                }
            } else {
                $classes = ' day-cannot-be-reserved';
            }

            if (date('Y-m-d', time()) == $runningCalDate)
            {
                $classes .= ' day-is-today';
            }
        }

        $calendar.= '<td class="calendar-day' .$classes. '">'.PHP_EOL;
            /* add in the day number */
            $calendar.= '<div class="day-number">'.$list_day.'</div>'.PHP_EOL;

            /** QUERY THE DATABASE FOR AN ENTRY FOR THIS DAY !!  IF MATCHES FOUND, PRINT THEM !! **/
            $calendar.= str_repeat('<input type="checkbox" name="selectedDates" value="' .day_with_zero($list_day). '" />'.PHP_EOL,1);

            //var_dump(in_array( date('Y-m-d', mktime(0,0,0,$month,$list_day,$year)), $plDates));
            //var_dump(date('Y-m-d',mktime(0,0,0,$month,$list_day,$year)));

            if (isset($dataByDate) && is_array($dataByDate))
            {
                if (in_array(date('Y-m-d', mktime(0,0,0,$month,$list_day,$year)), $dataByDate))
                {
                    //$calendar.= $list_day;
                }
            }
        $calendar.= '</td>'.PHP_EOL;

            if($running_day == 6)
            {
                $calendar.= '</tr>'.PHP_EOL;
                if(($days_counter + 1) != $days_in_month)
                {
                    $calendar.= '<tr class="calendar-row">'.PHP_EOL;
                }
                $running_day = -1;
                $days_in_this_week = 0;
            }

            $days_in_this_week++;
            $running_day++;
            $days_counter++;
    }

    /* finish the rest of the days in the week */
    if($days_in_this_week < 8 && $running_day != 0)
    {
        for($x = 1; $x <= (8 - $days_in_this_week); $x++)
        {
            $calendar.= '<td class="calendar-day-np">&nbsp;</td>'.PHP_EOL;
        }
    }

    //final row
    $calendar.= '</tr>'.PHP_EOL;
    $calendar.= '</tbody>'.PHP_EOL;
    $calendar.= '</table>'.PHP_EOL;
    echo $calendar;
}
于 2013-02-16T11:25:53.857 に答える