Прежде чем на меня накричат, я не php-кодировщик, и я много искал разные варианты, чтобы попытаться выяснить это, но безуспешно здесь и в сети. Я видел некоторые вещи, но у меня недостаточно понимания, чтобы применить их с моим ограниченным пониманием. Код php был разработан кем-то, кто исчез, поэтому не поддерживает, и у меня есть одна небольшая ошибка, которую мне нужно попытаться исправить, и почему парень, занимающийся html/css, даже пытается понять это без особой удачи. Так что оцените помощь группы и терпение, а также конкретику, если это возможно.
Проблема: код php возвращает неправильный день недели в отчете о статистике, создаваемом программным обеспечением. Поэтому, когда вы запускаете страницу статистики и запрашиваете БД, она возвращает значение, но появляется неправильная метка дня.
В моем тестовом случае у меня есть данные только за четверг месяца, и когда я запускаю отчет, он отображается как данные за воскресенье.
Вот то, что я предполагаю, это два раздела кода из моего исследования... вместо того, чтобы публиковать весь файл 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"> </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= на что-то другое, похоже, не работает.
Что-то не так с.$value. который повторяется, и мне нужно применить get_first_day к значению?
обновление: пытаюсь разобраться в этом, но мне все еще нужна помощь. Я нашел это в коде, который, как я думаю, также переживает (возможно)
// 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;
}
}
Спасибо за любую помощь.
get_first_day
должен возвращать первый день недели данного месяца? Тогда вы получите воскресенье из него, может быть, просто вопрос часового пояса — потому что понедельник в одних часовых поясах, конечно же, воскресенье в других. Так что проверьте настройки часового пояса вашего сервера/PHP. - person CBroe   schedule 04.02.2014$value
в вашем цикле)? - person CBroe   schedule 04.02.2014