Результат запроса показывает нежелательный текст формулы SQL SUM в отображении PHP / HTML

0

У меня есть таблица "метки" с полями 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 |
----------------

Как я могу избавиться от отображаемого текста формулы?, И как сложно упорядочить данные?

  • 0
    Вы сказали, что ваши столбцы названы Q1, Q2 etc. . Д. Но в функции SUM() вы вызываете SUM(Q1mark) вместо SUM(Q1) .
  • 0
    echo «ИНГ HTML и переменные , как , что будет получить очень запутанным позже. Просто закройте теги PHP и откройте их снова, когда вам нужно что-то существенное. Вы можете использовать <?= И ?> , Чтобы echo , когда вы закрыли PHP тэги.
Показать ещё 3 комментария
Теги:

2 ответа

0

Я закрою этот вопрос с ответом на вопрос, заданный в заголовке вопроса, который был предоставлен в комментарии, иначе он будет оставлен без ответа.

Чтобы получить текст формулы СУММ, мне нужно ВЫБРАТЬ результат AS. , , и используйте переменную $ я в имени столбца:

(SUM(Q".$i."mark)) AS Q$i

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

0

Один из способов сделать это - сохранить весь результат в массиве 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

  • 0
    Спасибо, но я не получаю вывод. Нет ошибки, просто белый экран.
  • 0
    Пожалуйста, проверьте error_log apache и опубликуйте его здесь.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню