0

大学のクラスと詳細を MySQL データベースから取り出し、PHP を使用して Web ページに並べ替えています。

現在、私のスクリプトは単純です。いくつかのフィールドを取得し、クラス タイトル別に整理します。

クラス名:プログラミング101

  • クレジット時間: 4
  • 時間:午前11時~午後12時50分
  • 日数: MTW
  • 部屋番号: 361

同じクラスが 3 つまたは 4 つある場合もあるため、かなり長いページが作成される可能性があります。ページの外観を単純化しようとしています。


したがって、クラス名を繰り返す代わりに:

クラス名:プログラミング101

  • クレジット時間: 4
  • 時間:午前11時~午後12時50分
  • 日数: MTW
  • 部屋番号: 361

クラス名:プログラミング101

  • クレジット時間: 4
  • 時間:午前11時30分~午後2時50分
  • 日: 木 F
  • 部屋番号: 123

これを見ることができます:

クラス名: プログラミング 101 単位数: 4

  • 時間:午前11時~午後12時50分
  • 日数: MTW
  • 部屋番号: 361

  • 時間:午前11時30分~午後2時30分
  • 日: 木 F
  • 部屋番号: 123

クラス名: プログラミング 102 単位時間: 4

  • 時間:午前1時~午後2時30分
  • 日: MW
  • 部屋番号: 231

  • 時間:午前2時30分~午後4時30分
  • 日数: TF
  • 部屋番号: 222

これが私の現在のスクリプトです:

$sql = "SELECT crs_title, trm_cde, last_name, first_name, begin_dte, end_dte, crs_cde, begin_tim, end_tim, monday_cde, tuesday_cde, wednesday_cde, thursday_cde, friday_cde, saturday_cde, sunday_cde, bldg_cde, room_cde, udef_5_2_1, crs_capacity, crs_enrollment, section_sts FROM BTC_Web_Schedule_view WHERE yr_cde = 2014 AND trm_cde = 'fa' ORDER BY crs_title, trm_cde";
                $rs = odbc_exec($conn,$sql);

                while (odbc_fetch_row($rs))
                {
                    $crs_title = odbc_result($rs,"crs_title");
                    $trm_cde = odbc_result($rs,"trm_cde");
                    $crs_cde = odbc_result($rs,"crs_cde");
                    $begin_tim = odbc_result($rs,"begin_tim");
                    $end_tim = odbc_result($rs,"end_tim");
                    $begin_time = substr($begin_tim, 11, -7);
                    $end_time = substr($end_tim, 11, -7);
                    $begin_dte = odbc_result($rs,"begin_dte");
                    $end_dte = odbc_result($rs,"end_dte");
                    $monday_cde = odbc_result($rs,"monday_cde");
                    $tuesday_cde = odbc_result($rs,"tuesday_cde");
                    $wednesday_cde = odbc_result($rs,"wednesday_cde");
                    $thursday_cde = odbc_result($rs,"thursday_cde");
                    $friday_cde = odbc_result($rs,"friday_cde");
                    $saturday_cde = odbc_result($rs,"saturday_cde");
                    $sunday_cde = odbc_result($rs,"sunday_cde");
                    $first_name = odbc_result($rs,"first_name");
                    $last_name = odbc_result($rs,"last_name");
                    $fullname = $first_name.$last_name;
                    $bldg_cde = odbc_result($rs,"bldg_cde");
                    $room_cde = odbc_result($rs,"room_cde");
                    $udef_5_2_1 = odbc_result($rs,"udef_5_2_1");
                    $crs_capacity = odbc_result($rs,"crs_capacity");
                    $crs_enrollment = odbc_result($rs,"crs_enrollment");
                    $seats_left = $crs_capacity - $crs_enrollment;
                    $section_sts = odbc_result($rs,"section_sts");

                    echo "<div class='container'><p><h2>$crs_title</h2> | $crs_cde</p></div>";
                    echo "<div class='panel'><p><strong>Time</strong>: ".date('g:ia', strtotime($begin_time))." - ".date('g:ia', strtotime($end_time))."<br>";
                    echo "<strong>Start date</strong>: ".date("F jS, Y",strtotime($begin_dte))."<br>";
                    echo "<strong>End date</strong>: ".date("F jS, Y",strtotime($end_dte))."<br>";
                    echo "<strong>Days</strong>: $monday_cde $tuesday_cde $wednesday_cde $thursday_cde $friday_cde $saturday_cde $sunday_cde <br>";
                    echo "<strong>Instructor</strong>: $fullname <br>";
                    echo "<strong>Building</strong>: $bldg_cde <br>";
                    echo "<strong>Room</strong>: $room_cde <br>";
                    echo "<strong>Fee</strong>: $$udef_5_2_1 <br>";
                    echo "<strong>Seats remaining</strong>: $seats_left <br>";
                    echo "<strong>Enrollment status</strong>: $section_sts</p></div>";
                }
                odbc_close($conn);

アドバイスをいただければ幸いです。ありがとうございました。

4

2 に答える 2

0

データベースを正規化しますか?

それ以外:

while (odbc_fetch_row($rs))
{
    $crs_title = odbc_result($rs,"crs_title");
    $first_name => odbc_result($rs,"first_name");
    $last_name => odbc_result($rs,"last_name");
    $fullname = $first_name.$last_name;
    $begin_tim = odbc_result($rs,"begin_tim");
    $end_tim = odbc_result($rs,"end_tim");
    $crs_capacity = odbc_result($rs,"crs_capacity");
    $crs_enrollment = odbc_result($rs,"crs_enrollment");
    $courses[$crs_title][] = array(
        $trm_cde = odbc_result($rs,"trm_cde")
        'crs_cde' => odbc_result($rs,"crs_cde"),
        'begin_tim' => $begin_tim,
        'begin_time' => substr($begin_tim, 11, -7),
        'end_tim' => $end_tim,
        'end_time' = substr($end_tim, 11, -7),
        'begin_dte' => odbc_result($rs,"begin_dte"),
        'end_dte' => odbc_result($rs,"end_dte"),
        'monday_cde' => odbc_result($rs,"monday_cde"),
        'tuesday_cde' => odbc_result($rs,"tuesday_cde"),
        'wednesday_cde' => odbc_result($rs,"wednesday_cde"),
        'thursday_cde' => odbc_result($rs,"thursday_cde"),
        'friday_cde' => odbc_result($rs,"friday_cde"),
        'saturday_cde' => odbc_result($rs,"saturday_cde"),
        'sunday_cde' => odbc_result($rs,"sunday_cde"),
        'first_name' => $first_name,
        'last_name' => $last_name,
        'fullname' => $first_name.$last_name,
        'bldg_cde' => odbc_result($rs,"bldg_cde"),
        'room_cde' => odbc_result($rs,"room_cde"),
        'udef_5_2_1' => odbc_result($rs,"udef_5_2_1"),
        'crs_capacity' => $crs_capacity,
        'crs_enrollment' => $crs_enrollment,
        'seats_left' = $crs_capacity - $crs_enrollment,
        'section_sts' => odbc_result($rs,"section_sts"),
    );
    foreach ($courses as $crs_title => $data) {
        /* html output */
        $count = count($data);
        foreach ($data as $subdata) {
            //multiple times
        }
    }
}
于 2013-09-30T19:03:08.073 に答える
0

考慮すべき点がいくつかあります。

データを取得する前に、できるだけ多くの並べ替えを行うようにクエリを変更してください。たとえば、ORDER BYコースのタイトルを最初に (次に、開始日などの他のフィールドで) 設定できます。

必要な方法で簡単に出力できるように、データから配列を作成します。次に例を示します。

$array = array();
while (odbc_fetch_row($rs)) {
     //  ... get your data (probably use something besides odbc_result so you can get ther whole array at once .. but for this example just assume I am using your same variables.
     $array[$crs_title] = array(
        // place your other course data here in array
     );
}
foreach($array as $course_title => $course_data) {
    // present your data
}
于 2013-09-30T19:05:32.373 に答える