如何用PHP准备学校课程表?

时间:2014-04-24 13:02:22

标签: php mysql timetable

我是php和mysql的新手。我正在尝试在这个图像中准备php和mysql的课程时间表。

---------------------------------------
Days        9:30AM to 10:15am     10:15 AM to 11:00 AM
---------------------------------------
Monday       Tamil                 English
---------------------------------------
Tuesday      Maths
---------------------------------------
Wednesday
--------------------------------------- and so on

这是我的数据库表结构...

DROP TABLE IF EXISTS `mas_batch`;
CREATE TABLE IF NOT EXISTS `mas_batch` (
  `BatchId` int(10) NOT NULL AUTO_INCREMENT,
  `CustomerId` int(10) NOT NULL DEFAULT '0',
  `CourseId` int(10) NOT NULL DEFAULT '0',
  `BatchName` varchar(100) NOT NULL DEFAULT '0',
  `CDate` date DEFAULT NULL,
  `CTime` time DEFAULT NULL,
  `CUserId` int(10) NOT NULL DEFAULT '0',
  `MDate` date DEFAULT NULL,
  `MTime` time DEFAULT NULL,
  `MUserId` int(10) NOT NULL DEFAULT '0',
  `IsActive` int(1) DEFAULT '1',
  PRIMARY KEY (`BatchId`),
  KEY `FK_mas_batch_mas_course` (`CourseId`),
  KEY `FK_mas_batch_mas_customer` (`CustomerId`),
  CONSTRAINT `FK_mas_batch_mas_course` FOREIGN KEY (`CourseId`) REFERENCES `mas_course` (`CourseId`),
  CONSTRAINT `FK_mas_batch_mas_customer` FOREIGN KEY (`CustomerId`) REFERENCES `mas_customer` (`CustomerId`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

DELETE FROM `mas_batch`;
INSERT INTO `mas_batch` (`BatchId`, `CustomerId`, `CourseId`, `BatchName`, `CDate`, `CTime`, `CUserId`, `MDate`, `MTime`, `MUserId`, `IsActive`) VALUES
    (1, 1, 1, 'A', NULL, NULL, 0, NULL, NULL, 0, 1),
    (2, 1, 1, 'B', NULL, NULL, 0, NULL, NULL, 0, 1),
    (3, 1, 2, 'A', NULL, NULL, 0, NULL, NULL, 0, 1);

DROP TABLE IF EXISTS `mas_course`;
CREATE TABLE IF NOT EXISTS `mas_course` (
  `CourseId` int(10) NOT NULL AUTO_INCREMENT,
  `CustomerId` int(10) NOT NULL DEFAULT '0',
  `CourseName` varchar(100) NOT NULL DEFAULT '0',
  `CDate` date DEFAULT NULL,
  `CTime` time DEFAULT NULL,
  `CUserId` int(10) NOT NULL DEFAULT '0',
  `MDate` date DEFAULT NULL,
  `MTime` time DEFAULT NULL,
  `MUserId` int(10) NOT NULL DEFAULT '0',
  `IsActive` int(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`CourseId`),
  KEY `FK_mas_course_mas_customer` (`CustomerId`),
  CONSTRAINT `FK_mas_course_mas_customer` FOREIGN KEY (`CustomerId`) REFERENCES `mas_customer` (`CustomerId`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

DELETE FROM `mas_course`;
INSERT INTO `mas_course` (`CourseId`, `CustomerId`, `CourseName`, `CDate`, `CTime`, `CUserId`, `MDate`, `MTime`, `MUserId`, `IsActive`) VALUES
    (1, 1, '1st Std', '2014-03-26', NULL, 1, NULL, NULL, 0, 1),
    (2, 1, '2nd Std', NULL, NULL, 0, NULL, NULL, 0, 1),
    (3, 1, '4rd Std', NULL, NULL, 1, NULL, NULL, 0, 1),
    (5, 1, '3rd Std', '2014-04-14', '18:50:02', 1, NULL, NULL, 0, 1),
    (6, 1, '5th Std', '2014-04-14', '18:50:43', 1, NULL, NULL, 0, 1);

DROP TABLE IF EXISTS `mas_weekdays`;
CREATE TABLE IF NOT EXISTS `mas_weekdays` (
  `WeekdaysId` int(10) NOT NULL AUTO_INCREMENT,
  `Weekdays` varchar(50) NOT NULL DEFAULT '0',
  `IsActive` int(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`WeekdaysId`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;

DELETE FROM `mas_weekdays`;
INSERT INTO `mas_weekdays` (`WeekdaysId`, `Weekdays`, `IsActive`) VALUES
    (1, 'Sunday', 1),
    (2, 'Monday', 1),
    (3, 'Tuesday', 1),
    (4, 'Wednesday', 1),
    (5, 'Thursday', 1),
    (6, 'Friday', 1),
    (7, 'Saturday', 1);
/*!40000 ALTER TABLE `mas_weekdays` ENABLE KEYS */;

DROP TABLE IF EXISTS `set_academicyear`;
CREATE TABLE IF NOT EXISTS `set_academicyear` (
  `AcademicYearId` int(10) NOT NULL AUTO_INCREMENT,
  `CustomerId` int(10) NOT NULL DEFAULT '0',
  `AcademicYear` varchar(100) NOT NULL DEFAULT '0',
  `SDate` date DEFAULT NULL,
  `EDate` date DEFAULT NULL,
  `IsActive` int(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`AcademicYearId`),
  KEY `FK_set_academicyear_mas_customer` (`CustomerId`),
  CONSTRAINT `FK_set_academicyear_mas_customer` FOREIGN KEY (`CustomerId`) REFERENCES `mas_customer` (`CustomerId`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

DELETE FROM `set_academicyear`;
INSERT INTO `set_academicyear` (`AcademicYearId`, `CustomerId`, `AcademicYear`, `SDate`, `EDate`, `IsActive`) VALUES
    (1, 1, '2013-2014', '2013-03-01', '2014-03-31', 0),
    (2, 1, '2014-2015', '2014-04-01', '2015-03-31', 1);

DROP TABLE IF EXISTS `set_classtiming`;
CREATE TABLE IF NOT EXISTS `set_classtiming` (
  `ClassTimingId` int(10) NOT NULL AUTO_INCREMENT,
  `CustomerId` int(10) NOT NULL DEFAULT '0',
  `ClassTimingName` varchar(100) NOT NULL DEFAULT '0',
  `StartTime` time DEFAULT NULL,
  `EndTime` time DEFAULT NULL,
  `IsBreak` int(1) NOT NULL DEFAULT '0',
  `IsActive` int(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`ClassTimingId`),
  KEY `FK_set_classtiming_mas_customer` (`CustomerId`),
  CONSTRAINT `FK_set_classtiming_mas_customer` FOREIGN KEY (`CustomerId`) REFERENCES `mas_customer` (`CustomerId`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

DELETE FROM `set_classtiming`;
INSERT INTO `set_classtiming` (`ClassTimingId`, `CustomerId`, `ClassTimingName`, `StartTime`, `EndTime`, `IsBreak`, `IsActive`) VALUES
    (1, 1, '1', '09:30:00', '10:15:00', 0, 1),
    (2, 1, '2', '10:15:00', '11:00:00', 0, 1),
    (3, 1, 'Break', '11:00:00', '11:15:00', 1, 1),
    (4, 1, '3', '11:15:00', '12:00:00', 0, 1),
    (5, 1, '4', '12:00:00', '12:45:00', 0, 1),
    (6, 1, 'LUNCH', '12:45:00', '13:30:00', 1, 1);

DROP TABLE IF EXISTS `set_timetable`;
CREATE TABLE IF NOT EXISTS `set_timetable` (
  `TimeTableId` int(10) NOT NULL AUTO_INCREMENT,
  `CustomerId` int(10) NOT NULL DEFAULT '0',
  `AcademicYearId` int(10) NOT NULL DEFAULT '0',
  `CourseId` int(10) NOT NULL DEFAULT '0',
  `BatchId` int(10) NOT NULL DEFAULT '0',
  `WeekdaysId` int(10) NOT NULL DEFAULT '0',
  `ClassTimingId` int(10) NOT NULL DEFAULT '0',
  `SubjectId` int(10) NOT NULL DEFAULT '0',
  `IsActive` int(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`TimeTableId`),
  KEY `FK_set_timetable_mas_course` (`CourseId`),
  KEY `FK_set_timetable_mas_batch` (`BatchId`),
  KEY `FK_set_timetable_mas_customer` (`CustomerId`),
  KEY `FK_set_timetable_set_academicyear` (`AcademicYearId`),
  KEY `FK_set_timetable_set_classtiming` (`ClassTimingId`),
  KEY `FK_set_timetable_mas_subject` (`SubjectId`),
  KEY `FK_set_timetable_set_weekdays` (`WeekdaysId`),
  CONSTRAINT `FK_set_timetable_mas_batch` FOREIGN KEY (`BatchId`) REFERENCES `mas_batch` (`BatchId`),
  CONSTRAINT `FK_set_timetable_mas_course` FOREIGN KEY (`CourseId`) REFERENCES `mas_course` (`CourseId`),
  CONSTRAINT `FK_set_timetable_mas_customer` FOREIGN KEY (`CustomerId`) REFERENCES `mas_customer` (`CustomerId`),
  CONSTRAINT `FK_set_timetable_mas_subject` FOREIGN KEY (`SubjectId`) REFERENCES `mas_subject` (`SubjectId`),
  CONSTRAINT `FK_set_timetable_set_academicyear` FOREIGN KEY (`AcademicYearId`) REFERENCES `set_academicyear` (`AcademicYearId`),
  CONSTRAINT `FK_set_timetable_set_classtiming` FOREIGN KEY (`ClassTimingId`) REFERENCES `set_classtiming` (`ClassTimingId`),
  CONSTRAINT `FK_set_timetable_set_weekdays` FOREIGN KEY (`WeekdaysId`) REFERENCES `set_weekdays` (`WeekdaysId`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

DELETE FROM `set_timetable`;
INSERT INTO `set_timetable` (`TimeTableId`, `CustomerId`, `AcademicYearId`, `CourseId`, `BatchId`, `WeekdaysId`, `ClassTimingId`, `SubjectId`, `IsActive`) VALUES
    (3, 1, 1, 1, 1, 10, 1, 1, 1),
    (4, 1, 1, 1, 1, 11, 2, 2, 1),
    (5, 1, 1, 1, 1, 12, 1, 1, 1),
    (6, 1, 1, 1, 1, 13, 1, 2, 1),
    (7, 1, 1, 1, 1, 14, 2, 1, 1),
    (8, 1, 1, 1, 1, 10, 2, 2, 1);

DROP TABLE IF EXISTS `set_weekdays`;
CREATE TABLE IF NOT EXISTS `set_weekdays` (
  `WeekdaysId` int(10) NOT NULL AUTO_INCREMENT,
  `CustomerId` int(10) NOT NULL DEFAULT '0',
  `Mas_WeekdaysId` int(2) NOT NULL DEFAULT '0',
  `IsActive` int(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`WeekdaysId`),
  KEY `FK_set_weekdays_mas_customer` (`CustomerId`),
  KEY `FK_set_weekdays_mas_weekdays` (`Mas_WeekdaysId`),
  CONSTRAINT `FK_set_weekdays_mas_customer` FOREIGN KEY (`CustomerId`) REFERENCES `mas_customer` (`CustomerId`),
  CONSTRAINT `FK_set_weekdays_mas_weekdays` FOREIGN KEY (`Mas_WeekdaysId`) REFERENCES `mas_weekdays` (`WeekdaysId`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=latin1;

DELETE FROM `set_weekdays`;
INSERT INTO `set_weekdays` (`WeekdaysId`, `CustomerId`, `Mas_WeekdaysId`, `IsActive`) VALUES
    (9, 1, 1, 0),
    (10, 1, 2, 1),
    (11, 1, 3, 1),
    (12, 1, 4, 1),
    (13, 1, 5, 1),
    (14, 1, 6, 1),
    (15, 1, 7, 0);

请帮助制定课程时间表......

$CustomerId = 1;
$AcademicYearId = 1;
$CourseId = 1;
$BatchId = 1;
$sql_tt = "SELECT * from set_weekdays where IsActive=1";
$res_tt = mysql_query($sql_tt);
if(mysql_num_rows($res_tt))
{
echo '<table id="listing_items" width="auto" border="1" cellpadding="2" cellspacing="2" align="center">';
echo '<tr>';
echo '<th>Days</th>';
$sql_classtime = "select * from set_classtiming where IsActive=1";
$res_classtime = mysql_query($sql_classtime);
if(mysql_num_rows($res_classtime)>0)
{
while($row_classtt = mysql_fetch_assoc($res_classtime))
{
if($row_classtt['IsBreak'] == 0)
{
echo '<th>'.time_from_db($row_classtt['StartTime']).'<br />'.time_from_db($row_classtt['EndTime']).'</th>';
}
else
{
echo '<th>'.$row_classtt['ClassTimingName'].'</th>';
}
}
}
echo '</tr>';
while($row_tt = mysql_fetch_assoc($res_tt))
{
echo '<tr>';
echo '<th>'.column_name("Weekdays", "mas_weekdays", "WeekdaysId", $row_tt['Mas_WeekdaysId']).'</th>';
$sql_classtime1 = "select * from set_classtiming where IsActive=1 group by ClassTimingId";
$res_classtime1 = mysql_query($sql_classtime1);
if(mysql_num_rows($res_classtime1) > 0)
{
while($row_classtt1 = mysql_fetch_assoc($res_classtime1))
{
$sql_time = "select * from set_timetable where CustomerId=".$CustomerId." AND AcademicYearId=".$AcademicYearId." AND CourseId=".$CourseId." AND BatchId=".$BatchId;
$res_time = mysql_query($sql_time);
if(mysql_num_rows($res_time) > 0)
{
while($row_time = mysql_fetch_assoc($res_time))
{
if(($row_time['ClassTimingId'] == $row_classtt1['ClassTimingId']))
{
if($row_classtt1['IsBreak'] == 1)
{
echo '<td>&nbsp;</td>';
}
else
{
if(($row_time['WeekdaysId'] == $row_tt['WeekdaysId']))
{
echo '<td>'.column_name("SubjectName", "mas_subject", "SubjectId", $row_time['SubjectId']).'</td>';
}
else
{
echo '<td>&nbsp;</td>';
}
}
}
}
}
}
}
echo '</tr>';
}
echo '</table>';
}

这是我生成时间表的完整编码....上面我用数据粘贴了我的数据库。请做必要的......

提前致谢。

2 个答案:

答案 0 :(得分:2)

最后我找到了解决方案。在这里,我分享了我的编码供您参考。谢谢你的支持。

$CustomerId = 1;
        $AcademicYearId = 1;
        $CourseId = 1;
        $BatchId = 1;

        echo '<table id="listing_items" width="auto" border="1" cellpadding="2" cellspacing="2" align="center">';
        $sql_tt = "SELECT * from set_weekdays where IsActive=1";
        $res_tt = mysql_query($sql_tt);
        if(mysql_num_rows($res_tt))
        {
            echo '<tr>';
                echo '<td>DAYS</td>';
                $sql_ct = "select * from set_classtiming where IsActive=1";
                $res_ct = mysql_query($sql_ct);
                if(mysql_num_rows($res_ct) > 0)
                {
                    while($row_ct = mysql_fetch_assoc($res_ct))
                    {
                        if($row_ct['IsBreak'] == 0)
                        {
                            echo '<th>'.time_from_db($row_ct['StartTime']).'<br />'.time_from_db($row_ct['EndTime']).'</th>';
                        }
                        else
                        {
                            echo '<th>'.$row_ct['ClassTimingName'].'</th>';
                        }
                    }
                }
            echo '</tr>';
            while($row_tt = mysql_fetch_assoc($res_tt))
            {
                echo '<tr>';
                    echo '<th>'.column_name("Weekdays", "mas_weekdays", "WeekdaysId", $row_tt['Mas_WeekdaysId']).'</th>';
                    $sql_ct = "select * from set_classtiming where IsActive=1";
                    $res_ct = mysql_query($sql_ct);
                    if(mysql_num_rows($res_ct) > 0)
                    {
                        while($row_ct = mysql_fetch_assoc($res_ct))
                        {
                            //echo '<th>'.$row_ct['ClassTimingId'].', '.$row_tt['WeekdaysId'].'</th>';
                            $sql_timetable = "select * from set_timetable where ClassTimingId=".$row_ct['ClassTimingId']." AND WeekdaysId=".$row_tt['WeekdaysId']." AND IsActive=1";
                            $res_timetable = mysql_query($sql_timetable);
                            if(mysql_num_rows($res_timetable) > 0)
                            {
                                while($row_timetable = mysql_fetch_assoc($res_timetable))
                                {
                                    echo '<td>'.column_name("SubjectName", "mas_subject", "SubjectId", $row_timetable['SubjectId']).'</td>';
                                }
                            }
                            else
                            {
                                echo '<td>&nbsp;</td>';
                            }
                        }
                    }
                echo '</tr>';
            }
        }
        echo '</table>';

答案 1 :(得分:0)

 if (($row_time['WeekdaysId'] == $row_tt['WeekdaysId'])) {
                echo '<tr><td>' . column_name("SubjectName", "mas_subject", "SubjectId", $row_time['SubjectId']) . '</td></tr>';

我在您的代码中添加了表行标记。请尝试它是否正常工作。形成你所表明的。你没有把它变成一行