繁体   English   中英

每个值都显示在新的行HTML表中

[英]Each value is displayed in a new row HTML table

我目前正在一个小型网站上工作,我的同事可以看到他们的工作时间。

  • 我的“公鸡”表看起来像这样:
  • rooster_id int(2)Auto_increment主键。
  • personeel_id int(2)// personeel是指荷兰语的工作人员(我使用内部联接来获取此人的姓名)。
  • dag varchar(10)// dag表示日。
  • start varchar(5)// start是员工必须开始工作的时间。
  • eind varchar(5)// eind表示结束。
  • 基准日期
  • weeknummer int(2)// weeknummer表示周数。

显示:

---------------------------------------------------------------------
|rooster_id|personeel_id|dag      |start|eind |datum     |weeknummer|
|1         |1           |Tuesday  |12:00|21:00|2016-05-10|19        |
|1         |1           |Wednesday|15:00|21:00|2016-05-11|19        |
|1         |2           |Monday   |08:00|18:30|2016-05-10|19        |
---------------------------------------------------------------------

我的HTML代码上面的HTML代码:

include_once 'config.php';

$people = "SELECT DISTINCT * FROM personeel INNER JOIN rooster ON rooster.personeel_id = personeel.id";
$result = mysql_query($people);

我的PHP代码在表标签内:

<table cellpadding="1" width="100%" cellspacing="1" class="box-inhoud">
    <?php
    while($row = mysql_fetch_array($result)){
                    echo "<tr>";
                            echo "<td>".$row['naam']."</td>";
                            if($row['dag'] === "maandag"){
                                echo "<td class='td-midden'>".$row['start']." - ".$row['eind']."</td>";
                            } else {
                                echo "<td class='td-midden'>Vrij</td>";
                            }
                            if($row['dag'] === "dinsdag"){
                                echo "<td class='td-midden'>".$row['start']." - ".$row['eind']."</td>";
                            } else {
                                echo "<td class='td-midden'>Vrij</td>";
                            }
                            if($row['dag'] === "woensdag"){
                                echo "<td class='td-midden'>".$row['start']." - ".$row['eind']."</td>";
                            } else {
                                echo "<td class='td-midden'>Vrij</td>";
                            }
                            if($row['dag'] === "donderdag"){
                                echo "<td class='td-midden'>".$row['start']." - ".$row['eind']."</td>";
                            } else {
                                echo "<td class='td-midden'>Vrij</td>";
                            }
                            if($row['dag'] === "vrijdag"){
                                echo "<td class='td-midden'>".$row['start']." - ".$row['eind']."</td>";
                            } else {
                                echo "<td class='td-midden'>Vrij</td>";
                            }
                            if($row['dag'] === "zaterdag"){
                                echo "<td class='td-midden'>".$row['start']." - ".$row['eind']."</td>";
                            } else {
                                echo "<td class='td-midden'>Vrij</td>";
                            }
                            if($row['dag'] === "zondag"){
                                if($row['start'] === "00:00:00"){
                                    echo "<td class='td-midden'>Feestdag</td>";
                                } else {
                                    echo "<td class='td-midden'>".$row['start']." - ".$row['eind']."</td>";
                                }
                            } else {
                                echo "<td class='td-midden'>Vrij</td>";
                            }
                        echo "</tr>";
                    }
?>
</table>

这会显示如下数据:

------------------------------------------------------
|Employee's|Monday       |Tuesday      |Wednesday    |
|Tom       |Vrij         |12:00 - 21:00|Vrij         |
|Tom       |Vrij         |Vrij         |15:00 - 21:00|
|Jack      |08:00 - 18:30|Vrij         |Vrij         |
------------------------------------------------------

它还显示周四,周五,周六,周日,但我不想在stackoverflow上写下所有的日子,因为那些将有“vrij”作为值。

但问题是,我希望这样:

------------------------------------------------------
|Employee's|Monday       |Tuesday      |Wednesday    |
|Tom       |Vrij         |12:00 - 21:00|15:00 - 21:00|
|Jack      |08:00 - 18:30|Vrij         |Vrij         |
------------------------------------------------------

因此,每个员工只有1行,其中列出了所有时间。

我是这个网站的新手,所以我希望我解释好一切,所以你们可以轻松帮助我。

是的,我知道,我正在使用MySQL,因为我想保持简单,我从未使用过MySQLi和PDO。

这里我们举个例子:

<?php
    $con = mysqli_connect('localhost', 'root', '', 'test') or die(mysqli_error($con));
    $query = "SELECT * FROM personeel INNER JOIN rooster ON rooster.personeel_id = personeel.id";
    $result = mysqli_query($con, $query) or die(mysqli_error($con));

    if (mysqli_num_rows($result) > 0) {
        $arr = array();
        $nam = array();
        $day = array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');
        while ($row = mysqli_fetch_assoc($result)) {
            $nam[$row['id']] = $row['naam'];
            $arr[$row['id']][$row['dag']] = $row['start'] . ' - ' . $row['eind'];
        }
        echo '<table border="1">';
            echo '<tr>';
                echo '<td>Employees</td>';
                foreach($day as $d){
                    echo '<td>'.$d.'</td>';
                }
            echo '</tr>';
            foreach ($nam as $k=>$n){
                echo '<tr>';
                    echo '<td>'.$n.'</td>';
                    foreach ($day as $d){
                        if(isset($arr[$k][$d])){
                            echo '<td>'.$arr[$k][$d].'</td>';
                        }else{
                            echo '<td>Virj</td>';
                        }
                    }
                echo '</tr>';
            }
        echo '</table>';
    }
?>

输出是:

在此输入图像描述

一些细节:

$nam数组将所有从personeel获取的名称与其id关系一起存储。

Array
(
    [1] => Tom
    [2] => Jack
)

$arr是主数组,它包含personeel id和他的数据之间的关系:

Array
(
    [1] => Array
        (
            [Tuesday] => 12:00 - 21:00
            [Wednesday] => 15:00 - 21:00
        )

    [2] => Array
        (
            [Monday] => 08:00 - 18:30
        )

)

$day是带有工作日的静态数组。

行走槽$nam$arr数组为您提供所需的表,没有任何重复。 另外,提供的解决方案使用mysqli_*函数,因此您可以看到如何使用它们。

希望这能帮助您解决问题。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM