2017-02-08 8 views
2

週5時間、週5日、週5時間、教師5時間、クラス5時間の学生タイムテーブルを作成したいと思います。私はすべてを完了しましたが、私が直面している問題は、特定の1日(月曜日はクラスがないものとします)にデータが挿入されておらず、火曜日のデータを挿入している場合です。その後、火曜日のデータが月曜日に表示されます。ここで PHPでタイムテーブルを作成するには

は、一部の画像です:

出力時刻表(ここではクラス・フィールドの時間は2 pm-3pmある日は木曜日です。しかし、それは金曜日に、10 am-11amに表示されています。)

マイ時刻表データベーステーブル

私は何行には存在しない場合に表示したいです1日のためにserted。その日のデータは、フロントエンドタイムテーブルに「No Class」と表示されます。 ここで私は私のロジックを配置しています:

<body> 
    <?php include 'sidenav.php';?> 
    <article> 
     <table border="2" style= "background-color: #84ed86; color: #761a9b; margin: 0 auto;" > 
       <tr> 
       <th><b>TIME</b></th> 
       <th><b>Monday</b></th> 
       <th><b>Tuesday</b></th> 
       <th><b>Wednesday</b></th> 
       <th><b>Thursday</b></th> 
       <th><b>Friday</b></th> 
       </tr> 
      <tbody> 
       <h1>Class Wise Time Table</h1> 
       <?php 
        error_reporting(1); 
        session_start(); 
        if ((isset($_SESSION['login'])) && (isset($_REQUEST['cls']))) { 
         $classname = $_REQUEST['cls']; 
         $conn = mysqli_connect("localhost", "root", "", "finaltask"); 
         $sql = "select DISTINCT (time) as time from time_table where classname = "."'$classname'"; 
         $rest = mysqli_query($conn, $sql); 
         while($t = mysqli_fetch_assoc($rest)){ 
         $sql = "select * from time_table where classname = "."'$classname'". " AND time = '".$t['time']."'"; 
         //print_r($sql);exit; 
         $res = mysqli_query($conn, $sql); 
         while($row = mysqli_fetch_assoc($res)){ 
          //echo '<pre>'; print_r ($row); 
          if(($row['day']=='Monday')&&($row['time']==$t['time'])){ 
           echo"<tr> <td>{$row['time']}</td>"; 
           if(($row['subject']==' ')&&($row['teacher']== ' ')){ 
            echo "<td>No Class</td>";//die(''); 
           }else{ 
            echo "<td>".$row['subject']."<br>".$row['teacher']."</td>"; 
           } 
          } 
          if(($row['day']=='Tuesday')&&($row['time'])){ 
           if(($row['subject']=='')&&($row['teacher']=='')){ 
           echo "<td>No Class</td>"; 
           }else{ 
            echo "<td>".$row['subject']."<br>".$row['teacher']."</td>"; 
           } 
          } 
          if(($row['day']=='Wednesday')&&($row['time'])){ 
           if(($row['subject']=='')&&($row['teacher']=='')){ 
           echo "<td>No Class</td>"; 
           }else{ 
            echo "<td>".$row['subject']."<br>".$row['teacher']."</td>"; 
           } 
          } 
          if(($row['day']=='Thurshday')&&($row['time'])){ 
           if(($row['subject']=='')&&($row['teacher']=='')){ 
           echo "<td>No Class</td>"; 
           }else{ 
            echo "<td>".$row['subject']."<br>".$row['teacher']."</td>"; 
           } 
          } 
          if(($row['day']=='Friday')&&($row['time'])){ 
           if(($row['subject']=='')&&($row['teacher']=='')){ 
           echo "<td>No Class</td>"; 
           }else{ 
            echo "<td>".$row['subject']."<br>".$row['teacher']."</td></tr>"; 
           } 
          } 
         } 
         } 
        }   
       ?> 
       </tbody> 
      </table> 
+0

まず我々は、第二のものは、あなたがデータベースから行を表示するには、whileループを使用している場合、データベースにデータを格納しているかわからないので、何が起こりますかあなたのデータベースから取得したデータをphpが印刷して、単純に印刷します。 mondayがチェックされていないか選択されていない場合は、他の日と一緒にデータベースにmondayの値を格納しなければなりません。データベースはまたmondayをデータに与え、その特定の日にクラスがあるかどうかを "No"ない。だから選択されていなくてもmondayを保存して、値を 'no'または' 0'にして閉じたものとして識別してください。 –

+0

ありがとうArsh Singh!応答するため。実際に私はこのポストに自分のデータベーステーブルイメージを添付しています。そのイメージでは、私はどのようにデータを保存しているのかを見ることができます。ところで、私はすべてを動的に格納しています。 –

+0

私の答えを見てください –

答えて

0

これは、あなたが行くために私の提案です。新しい配列を定義し、whileループの値を週日の名前で整理して保存し、見たい曜日の名前の別の配列を作成し、foreachループを使用すると、現在のループにある日を入力し、データがない日にNo class、データがある日にtime tableを印刷します。以下を参照してください。

<?php 
    $days_data = array(); 
    while($row = mysqli_fetch_assoc($res)){ 
     $days_data[$row['day']] == $row; 
    } 

if($days_data): 
    $week_days = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'); 
    foreach($week_days as $wday){ 
     if(!empty($days_data[$wday])){ 
      $row_data = $days_data[$wday]; // $row_data contains all of the data from that specific day time,name,teacher and etc... 
      // there is data for this day 
     } else { 
      // no data for the day currently in loop 
     } 
    } 
endif; 
+0

ありがとうございます@Arsh!このロジックは動作していますが、私は少し変更しました。私はここで私の答えを投稿しています。私の答えがあなたを助けてくれたなら –

+0

あなたは私の一日を作った後、ダニをクリックしてそれを受け入れます。 –

0

クラスワイズタイムテーブル

 <table border="2" style= "background-color: #84ed86; color: #761a9b; margin: 0 auto;" > 
       <tr> 
       <th><b>TIME</b></th> 
       <th><b>Monday</b></th> 
       <th><b>Tuesday</b></th> 
       <th><b>Wednesday</b></th> 
       <th><b>Thursday</b></th> 
       <th><b>Friday</b></th> 
       </tr> 
      <tbody> 

       <?php 
        error_reporting(1); 
        session_start(); 
        if ((isset($_SESSION['login'])) && (isset($_REQUEST['cls']))) { 
         $classname = $_REQUEST['cls']; 
         $conn = mysqli_connect("localhost", "root", "", "finaltask"); 
         $sql = "select DISTINCT (time) as time from time_table where classname = "."'$classname'"; 
         $rest = mysqli_query($conn, $sql); 
         while($t = mysqli_fetch_assoc($rest)){ 
         $sql = "select * from time_table where classname = "."'$classname'". " AND time = '".$t['time']."'"; 
         //print_r($sql);exit; 
         $res = mysqli_query($conn, $sql); 
         ?> 
         <tr> 
          <td><?php echo $t['time'] ?></td> 
         <?php 
         $week_days = array('Monday','Tuesday','Wednesday','Thurshday','Friday'); 
         $classes = array(); 
         while($row = mysqli_fetch_assoc($res)) { 
          $classes[$row['day']] = $row; 
         } 
         foreach ($week_days as $day) { 
         ?> 
          <?php if (array_key_exists($day, $classes)) { $row = $classes[$day]; ?> 
          <td><?php echo $row['subject'] . '<br />' . $row['teacher'] ?></td> 
          <?php } else { ?> 
          <td>No Class</td> 
          <?php } ?> 
         <?php  
         } 
         ?> 
         </tr> 
          <?php 
         }  
       ?> 
       </tbody> 
      </table> 
関連する問題