質問

Following is my code. The first part works perfectly, but the second loop is not producing any results. What this is doing is that it looks for the timetable, then takes out the classes in that, copies all the that and makes a new timtable with same data but a different name.

The other for loop is to add students into the classes of the time table. Ca some one be kind enough and help me out in this as I have been hitting my head on the wall for it now for 5 days.

Thank you in advance. The code:

    <?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);

            }

        }   


?>
役に立ちましたか?

解決

Don't use $i in the second loop but $n for instance.

他のヒント

i m not sure but you used same variable $i in both loop so maybe because of that your second loop not working. try another variable $j in second loop.

The code is poorly formatted, so it's easy to miss that you're using the same variable for both loops, hence when the second loop begins, the first loses track of its progress. Use foreach(), or a different variable name for the second loop.

You are probably getting a timeout due to having nested loops which both use the same variable, $i and it just keeps incrementing.

Try changing the second loop like so:

for($j = 0; $j < $student_num_results; $j++){
   ...
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top