2015-01-06 36 views
-3

我在分区循环中遇到问题。我有一个包含课程的多选组合框表单。该表格用于存储教师的教学时间数据。每位教师可以教一堂以上的课程。循环中的分区

<form class="form-vertical" method="POST" action="http://localhost/penjadwalan/administrator/jammengajar/add_process"> 
<fieldset> 
<legend>Tambah Data</legend> 
       <div class="col-lg-6"> 
         <div class="form-group"> 
         <label for="order">Guru</label> 
         <input id="teacher" name="teacher" value="TI" type="text"> 
     </div> 
      <div class="form-group"> 
         <label for="order">Mata Pelajaran</label> 
         <select name="lesson[]" multiple class="form-control chosen-select"> 
          <option value="108">Teknik Informatika - Prakarya</option> 
          <option value="107">Antropologi</option> 
          <option value="81">Sosiologi</option> 
          <option value="74">Seni Budaya</option> 
          <option value="70">Bahasa Sunda</option> 
          <option value="68">Seni Musik</option> 
          </select>   
      </div> 
          <div class="form-group"> 
         <label for="order">Total Hours</label> 
         <input id="total_jam" name="total_hours" value="" type="text" placeholder="" class="form-control input-md"> 
        </div> 
          <div class="form-group"> 
         <button id="" name="" class="btn btn-primary"><i class="fa fa-save"></i> Simpan Data</button> 
         </div> 
       </div> 
      </fieldset> 
      </form> 

每课具有小时范围从1配额 - 4.我将举一个例子

  • 老师:安迪
  • 课:数学(4小时),化学(2小时)
  • 总时间:根据以上数据30小时

,老师有2个教训。所以,数学应该是16小时,化学应该是14小时。现在如何根据总小时数和课时自动分配它?

的过程脚本,我做

if ($lesson > 1) { 
$class = $total_hours/$lesson; 

if ($class % 2 == 0) { 
    $class = $class; 
} else { 
    $class = $class + 1; 
    $remaining_class = $total/$lesson - 1; 
} 
} else { 
    $class = $total_hours; 
} 

if (count($lesson) > 1) { 
    foreach ($lesson as $v) { 
     $lesson_data = $this->pelajaran->getIdLesson($v); 
     $class = $this->kelas->getAllClassByFaculty($mappel->kelompok_mapel)->result(); 
     $total_class = count($class); 
     $n = $class/$lesson_data->jumlah_jam; 
     foreach ($kelas_jurusan as $vals) { 
      if ($i < $n) { 
       $jammengajar = array('kode_guru' => $kode_guru, 
            'id_mapel' => $mappel->id_mapel, 
            'jumlah_jam' => $mappel->jumlah_jam, 
            'id_kelas' => $vals->id_kelas 
            ); 
       $this->jammengajar->addJamMengajar($jammengajar); 
      } else { 

      } 
      $i++; 
     } 
    } 
} else { 

} 
+0

你可以提供更多关于代码应该做什么的信息吗? –

+0

@CommuSoft我编辑了这个问题:) – elcicko

回答

0

如果我理解正确,有多种方法可以做到这一点。

最简单的方法,排序的对待它就像一个向量:

添加您的时间为每个类,除以总数。所以从你的例子:

老师:安迪 课:数学(4个小时),化学(2小时)总 时间:30小时

你会采取30 /(4 + 2)= 5,则将每个类乘以数值,这会给你4 * 5 = 20小时的数学和2 * 5 = 10小时的化学反应。

这个或任何解决方案遇到的问题是当小时无法工作(如果这是一种可能的情况),例如31小时,在这种情况下,您会希望采取“地板”值你的系数(即31 /(4 + 2)= 5.16,所以你仍然只是做5)。

从那里,你可以采取任何余数,检查它是否比小班小,如果是这样,填写小班(32小时,你会得到32 /(4 + 2),这是5.33333,下降到5楼,然后重复其余的两个小时,从而给你20小时的数学和12小时的化学)。

+0

它是工作的人!谢谢 :) – elcicko