Проблемы с отображением данных с помощью внешнего и внутреннего цикла foreach - PullRequest
0 голосов
/ 24 февраля 2011

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

Я хочу создать таблицы с табличными данными. Поэтому мне нужны имена людей (в моем случае студентов) и некоторые результаты, например, «сколько часов он болел».

Я получаю данные из БД MySQL и вызываю их с помощью PHP. Это всего лишь пример, но описывает, что мне нужно:

  1. Для каждого ученика должна быть новая таблица-строка. (без проблем)
  2. На каждого ученика мне нужны часы, когда он болел.

Это должно отображаться в таблице под именем. Моя проблема в том, что часы, в которых вы болели, указаны под каждым именем. Я приведу вам пример того, как это выглядит и как это будет выглядеть:

Shall look like:
|Name    |Hours Been Sick   
|Sam      | 0                               
|Samantha | 3                               
|Sammy  | 25                            


Looks like:
|Name    |Hours Been Sick   
|Sam      | 0 3 25                  
|Samantha | 0 3 25                  
|Sammy  | 0 3 25                    

Это из-за моего первого цикла foreach. Я просто не вижу способа вывести данные другим способом.

Это мой код:


//For every student 
foreach ($someQuery as $student => $value) {
$name = ucfirst($student);
    echo "<thead><tr><td>" . $student . "</td>";
    echo "</tr></thead>";
    echo "<tbody>";
        echo "<td>";
            echo "<table>";
                echo "<tr>";
                    //for every student the hours he has been sick
                    foreach ($hoursBeenSick as $name => $value) {
                            $value = round($value, 1);
                            echo "<td>" . $value . "</td>"
                    }
[more code]
}

Ответы [ 3 ]

0 голосов
/ 24 февраля 2011

заменить

 //for every student the hours he has been sick
 foreach ($hoursBeenSick as $name => $value) {
   $value = round($value, 1);
   echo "<td>" . $value . "</td>";
 }

с

$value = round($hoursBeenSick[$student], 1);
echo "<td>" . $value . "</td>";
0 голосов
/ 24 февраля 2011

Если вы выберете clock_been_sick ​​в том же запросе, что и студенты, у вас будет хороший массив данных для печати. ​​

Не могу сказать точно, не зная, как выглядит ваш стол, но что-то вроде

SELECT student_name, hours_sick FROM students_table, sickness_table
WHERE students_table.student_id = sickness_table.student_id
0 голосов
/ 24 февраля 2011

Попробуйте заменить:

foreach ($hoursBeenSick as $name => $value) {
  $value = round($value, 1);
  echo "<td>" . $value . "</td>"
}

на:

echo "<td>" . round($hoursBeenSick[$student], 1) . "</td>"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...