Я пытаюсь настроить таблицу с оценками из базы данных MODX, эти данные были введены через tv.variables в административной панели MODX.
Мой код SQL извлекает мои нужные данные с помощью:
SELECT sc.pagetitle, cv.value, t.name
FROM pphc_site_tmplvar_contentvalues cv, pphc_site_content sc, pphc_site_tmplvars t
WHERE sc.id = cv.contentid
AND cv.tmplvarid = t.id
ORDER BY cv.value * 1 DESC
Мой SQL извлекает название команды, диапазон результатов команды (игры, победы, поражения, ничьи, общее количество очков) и, если они выиграли / проиграли / сыграли вничью.
Ниже приведен скриншот того, что мне нужно (с SQL, который я могу получить в данный момент)
Мой код для работы с циклом SQL /:
//$output = $x; //get draws, losses, played, points and wins
$id = $x; //id of current page
function sort_by_value($a, $b) {
return $b["value"] - $a["value"];
}
$sql = "SELECT sc.pagetitle, cv.value, t.name
FROM pphc_site_tmplvar_contentvalues cv, pphc_site_content sc, pphc_site_tmplvars t
WHERE sc.id = cv.contentid
AND cv.tmplvarid = t.id
AND sc.id = $id
ORDER BY cv.value * 1 DESC";
$result = $modx->query($sql)->fetchAll();
usort($result, "sort_by_value");
//print_r($result);die();
$html = '';
foreach ($result as $row) {
$html .= ''. $row['value'] .'<br>';
}
return $html;
На данный момент все, что делает этот код, это получение результатов каждой команды — Отлично!
Я не могу понять, как выложить данные в виде таблицы и включить имена команд
Вернитесь к вашему SQL & перепишите запрос так, чтобы вы получили свои результаты следующим образом:
pagetitle | wins | losses | played | draws | points
Bath HC | 5 | 4 | 2 | 5 | 234
тогда вы сможете:
foreach ($result as $row) {
$html.= $modx->getChunk($rowTpl,$row);
}
return $html;
где $ rowTpl — это чанк, который вы определили в modx ~ что-то вроде:
<tr>
<td>[[+pagetitle]]</td>
<td>[[+wins]]</td>
<td>[[+losses]]</td>
<td>[[+played]]</td>
<td>[[+draws]]</td>
<td>[[+points]]</td>
</tr>
Это просто вопрос получения запроса, возвращающего данные, отформатированные более удобным способом.
Других решений пока нет …