マイページでは、ユーザーは.phpスクリプトで開いたリストから参加したいコースのリストを選択できます。ユーザーが選択する選択肢は、courses[]と呼ばれるチェックボックスの配列に設定されます。Result.phpの1つである、選択された選択肢は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