Как я могу показать этот результат MySQL в HTML-таблице?
Редактировать: эй люди, я уже использую php, я не хотел это спрашивать. Я спрашивал, как я могу отобразить 3-колонный результат MySQL в 8-колоночной HTML-таблице
--work table-- --crew table--
date | hours date | name
2013-02-03(Sun) 8 2013-02-03 john
2013-02-04(Mon) 7 2013-02-03 sam
2013-02-03 peter
2013-02-04 john
2013-02-04 sam
У меня есть эти 2 таблицы, чтобы вести учет часов, отработанных сотрудниками.
мне нужно показать эти данные в виде расписания.
Но как мне показать 8 столбцов в этой HTML-таблице ниже?
Я имею в виду, предположим, если вы запустите этот запрос:
SELECT hours, name, DAYNAME(work.date) day
FROM work
LEFT JOIN crew ON work.date = crew.date
WHERE WEEK(work.date) = 5
это покажет 3 столбца. Так как мне построить эту HTML-таблицу?
Этот результат MySQL для
hours name day
8 john Sunday
8 Sam Sunday
8 Peter Sunday
7 John Monday
7 Sam Monday
это HTML-таблица (как?)
Name Sunday Monday Tuesday..(day name can be written in html)
John 8 7 ...
Sam 8 7 ...
Peter 8 - ...
2 ответа
Изменить это....... если вы используете php
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM Persons");
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
}
mysql_close($con);
?>
Предупреждение: я не программист PHP, поэтому ниже приведен псевдокод, в лучшем случае содержащий много синтаксических ошибок (не говоря уже о пропущенной обработке ошибок или даже HTML-разметке). Я надеюсь, что в любом случае идея приходит в голову. Любой, не стесняйтесь редактировать
$result = mysql_query("query here");
// a double nested array
// $weekdays['Sunday']['Peter'] will be the hours peter working on sunday
$weekdays = [];
// a list of all persons in the table
$persons = [];
while($row = mysql_fetch_array($result))
{
$hours = $row[0];
$person = $row[1];
$weekday= $row[2];
if (!$weekdays[$person]) {
$weekdays[$person] = [ $person => $hours ];
} else {
$weekdays[$person][$weekday] = $hours;
}
if (! $person in $persons) {
$persons[] = $person;
}
}
// then unroll in two loops
for ($person in $persons) {
print '<tr><td>'.$person.'</td>'
for ($weekday in [ "Sunday", "Monday", ...]) {
print '<td>'.$weekdays[$weekday][$person].'</td>'
}
print '</tr>'
}