2015-01-06 62 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