2016-05-05 6 views
1

現在、私の同僚が作業時間を見ることができる小さなWebサイトに取り組んでいます。 各値が新しい行のHTMLテーブルに表示されます

  • rooster_idはint(2)AUTO_INCREMENTプライマリキー:

    • マイ "オンドリ" テーブルには、次のようになります。
    • personeel_id int(2)// personeelは、オランダ語のスタッフを意味します (私は人の名前を取得するために内部結合を使用しています)。
    • dag varchar(10)// dagは日を意味します。
    • start varchar(5)// startは、従業員が の作業を開始する必要がある時刻です。
    • eind varchar(5)// eindはendを意味します。
    • データム日付
    • weeknummer int(2)// weeknummerはweeknumberを意味します。

    ディスプレイ:

    --------------------------------------------------------------------- 
    |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タグの上の私のPHPコード:

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

    また、木曜日、金曜日、土曜日、日曜日が表示されますが、値が「vrij」になるため、ここですべての日をstackoverflowに書きたくありませんでした。

    ------------------------------------------------------ 
    |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で作業したことがありません。

  • +0

    あなたは '$ arr [personeel_id] [dag] = 'start-end''のような2つのデモインアレイを作成し、この配列をループしてテーブルを構築するために、トラフdbの結果セットを歩く必要があります。 – mitkosoft

    +0

    私はそれをどのように作成するのか分かりません。私に例を教えてください。 – TripleDeal

    答えて

    0

    ここでは、全体の例を行く:

    <?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>'; 
        } 
    ?> 
    

    出力は次のとおりです。

    enter image description here

    いくつかの詳細:

    $nam配列店一緒に彼のid関係にpersoneelからのすべてのフェッチの名前。

    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_*の機能が使用されるため、それらの使用方法がわかります。

    これは、あなたの問題を解決するのに役立ちます。 :)

    +1

    ありがとうございました!これは私の問題の解決策であり、MySQLiでも作成されています:) – TripleDeal

    関連する問題