0

数日前にサーバーがクラッシュし、サーバーが利用可能になった後、カレンダーに間違ったデータが表示され始めました。現在の月と次の 5 か月 (合計で半年) を表示する必要がありました。サーバーデータは正しいです。カレンダーの何が問題なのですか?mysql サーバーの時間によって、カレンダーに間違ったデータが表示されることがありますか?

    if (!isset($_MONTH))
    $_MONTH = 6;

     if (isset($_POST['subscribe_month']))
    $_MONTH = $class->_dig($_POST['subscribe_month']);

    $sql = mysql_query("SELECT d.header, d.id FROM " . $class->_cfg['pfx'] . "workshops as w
    LEFT JOIN " . $class->_cfg['pfx'] . "workshops_date as wd ON wd.cid=w.id
    LEFT JOIN " . $class->_cfg['pfx'] . "dictionary as d ON d.id=wd.city
    WHERE w.public='1' and wd.public='1' and wd.date_end>='" . date("Y-m-d") . "' a

nd wd.predprosomtr='0' " . $where . " ORDER BY d.rang");
$CityList = array();
while ($_sql = mysql_fetch_assoc($sql)) {
    $CityList[$_sql['id']] = $_sql['header'];
}

if ($Fcity && $Fcity != 0)
    $where.=" and d.id=" . $Fcity . "";
elseif ($_POST['city'] && $class->_dig($_POST['city']) > 0)
    $where.=" and d.id=" . $class->_dig($_POST['city']) . "";

if ($CitySearch != 0)
    $where.=" and wd.city=" . $CitySearch . " ";
$sql = mysql_query("SELECT w.header, w.direction, w.subheader, wd.colsmonth, wd.is_new, wd.public_date_finish, wd.p_date_finish, w.aliaslink, wd.aliaslink as wd_aliaslink, w.direction, wd.city, wd.date_start, d.header as city_name, wd.date_end, wd.cid, wd.id as wd_id, w.id as w_id FROM " . $class->_cfg['pfx'] . "workshops as w
LEFT JOIN " . $class->_cfg['pfx'] . "workshops_date as wd ON wd.cid=w.id
LEFT JOIN " . $class->_cfg['pfx'] . "dictionary as d ON d.id=wd.city
WHERE w.public='1' and wd.public='1' and wd.date_end>='" . date("Y-m-d") . "' and w.direction<>'' and wd.predprosomtr='0' " . $where . " ORDER BY wd.date_start, wd.city");
//$output.=$where;
$month = 12;
$year = date("Y");

while ($_sql = mysql_fetch_assoc($sql)) {
    $view = true;

    if ($_sql['public_date_finish'] == '1' && $_sql['p_date_finish'] < date("Y-m-d"))
        $view = false;

    if ($view) {
        $arWorkshops[$_sql['w_id']] = $_sql;
        if (!isset($arWorkshopsCity[$_sql['cid']][$_sql['city']]) && $_sql['city'] > 0)
            $arWorkshopsCity[$_sql['cid']][$_sql['city']] = $_sql['city'];

        if (isset($arWorkshopsDate[$_sql['cid']]['count']))
            $arWorkshopsDate[$_sql['cid']]['count'] = $arWorkshopsDate[$_sql['cid']]['count'] + 1;
        else
            $arWorkshopsDate[$_sql['cid']]['count'] = 1;

        $direct = explode('#', $_sql['direction']);
        for ($i = 0; $i < count($direct); $i++) {
            if (trim($direct[$i]) != '') {
                $arDirectionList[$direct[$i]] = $direct[$i];
            }
        }
        //$arDirectionList[$_sql['direction']]=$_sql['direction'];
        if (!isset($arWorkshopsDate[$_sql['cid']][ceil($class->convert_date($_sql['date_start'], '.', "month"))]))
            $arWorkshopsDate[$_sql['cid']][ceil($class->convert_date($_sql['date_start'], '.', "month"))] = $_sql;

        if ($class->convert_date($_sql['date_start'], '.', "month") < $month && $class->convert_date($_sql['date_start'], '.', "year") == $year) {
            $month = $class->convert_date($_sql['date_start'], '.', "month");
            $year = $class->convert_date($_sql['date_start'], '.', "year");
        }
        //if($class->convert_date($_sql['date_start'], '.', "year")==(date("Y")+1))$year=$class->convert_date($_sql['date_start'], '.', "year");
        //$output.=$_sql['header']."-".$_sql['date_start']."-".$_sql['wd_id']."<br>";
    }
}


//var_dump($arWorkshopsDate[185]);
$output.='<table class="table"><tr><th width="60">&nbsp;</th><th class="first" style="width:auto">Название</th>';
if ($_MONTH == 12)
    $w = "5%"; else
    $w = "9%";

for ($i = $month; $i < ($month + $_MONTH); $i++) {
    if ($year == date("Y"))
        $m = $i;else
        $m++;

    if ($m <= 12 && $year == date("Y")) {
        $output.='<th class="month" style="width:' . $w . '">' . $class->convert_date($m, '.', "myear") . ' <span>' . $year . '</span></th>';
    } else {
        if ($m > 12) {
            $m = 1;
            $year = $year + 1;
        }
        $output.='<th class="month" style="width:' . $w . '">' . $class->convert_date($m, '.', "myear") . ' <span>' . $year . '</span></th>';
    }
}
$output.='  <th style="width:10%">';
if ($typeblock == 'webinars')
    $output.='Формат';
else
    $output.='Город';
$output.='</th></tr>';
if (isset($arWorkshops)) {
    //foreach($arWorkshops as $LO=>$listOrd){
    foreach ($arWorkshops as $k => $value) {
        if (!$direction || $direction == 0)
            $direction2 = $class->_direction($value['direction']);
        else
            $direction2 = $direction;

        foreach ($arWorkshopsCity[$k] as $LO => $listOrd) {
            $output2 = "";
            $link_date = "";
            $pt = 0;
            $m_nth = ceil($month);
            $is_new_class = '';
            for ($i = ceil($month); $i < ($month + $_MONTH); $i++) {
                if ($m_nth > 12)
                    $m_nth = 1;

                if (isset($arWorkshopsDate[$k][$m_nth]) && $arWorkshopsDate[$k][$m_nth]['city'] == $LO) {
                    $pt++;
                    if ($pt == 1)
                        $city_name = $arWorkshopsDate[$k][$m_nth]['city_name'];
                    //if(isset($_TYPE) && $_TYPE!=0)$output.='<td class="date"><a href="/'.$typeblock.'/'.$value['aliaslink'].'/'.$arWorkshopsDate[$k][$i]['wd_aliaslink'].'/">';
                    //else

                    if (($arWorkshopsDate[$k][$m_nth]['is_new'] == '1') || ($arWorkshopsDate[$k][$m_nth + 1]['is_new'] == '1')) {
                        $is_new_class = " it_is_new";
                    } else {
                        $is_new_class = '';
                    }

                    $output2.='<td class="date"><a href="/' . $typeblock . '/' . $arDictionaryID[$direction2]['aliaslink'] . '/' . $value['aliaslink'] . '/' . $arWorkshopsDate[$k][$m_nth]['wd_aliaslink'] . '/">';
                    $link_date = '/' . $typeblock . '/' . $arDictionaryID[$direction2]['aliaslink'] . '/' . $value['aliaslink'] . '/' . $arWorkshopsDate[$k][$m_nth]['wd_aliaslink'] . '/';
                    if ($arWorkshopsDate[$k][$m_nth]['colsmonth'] > 0)
                        $output2.=$class->convert_date($arWorkshopsDate[$k][$m_nth]['date_start'], '.', "day_month") . "</a><br />" . $arWorkshopsDate[$k][$m_nth]['colsmonth'] . " мес.";
                    elseif ($arWorkshopsDate[$k][$m_nth]['date_start'] == $arWorkshopsDate[$k][$m_nth]['date_end'])
                        $output2.=$class->convert_date($arWorkshopsDate[$k][$m_nth]['date_start'], '.', "day_month") . "</a>";
                    else
                        $output2.=$class->convert_date($arWorkshopsDate[$k][$m_nth]['date_start'], '.', "day_month") . "<br />-" . $class->convert_date($arWorkshopsDate[$k][$m_nth]['date_end'], '.', "day_month") . "</a>";
                    $output2.='</td>';
                }else {
                    $output2.='<td></td>';
                }
                $m_nth++;
            }

            if (($arWorkshopsDate[$k][$m_nth]['is_new'] == '1')) {
                $is_new_class = " it_is_new";
            }

            $output.='<tr><td class="' . $is_new_class . '">&nbsp;</td><td>';
            //if(isset($_TYPE) && $_TYPE!=0)$output.='<a href="/'.$typeblock.'/'.$value['aliaslink'].'/'.$value['wd_aliaslink'].'/"><strong>'.$value['header'].'</strong></a>';
            //else
            if ($pt == 1 && $arWorkshopsDate[$k]['count'] == 1)
                $link = $link_date;
            else
                $link = '/' . $typeblock . '/' . $arDictionaryID[$direction2]['aliaslink'] . '/' . $value['aliaslink'] . '/';

            $output.='<a href="' . $link . '"><strong>' . $value['header'] . '</strong>';
            if (trim($value['subheader']) != '')
                $output.=': ' . $value['subheader'] . '';
            $output.='</a>';
            $output.='</td>';
            $output.=$output2;
            $output.=' <td class="city">' . $city_name . '</td></tr>';
        }
    }
//}
}
$output.='</table>';
?>
4

1 に答える 1

0

問題が解決しました。デフォルトでは、一部の「優れた」コーダーが12か月目からのみ表示する$month = 12; ように変更しましたが、これで問題が$month = date("m");解決しました

于 2012-08-07T09:18:29.077 に答える