0

以下は私のコードです。最初の部分は完全に機能しますが、2 番目のループでは結果が得られません。これが行っていることは、timetable を探し、その中のクラスを取り出し、それをすべてコピーして、同じデータで別の名前の新しい timtable を作成することです。

もう 1 つの for ループは、タイム テーブルのクラスに生徒を追加することです。私は5日間壁に頭をぶつけていたので、誰かが親切にして、これを手伝ってくれませんか。

前もって感謝します。コード:

    <?php
$Q = "INSERT INTO time_table(name, term, year) VALUES
               ('".$name."', '".$term."', '".$year."')";
$res = $db->query($Q);
//for generating the max table id
        $sql2 = "select MAX(table_id) as table_id 
        from time_table 
        ";
        $res2 = $db->query($sql2);
        $count2 = $res2->num_rows;
        $row2 = $res2->fetch_assoc();

      $table_id = $row2['table_id'];
$Q = "SELECT class_id as tcid, day as d, teacher_id as tei, location as l
 FROM class_time_table 
 WHERE term='".$copy."'";
$res = $db->query($Q);
$num_results = $res->num_rows;
      for ($i = 0; $i <$num_results; $i++) {
         $row = $res->fetch_assoc();
            $Q4 = "SELECT * FROM students_class WHERE class_id = '".$row['tcid']."' and term = '".$copy."'";
            $res4 = $db->query($Q4);
            $row2 = $res4->fetch_assoc();
            //for generating the max table id
            $class_sysq = "select MAX(class_sys_id) as class_sys_id 
            from students_class 
            ";
            $class_sysr = $db->query($class_sysq);
            $count_class_sys = $class_sysr->num_rows;
            $class_row = $class_sysr->fetch_assoc();

            $class_sys_idf = $class_row['class_sys_id']+1;
            $Q5 = "INSERT INTO students_class (class_sys_id, teachers_id, location, max_students, class_term_fee, class_name, class_sub_name, term, year) VALUES ('".$class_sys_idf."', '".$row2['teachers_id']."', '".$row2['location']."', '".$row2['max_students']."', '".$row2['class_term_fee']."', '".$row2['class_name']."', '".$row2['class_sub_name']."', '".$term."', '".$year."')";
            $res5 = $db->query($Q5);
            //for generating the max table id
            $max_c_id = "select MAX(class_id) as ci 
            from students_class 
            ";
            $r_mci = $db->query($max_c_id);
            $count_class_sys = $r_mci->num_rows;
            $mci_row = $r_mci->fetch_assoc();
            $max_c_idf = $mci_row['ci'];

            $query2 = "INSERT INTO class_time_table(class_id, teacher_id, table_id, location, day, term, year) VALUES
               ('".$max_c_idf."', '".$row['tei']."', '".$table_id."', '".$row['l']."', '".$row['d']."', '".$term."', '".$year."')";
            $result2 = $db->query($query2);

        $student_q = "SELECT students.first_name as fn, students.last_name as ln, students.email as e, students.mobile_phone as mp, students.home_phone as hp, students.gender as g, students.dob as dob, students.term_fee as tf, students.join_date as jd, students.date_added as da, student_attending_class.class_id as ci FROM students, student_attending_class, class_time_table where students.student_sys_id = student_attending_class.student_id and student_attending_class.class_id = class_time_table.class_id and class_time_table.class_id = '".$row['tcid']."'";
            $student_res = $db->query($student_q);
            $student_num_results = $student_res->num_rows;
            for ($i = 0; $i < $student_num_results; $i++) {
            $theRow = $student_res->fetch_assoc();

            //for generating the new system id
            $sql3 = "select MAX(student_sys_id) as ssi 
            from students";
            $res3 = $db->query($sql3);
            $count3 = $res3->num_rows;
            $row8 = $res3->fetch_assoc();
            $student_system_num = $row8['ssi']+1;

            $query10 = "INSERT INTO students(student_sys_id, first_name, last_name, email, mobile_phone, home_phone, gender, dob, fee_due, registration_fee, term_fee, fee_paid, join_date, date_added) VALUES
               ('".$student_system_num."', '".$theRow['fn']."', '".$theRow['ln']."', '".$theRow['e']."', '".$theRow['mp']."', '".$theRow['hp']."', '".$theRow['g']."', '".$theRow['dob']."', '".$theRow['tf']."', 0, '".$theRow['tf']."', 0, '".$theRow['jd']."', '".$theRow['da']."')";
            $result10 = $db->query($query10);
            $query11 = "INSERT INTO student_attending_class(class_id, student_id, waiting_list) VALUES ('".$max_c_idf."', '".$student_system_num."', '0')";
            $result11 = $db->query($query11);

            }

        }   


?>
4

4 に答える 4

1

2 番目のループでは $i を使用しないでください。ただし、たとえば $n を使用してください。

于 2013-02-07T07:44:07.400 に答える
0

コードの形式が悪いため、両方のループに同じ変数を使用していることを見落としがちです。そのため、2 番目のループが始まると、最初のループはその進行状況を追跡できなくなります。を使用するforeach()か、2 番目のループに別の変数名を使用します。

于 2013-02-07T07:46:30.090 に答える
0

よくわかりませんが、両方のループで同じ変数 $i を使用したため、2番目のループが機能していない可能性があります。2 番目のループで別の変数 $j を試してください。

于 2013-02-07T07:44:53.373 に答える
0

両方とも同じ変数を使用するネストされたループがあるため、タイムアウトが発生している可能性があり、$iインクリメントし続けます。

2 番目のループを次のように変更してみてください。

for($j = 0; $j < $student_num_results; $j++){
   ...
}
于 2013-02-07T07:49:53.810 に答える