2

echo "<table class='hoverTable'  cellpadding=10 border=0 align=center style='border-collapse:collapse;width:500px'><tr  style='color:#FFF;background-color:#000; font-size:20px'><td align=center>Date</td><td align=center>Time</td><td align=center colspan=2 >Status</td></tr>";
	for($k=1;$k<=7;$k++)
	{
		if($k==1)
			$day='Monday';
		else if($k==2)
			$day='Tuesday';
		else if($k==3)
			$day='Wednesday';
		else if($k==4)
			$day='Thursday';
		else if($k==5)
			$day='Friday';
		else if($k==6)
			$day='Saturday';
		else	
			$day='Sunday';
		for($i=8; $i<17;$i++)
		{
			$time="$i:00";
			$j= $time+1;
			$endtime="$j:00";

			$sql=mysqli_query($con,"SELECT * FROM (SELECT TT_ID,TT_Subject FROM timetable WHERE TT_Day='$day' and L_ID='00106') AS TAB_1, (SELECT TT_ID,TT_Subject FROM timetable WHERE TT_Time='$time' OR TT_Endtime='$endtime') AS TAB_2 WHERE TAB_1.TT_ID = TAB_2.TT_ID ");
			if(mysqli_num_rows($sql)>0)
			{
				$rows=mysqli_fetch_assoc($sql);
				$sub=$rows['TT_Subject'];
				$runsql=mysqli_query($con,"SELECT * FROM subject WHERE S_Code='$sub'");
				{
					$result=mysqli_fetch_assoc($runsql);
					$subname=$result['S_Name'];
					echo "<tr bgcolor='#F5F6CE'><td>".$day."</td><td align=center style='font-size:15px; width:100px; color:#FF0000;'>".$time." - ".$endtime."</td><td>:</td><td align='center' style='font-size:15px; height:40px; color:#FF0000;' title='Subject: $subname'  >Not Available</td>   ";             
				}
			}
			else
				echo "<tr bgcolor='#F5F6CE'><td>".$day."</td><td align=center style='font-size:15px; width:100px; color: #0000FF;'>".$time." - ".$endtime."</td><td style='width:10px;'>:</td><td align='center' style='font-size:15px; height:40px;'><a href='add_timetable.php'>Available</a></td>";      
		}
		echo "</tr>";
	}

ループを使用してデータベースにデータを表示したい。データの表示には成功しましたが、インターフェイスは必要ありません (色のあるテーブル)。下の画像のように表を表示する方法を教えてください。

<?php
	echo "<table class='hoverTable'  cellpadding=10 border=0 align=center style='border-collapse:collapse;width:500px'><tr  style='color:#FFF;background-color:#000; font-size:20px'><td align=center>Date</td><td align=center>Time</td></tr>";
	for($k=1;$k<=7;$k++)
	{
		if($k==1)
			$day='Monday';
		else if($k==2)
			$day='Tuesday';
		else if($k==3)
			$day='Wednesday';
		else if($k==4)
			$day='Thursday';
		else if($k==5)
			$day='Friday';
		else if($k==6)
			$day='Saturday';
		else	
			$day='Sunday';
		

		for($i=8; $i<17;$i++)
		{
			$time="$i:00";
			$j= $time+1;
			$endtime="$j:00";
			echo "<tr bgcolor='#F5F6CE'><td>".$day."</td><td align=center style='font-size:15px; width:100px; color: #0000FF;'>".$time." - ".$endtime."</td></tr>";      
		}
	
	}
	
?>
ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

4

3 に答える 3

2

もちろん、物事にアプローチする方法はたくさんあります。ここに1つあります:

<?php

// SET UP TABLE STRUCTURE
$days = array(
    'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'
);
$daytimes = array(
    array('08:00:00', '09:00:00'), array('09:00:00', '10:00:00')
    , array('10:00:00', '11:00:00'), array('11:00:00', '12:00:00')
    , array('12:00:00', '13:00:00'), array('13:00:00', '14:00:00')
    , array('14:00:00', '15:00:00'), array('15:00:00', '16:00:00')
    , array('16:00:00', '17:00:00'), array('17:00:00', '18:00:00')
);

// SET UP SCHEDULE    
$schedule = array();

// get data for schedule
$sql=mysqli_query($con,"SELECT TT_ID,TT_Subject, TT_Day, TT_Start, TT_Endtime FROM timetable WHERE L_ID='00106'");
if(mysqli_num_rows($sql)>0)
{
  while ($row=mysqli_fetch_assoc($sql)) {
    foreach ( $daytimes as $times ) {
      if ( $row['TT_Start'] == $times[0]
          || $row['TT_Endtime'] == $times[1]
          || ($row['TT_Start'] > $times[0] && $times[1] < $row['TT_Endtime'] )
      ) {
        $schedule["{$times[0]}-{$times[1]}"][$row['TT_Day']][] = $row['TT_Subject'];
      }
    }
  }
}

// DISPLAY SCHEDULE, headers first
echo <<<EOT

<table border="1">
    <tr>
        <td align="center">Time</td><td align="center">Monday</td><td align="center">Tuesday</td><td align="center">Wednesday</td><td align="center">Thursday</td><td align="center">Friday</td><td align="center">Saturday</td><td align="center">Sunday</td>
    </tr>

EOT;

// roll through hours
foreach ( $daytimes as $times ) {
    $timeslot = "{$times[0]}-{$times[1]}";
    echo "<tr><td>$timeslot</td>";

    // roll through days
    foreach ( $days as $day ) {
        echo '<td>';
        // check for subjects in this slot
        if ( isset($schedule[$timeslot][$day]) ) {
            // and display each
            foreach ( $schedule[$timeslot][$day] as $subject ) {
                echo "$subject<br>";
            }
        }
        echo '</td>';
    }
    echo '</tr>';
}
echo '</table>';

?>

ここで最初に行うことは、70 の複雑なクエリではなく、1 つの単純な db クエリを作成することです。次に、db セットを取得してロールスルーし、表示に一致するスケジュールを作成します。

次に、テーブルを表示し、最初に 1 時間ごとのスケジュールをロールし、次に 1 時間ごとに 1 日ごとにロールします。これにより、スケジュール内の各スロットにアクセスするために必要な情報が提供されます。

このアプローチでは、各スロットに複数の科目があり、科目が何時間にもわたることもできます。

これは、別の表または休止期間の追加の被験者情報を考慮していません。

于 2015-07-26T14:15:50.400 に答える
0

問題を解決しました。

<?php
echo "<table class='hoverTable'  cellpadding=10 border=1 align=center style='border-collapse:collapse;width:auto'>";
echo "<tr><td width=50px>Time</td><td>Monday</td><td>Tuesday</td><td>Wednesday</td><td>Thursday</td><td>Friday</td><td>Saturday</td><td>Sunday</td></tr>";      
for($i=8; $i<18;$i++)
{
    echo "<tr>";
    $time="$i:00";
    $j= $time+1;
    $endtime="$j:00";
    echo "<td align=center style='font-size:15px; color:#FF0000;'>".$time." - ".$endtime."</td>";

    if($time=="13:00")
    {
        echo "<td width=80px align='center' style='font-size:15px; height:40px; color:#FF0000;'>Break </td>";
    }
    else
    {
        for($k=1;$k<=7;$k++)
        {
            if($k==1)
                $day='Monday';
            else if($k==2)
                $day='Tuesday';
            else if($k==3)
                $day='Wednesday';
            else if($k==4)
                $day='Thursday';
            else if($k==5)
                $day='Friday';
            else if($k==6)
                $day='Saturday';
            else    
                $day='Sunday';

            echo "<td width=80px align='center' style='font-size:15px; height:40px; color:#FF0000;' >Available</td>";
        }
    }
    echo "</tr>";
}
?>
于 2015-07-26T14:27:52.007 に答える