У меня есть таблица "метки" с полями Q1mark, Q2mark, Q3mark. , , Q50mark соответствует 50 вопросам на экзамене.
Я хочу показать, сколько марок привлекли каждый вопрос, и я хотел бы задать вопросы с трудом.
Поэтому я прохожу через 50 и помещаю пары ключ => значение в таблицу HTML:
for ($i=1; $i<=50; $i++)
{
$stmt = $db->prepare("SELECT (SUM(Q".$i."mark)) FROM marks");
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $result)
{
echo '<tr>';
foreach ($result as $key=>$value)
{
echo '<td>'; echo $key; echo '</td>';
echo '<td>'; echo $value; echo '</td>';
}
echo '</tr>';
}
}
Я получаю:
------------------------
| (SUM(Q1mark)) | 18 |
| (SUM(Q2mark)) | 20 |
| (SUM(Q3mark)) | 8 |
| (SUM(Q4mark)) | 12 |
------------------------
но я хочу:
----------------
| Q3mark | 8 |
| Q4mark | 12 |
| Q1mark | 18 |
| Q2mark | 20 |
----------------
Как я могу избавиться от отображаемого текста формулы?, И как сложно упорядочить данные?
Я закрою этот вопрос с ответом на вопрос, заданный в заголовке вопроса, который был предоставлен в комментарии, иначе он будет оставлен без ответа.
Чтобы получить текст формулы СУММ, мне нужно ВЫБРАТЬ результат AS. , , и используйте переменную $ я в имени столбца:
(SUM(Q".$i."mark)) AS Q$i
Я открою новый вопрос с более пристальным вниманием к другой проблеме, о которой я упоминал, а именно к упорядочению результатов запроса.
Один из способов сделать это - сохранить весь результат в массиве 2d.
$final_result = array();
for ($i=1; $i<=50; $i++)
{
$stmt = $db->prepare("SELECT (SUM(Q".$i."mark)) FROM marks");
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$final_result[] = $results;
}
sort($final_result);
for($i=0;$i<count($final_result);$i++){
echo $final_result[$i]["Q".$i."mark"];
}
Посмотрите на сортировку массивов в PHP https://www.w3schools.com/php/php_arrays_sort.asp
Q1, Q2 etc.
. Д. Но в функцииSUM()
вы вызываетеSUM(Q1mark)
вместоSUM(Q1)
.echo
«ИНГ HTML и переменные , как , что будет получить очень запутанным позже. Просто закройте теги PHP и откройте их снова, когда вам нужно что-то существенное. Вы можете использовать<?=
И?>
, Чтобыecho
, когда вы закрыли PHP тэги.