0

ここに、データベースからコース情報を取得するためのSQLクエリがあります。変数coursesは、前のページからSessionによって保存された配列です。var_dumpすると次courses[]のようになります。セッションに入れるコースを3つ選択しました。

array(3) 
{ 
[0]=> string(7) "CAD8405" 
[1]=> string(7) "CON8413" 
[2]=> string(7) "ENG8328" 
}

私の$selectedYear変数は2012年から2014年の間で変化します。これもセッションによって保存されます。以下は私が問題を抱えているところです。私の質問は大丈夫です、それをチェックする必要はありません。$courseCodeとして表示されないCourse.CourseCode='$courseCode'ため、クエリが機能しません。

これは私がそれがちょっと混乱するところであると私が見つけたものです。配列は通常の$courses配列を返します。しかし、$courses[0] = $courseCode;そうすると、コースIDとして必要なデータがアレイvar_dump($courseCode) = null のキーであると私は信じるようになります。$courses[]にアクセスしようとすると$courses[1]、コードはキーを最初のデータとする多次元配列と見なします。しかし、私は間違っている可能性が あります私の配列のキーを抽出するためのより良い方法はありますか?

for($i = 0; $i < count($courses); $i++)
{
    //$courses[$i] = $courseCode;
    $courseCode = $courses[$i];
    $comfirmationString = "SELECT Course.CourseCode, Course.Title, Course.WeeklyHours, Semester.SemesterCode FROM Course, Semester, CourseOffer
    WHERE Semester.YearNum='$selectedYear' AND Course.CourseCode='$courseCode'
    AND Course.CourseCode=CourseOffer.CourseCode AND Semester.SemesterCode=CourseOffer.SemesterCode";

if($comfirmationResult = mysqli_query($link, $comfirmationString))
    {
        while($row = mysqli_fetch_assoc($comfirmationResult))
        {
            echo "<tr><td>$row[CourseCode]</td><td>$row[Title]</td><td>$row[WeeklyHours]</td><td>$row[SemesterCode]</td></tr>";
        }
    }
    else
    {
        echo "<p>Query error: " + mysqli_error($link) + "</p>";
    }
}

以下は、変数をどのように保存したかを示すコード$courses[]です。クエリの結果を取得し、チェックボックスをオンにすると、このcourseIDがcourses[]配列にスローされます。

if($Result2013 = mysqli_query($link, $string2013))
    {
        echo "<form action='CourseSelection.php' method='get'>
        <table><tr><th>Code</th><th>Course Title</th><th>Hours</th><th>Term</th><th>Select</th></tr>";
        while($row2013 = mysqli_fetch_assoc($Result2013))
        {
            echo "<tr><td>$row2013[CourseCode]</td><td>$row2013[Title]</td><td>$row2013[WeeklyHours]</td>
            <td>$row2013[Term]</td><td><input type='checkbox' name='courses[]' value=$row2013[CourseCode]></td></tr>";
        }
        echo "</table>";
    }
4

1 に答える 1

0

次のように、クエリを変更して、複合値を読みやすい値に関連付けることができます。

$comfirmationString = "SELECT Course.CourseCode as courseCode, Course.Title as courseTitle, Course.WeeklyHours as courseWeeklyHours, Semester.SemesterCode as semesterCode FROM Course, Semester, CourseOffer
WHERE Semester.YearNum='$selectedYear' AND Course.CourseCode='$courseCode'
AND Course.CourseCode=CourseOffer.CourseCode AND Semester.SemesterCode=CourseOffer.SemesterCode";

また、次のように、変数を角かっこで囲む必要があります。

echo "<tr><td>{$row['CourseCode']}</td><td>{$row['courseTitle']}</td><td>{$row['courseWeeklyHours']}</td><td>$row[SemesterCode]</td></tr>";

等々。

于 2012-10-30T03:42:27.140 に答える