Помогите просуммировать Очки команд.
После таблицы результатов. Отдельной таблицей с сортировкой по сумме:
4 час ковыряния не дал результата.
<?php
$connect = mysqli_connect("localhost", "", "", "");
$connect->query("SET CHARACTER SET utf8");
$output = '';
$sql = "SELECT itemID, userName, pointsEtap, (commentDate + INTERVAL 3 HOUR) AS commentDate FROM table ORDER BY itemID ASC";
$result = mysqli_query($connect, $sql);
$output .= '
<div class="table-responsive">
<table class="table table-bordered">
<tr>
<th width="10%">Этап</th>
<th width="40%">Команда</th>
<th width="40%">Время ответа</th>
<th width="10%">Очки</th>
</tr>';
if(mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_array($result))
{
$output .= '
<tr>
<td>'.$row["itemID"].'</td>
<td>'.$row["userName"].'</td>
<td>'.$row["commentDate"].'</td>
<td>'.$row["pointsEtap"].'</td>
</tr>
';
}
$output .= '
<tr>
</tr>
';
}
else
{
$output .= '<tr>
</tr>';
}
$output .= '</table>
</div>';
echo $output;
?>
Вот, набросал на коленке один из вариантов поворота таблицы:
// Инициируем строки таблицы
$rows = array(
'itemID' => array('title' => 'Этап', 'data' => array()),
'userName' => array('title' => 'Игрок', 'data' => array()),
'commentDate' => array('title' => 'Время ответа', 'data' => array())
);
// Заполняем строки данными из выборки
while ($row = mysqli_fetch_array($result)) {
foreach ($row as $name => $value) {
if (isset($rows[$name]))
$rows[$name]['data'][] = $value;
}
}
// Выводим таблицу: первая ячейка в строке - title, последующие - data
$output = "<div><table>";
foreach ($rows as $row) {
$output .= "<tr><td>{$row['title']}</td>";
foreach ($row['data'] as $value) {
$output .= "<td>{$value}</td>";
}
$output .= "</tr>";
}
$output .= "</table></div>";
Можно еще заменить для первой строки td на th, но с этим, я полагаю, Вы и сами справитесь :)
Да, по поводу +3 часа. Конечно, лучше всего корректировать время прямо в sql-запросе. Опять таки, как вариант, можно это делать и "по ходу пьесы". Пример:
function dateTimeToUnix($dt, $dH = 0) {
list($date, $time) = explode(' ', $dt);
list($yy, $mm, $dd) = explode('-', $date);
if ($time) {
list($h, $m, $s) = explode(':', $time);
} else {
$h = $m = $s = 0;
}
return mktime($h, $m, $s, $mm, $dd, $yy) + $dH * 3600;
}
$uTime = dateTimeToUnix('2017-03-31 05:55:32', 3);
echo date('Y-m-d H:i:s', $uTime);
// будет выведено 2017-03-31 08:55:32
прибавить время +3 часа
SELECT `SomeFields`
, `DatetimeField` + INTERVAL 3 HOUR
, `OtherFields`
выдает пустое поле
Вот тест непосредственно на консоли сервера:
mysql> CREATE TABLE test (itemID INT, userName VARCHAR(16), commentDate DATETIME);
Query OK, 0 rows affected (1.01 sec)
mysql> INSERT INTO test (itemID, userName, commentDate)
-> SELECT 1, 'item1', '2017-01-01 01:01:01' UNION ALL
-> SELECT 2, 'item2', '2017-02-02 02:02:02' ;
Query OK, 2 rows affected (0.23 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> SELECT itemID, userName, commentDate, commentDate + INTERVAL 3 HOUR commentDate3h
-> FROM test
-> ORDER BY itemID ASC ;
+--------+----------+---------------------+---------------------+
| itemID | userName | commentDate | commentDate3h |
+--------+----------+---------------------+---------------------+
| 1 | item1 | 2017-01-01 01:01:01 | 2017-01-01 04:01:01 |
| 2 | item2 | 2017-02-02 02:02:02 | 2017-02-02 05:02:02 |
+--------+----------+---------------------+---------------------+
2 rows in set (0.09 sec)
Проверьте свой запрос именно так. Если получите правильные данные (а с чего им быть неправильными) - ищите ошибку в другом месте.
Ничего не выдавет. Пусто. Куда вставит функцию +3 часа я и не понял.)
<?php
$connect = mysqli_connect("localhost", "", "", "");
$connect->query("SET CHARACTER SET utf8");
$sql = "SELECT * FROM table ORDER BY itemID ASC";
$result = mysqli_query($connect, $sql);
// Инициируем строки таблицы
$rows = array(
'itemID' => array('title' => 'Этап', 'data' => array()),
'userName' => array('title' => 'Игрок', 'data' => array()),
'commentDate' => array('title' => 'Время ответа', 'data' => array())
);
// Заполняем строки данными из выборки
while ($row = mysqli_fetch_array($result)) {
foreach ($row as $name => $value) {
if (isset($rows[$name]))
$rows[$name]['data'][] = $value;
}
}
// Выводим таблицу: первая ячейка в строке - title, последующие - data
$output = "<div><table>";
foreach ($rows as $row) {
$output .= "<tr><td>{$row['title']}</td>";
foreach ($row['data'] as $value) {
$output .= "<td>{$value}</td>";
}
$output .= "</tr>";
}
$output .= "</table></div>";
?>
$sql = "SELECT itemID, userName, commentDate + INTERVAL 3 HOUR FROM table ORDER BY itemID ASC";
Все выдает, кроме commentDate - в котором пустые ячейки.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть номер телефона, который висит на сайтеЗадается он через панель управления
Собственно вот регулярное выражение которое у меня получилось:
Хотел написать универсальный каркас для веб приложений, но столкнулся с проблемой проектирования БДЗадумка в следующем: Есть категории,...
2 день пытаюсь найти решение в интернете не получается, многое что перепробовал надеюсь вы мне помочь сможете использую Xampp)