我的页面允许用户从 .php 脚本打开的列表中选择他们希望参加的课程列表。用户选择的选项被设置为名为 courses[] 的复选框数组。一个 Result.php,选择的选项通过 RegEx 发送,以提取课程名称和每门课程所需的时间。课程名称仅在小时数相加时输出,以显示每周所需的总小时数。
我的问题是,我已经修复了所有语法,但是当我调用我的 printf 格式时没有返回任何内容。我尝试了 var_dump($courses) 和 ($courseLine),结果显示为 NULL 和 NULL。我想我在 Registration.php 上有一个逻辑错误,但我找不到在哪里。 下面是我的 Result.php,我将包含课程列表文本文件的示例
<table><tr><th>Courses</th><th>hours per Week</th></tr>
<?php
$courses = $_GET['courses'];
$courseHoursRegEx = "/\s[0-9]{1,2}\shrs/w/";//needs work
$courseNameRegEx = "/[a-zA-Z]{3}[0-9]{4}[A-Z]{0,1}\s?/[a-zA-Z]{3,40}/";
function GetCourseHours($couseLine)
{
if(!preg_match($courseHoursRegEx, $courseLine))
{
return $courseHour;
}
$totalHours += $courseHour;
}
function GetCourseName($courseLine)
{
if(!preg_match($courseNameRegEx, $courseLine))
{
return $courseInfo;
}
}
foreach($courses as $course)
{
$theCourse = GetCourseName($course);
$theHours = GetCourseHours($course);
}
for($i = 1; $i <= $courses; ++$i)
{
printf("<tr><td>\%</td><td>\%</td></tr>", $theCourse, $theHours);
}
?>
<tr>
<th>Total Hours</th><td><?php echo $totalHours ?> </td></tr>
</table>
这是我的起始页面,因此您知道使用了哪些值(由于脚本的长度,我没有包括验证函数。)
</table>
<?php
$courseFile = fopen("CourseList.txt", "r");
$courseHoursRegEx = "/\s[0-9]{1,2}\shrs/w/";
$courseNameRegEx = "/[a-zA-Z]{3}[0-9]{4}[A-Z]{0,1}\s?/[a-zA-Z]{3,40}/";
while(!feof($courseFile))
{
$courseLine = fgets($courseFile);
echo "<input type='checkbox' name='courses[]' value='$courseLine'/> $courseLine <br />";
}
fclose($courseFile);
function GetCourseHours($courseLine)
{
if(!preg_match($courseHoursRegEx, $courseLine))
{
return $courseLine;
}
}
function GetCourseName($courseLine)
{
if(!preg_match($courseNameRegEx, $courseLine))
{
return $courseLine;
}
}
?>
这是带有课程信息的文本文件的示例
CON8101 Residential Building/Estimating 16 hrs/w
CON8411 Construction Materials I 4 hrs/w
CON8430 Computers and You 4 hrs/w
MAT8050 Geometry and Trigonometry 4 hrs/w
SAF8408 Health and Safety 5 hrs/w