2014-02-04 4 views
0

Прежде чем я закричаю, я не являюсь php-кодером, и я искал много разных вариантов, чтобы попытаться понять это без везения здесь и в сети. Я видел некоторые вещи, но просто не имею достаточного понимания для применения с моим ограниченным пониманием. PHP-код был разработан кем-то, кто исчез, поэтому не поддерживает, и у меня есть одна небольшая ошибка, которую мне нужно попробовать и очистить, и почему парень html/css даже пытается понять это без большой удачи. Так что цените групповую помощь и терпение, а также, если это возможно, конкретность..mktime и .strftime help, возвращающий неправильный день недели

Проблема: Код php возвращает неправильный день недели в отчете о статистике, которое генерирует программное обеспечение. Поэтому, когда вы запускаете страницу статистики, и она запрашивает DB, она возвращает значение, но отображается неправильный ярлык.

В моем тестовом примере у меня есть данные только в четверг месяца, и когда я запускаю отчет, он отображается как данные на воскресенье.

Вот что я предполагаю, это два раздела кода из моего исследования, а не публикация всего файла php. Думаю, по крайней мере, я думаю, что я сузил раздел кода ... небольшие победы.

код, используемый, чтобы получить первый день месяца (который я видел там и сравнены и выглядит как это правильно):

function get_first_day($day_number=1, $month=false, $year=false) 
{ 
    $month = ($month === false) ? strftime("%m"): $month; 
    $year = ($year === false) ? strftime("%Y"): $year; 

    $first_day = 1 + ((7+$day_number - strftime("%w", mktime(0,0,0,$month, 1, $year)))%7); 

    return mktime(0,0,0,$month, $first_day, $year); 
} 

Прежде чем я продолжу, я также попытался установить $ day_number = 1 для разных значений 0-6, но, похоже, не имеет никакого эффекта. Я прочитал несколько сообщений о том, что это значение было проблемой, но для меня это не имело никакого значения. Я подумал, что, возможно, «сеанс» вызвал проблему, пытаясь узнать о них, поэтому я попытался выйти из системы и снова войти в ясный кеш, а также изменить браузеры после изменения значения, но это ни к чему не привело.

Код, я думаю, вы сказали бы, что называет это ??? чтобы сгенерировать отчет о выходе, который не является правильным является:

<table id="graph_weekday" class="data" style="display:none" cellpadding="0" cellspacing="0" width="100%"> 
     <caption><?php echo _occupancy_per_week."/"._days;?></caption> 
     <thead> 
      <tr> 
       <td class="no_input">&nbsp;</td> 
       <?php 
       foreach ($label_wk as $value) { 
        echo "<th>".strftime("%A", get_first_day($value, $_SESSION['statistic_month'], $_SESSION['selectedDate_year']))."</th>"; 
       } 
       ?> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
       <th><?php echo _days;?></th> 
       <?php 
       foreach ($data_wk as $value) { 
        echo "<td>".$value."</td>"; 
       } 
       ?> 
      </tr> 
     </tbody> 
    </table> 
        } 
        ?> 

Так вещи, кажется, работает, чтобы вытащить данные, но ярлык не так. Хотя установка значения для $ day_number = для чего-то другого, похоже, не работает.

Есть что-то не так с значением $. который повторяется, и мне нужно применить get_first_day к значению?

обновление: Попытка копаться в этом, но по-прежнему нуждаются в помощи, я нашел это в коде, который я думаю, также relivent (возможно)

// Bar Plot Guest by weekday/month 
$data_wk = array(); 
$label_wk = array(); 

    $statistic = querySQL('statistic_weekday'); 

    foreach ($statistic as $key => $value) { 
     foreach($value as $paxsum){ 
      $label_wk[] = $key; 
      $data_wk[] = $paxsum; 
     } 
    } 

Спасибо за любую помощь.

+0

Похоже, что 'get_first_day' должен возвращать первый _weekday_ данного месяца? Тогда вы получаете воскресенье от этого, может быть, просто вопрос часового пояса - потому что понедельник в определенные часы времени, конечно, в воскресенье в какой-то другой. Итак, перейдите к настройкам часового пояса вашего сервера/PHP. – CBroe

+0

Хотелось бы, чтобы это было так просто. Настройка часового пояса правильна для глобального сервера php.ini, а теперь удача [link] stackoverflow.com/questions/3682636/... который использует похожий код, и я проверил свой код по сравнению с ним, так что предполагая, что это что-то во второй части, но не уверен. - @CBroe – gman

+0

Какие данные вы подаете функции как первый параметр ('$ value' в вашем цикле)? – CBroe

ответ

0

Хорошо, я думаю, что у меня оно есть. Я менял значение $ day_number = 1 на другой номер. Я не менял $ first_day = 1. Когда я изменил $ first_day = 5, это сработало. Кажется ли это, что это правильно или может вызвать другие проблемы?

function get_first_day($day_number=1, $month=false, $year=false) 
    { 
    $month = ($month === false) ? strftime("%m"): $month; 
    $year = ($year === false) ? strftime("%Y"): $year; 

    $first_day = 5 + ((7+$day_number - strftime("%w", mktime(0,0,0,$month, 1, $year)))%7); 

    return mktime(0,0,0,$month, $first_day, $year); 
    }