0

編集:皆さん、私はすでに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 つのテーブルがあります。
このデータをタイムシートとして表示する必要があります。

しかし、以下のこのhtmlテーブルに8列を表示するにはどうすればよいですか?

つまり、次のクエリを実行するとします。

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        -       ...
4

2 に答える 2

0

警告:私は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>'
}
于 2013-02-07T14:17:05.557 に答える
0

これを変更します.......もしあなたが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);
?>
于 2013-02-07T06:27:51.027 に答える