Yii Framework Forum: Hitung Dalam Yii - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Hitung Dalam Yii Rate Topic: -----

#1 User is offline   kanra 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 27-June 13

Posted 28 June 2013 - 08:32 AM

Mastah-mastah Yii saya mau nanya nih
kalau mau bikin hitung"an di Yii itu kira" kode-nya seperti apa ya?
rumus-nya kira" seperti ini :
**jika kategori A dipilih maka nilai kerja adalah :
bila jumlah mahasiswa 1-40 -> 100% x jumlah sks
bila jumlah mahasiswa 41-80 -> 150% x jumlah sks
bila jumlah mahasiswa 81-120 -> 200% x jumlah sks
dst,
**jika kategori B dipilih maka nilai kerja adalah :
bila 1-25 mhs -> 100% x jumlh sks : jumlah dosen
bila 26-50 mhs -> 150% x jumlah sks : jumlah dosen
dst,

hasil hitungannya nilai kerja langsung masuk ke db,
kalau seperti itu kira" kode-nya seperti apa ya mastah dan tolong kasih tau itu kode-nya diletakkan dimana?please help me :-[
0

#2 User is offline   rei 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 332
  • Joined: 10-November 10

Posted 29 June 2013 - 07:24 AM

View Postkanra, on 28 June 2013 - 08:32 AM, said:

kalau seperti itu kira" kode-nya seperti apa ya mastah dan tolong kasih tau itu kode-nya diletakkan dimana?


Tergantung struktur tabelnya seperti apa. Kodenya sih ane pikir ditaruh di model, kurang lebih seperti ini (mohon dikoreksi bila ada yang salah):

/**
 * Menghitung nilai kerja
 * Asumsi: jumlah mahasiswa dan SKS > 0 (sudah divalidasi sebelumnya)
 * @param char $kategori Kode kategori
 * @param integer $mhs Jumlah mahasiswa
 * @param integer $sks Jumlah SKS
 * @param integer $dosen Jumlah dosen
*/
public function setNilaiKerja($kategori, $mhs, $sks, $dosen = 0)
{
   switch($kategori)
   {
       case 'A':
         if ($mhs <= 40)
            $this->nilai_kerja = $sks;
         else
            if ($mhs <= 80)
               $this->nilai_kerja = 1.5*$sks;
            else
               if ($mhs <= 120)
                  $this->nilai_kerja = 2*$sks;
         break;
       case 'B':
         if ($mhs <= 25)
            $this->nilai_kerja = $sks/$dosen;
         else
            if ($mhs <= 50)
               $this->nilai_kerja = 1.5*$sks/$dosen;
        break;
   }   
}


Sekali lagi, perhitungannya tergantung struktur tabel dan model agan. Jika kategori merupakan field tabel, maka variabelnya tidak perlu digunakan sebagai parameter lagi (tinggal pakai $this->kategori). Demikian pula untuk field - field yang lain.

View Postkanra, on 28 June 2013 - 08:32 AM, said:

hasil hitungannya nilai kerja langsung masuk ke db,


Kalau yang ini sih tinggal diset ke modelnya aja:

$model->setNilaiKerja(....);
$model->save();


Sekian saja penjelasan ane. Mudah-mudahan bisa sedikit membantu. ::)

This post has been edited by rei: 29 June 2013 - 09:34 AM

Fipick - Find and pick recommendations
0

#3 User is offline   kanra 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 27-June 13

Posted 29 June 2013 - 08:01 AM

View Postrei, on 29 June 2013 - 07:24 AM, said:

Tergantung struktur tabelnya seperti apa. Kodenya sih ane pikir ditaruh di model, kurang lebih seperti ini (mohon dikoreksi bila ada yang salah):

/**
 * Menghitung nilai kerja
 * Asumsi: jumlah mahasiswa dan SKS > 0 (sudah divalidasi sebelumnya)
 * @param char $kategori Kode kategori
 * @param integer $mhs Jumlah mahasiswa
 * @param integer $sks Jumlah SKS
 * @param integer $dosen Jumlah dosen
 * @return decimal Nilai kerja 
*/
public function setNilaiKerja($kategori, $mhs, $sks, $dosen = 0)
{
   switch($kategori)
   {
       case 'A':
         if ($mhs <= 40)
            $nKerja = $sks;
         else
            if ($mhs <= 80)
               $nKerja = 1.5*$sks;
            else
               if ($mhs <= 120)
                  $nKerja = 2*$sks;
         break;
       case 'B':
         if ($mhs <= 25)
            $nKerja = $sks/$dosen;
         else
            if ($mhs <= 50)
               $nKerja = 1.5*$sks/$dosen;
        break;
   }
      
   $this->nilai_kerja = $nKerja;
}


Sekali lagi, perhitungannya tergantung struktur tabel dan model agan. Jika kategori merupakan field tabel, maka variabelnya tidak perlu digunakan sebagai parameter lagi (tinggal pakai $this->kategori). Demikian pula untuk field - field yang lain.


kalau struktuk tabelnya seperti ini?apakah kode-nya kira" sama gan?
tabel penugasan mengajar :
- nidn
- kode_makul
- sk_penugasan
- kelas
- kode_kategori
- semester
- tahun
- jumlah_mahasiswa
- rencana_tatap_muka
- realisasi_tatap_muka
- status
- nilai_kerja
- nilai_asesor

tabel mata kuliah:
- kode_mata_kuliah
- nama_makul
- sks
- semester

tabel kategori :
- kode_kategori
- nama_kategori



Quote

Kalau yang ini sih tinggal diset ke modelnya aja:

$model->setNilaiKerja(....);
$model->save();


Sekian saja penjelasan ane. Mudah-mudahan bisa sedikit membantu. ::)


kode itu kira" ditaruh dibagian mana gan?controller?
0

#4 User is offline   rei 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 332
  • Joined: 10-November 10

Posted 29 June 2013 - 08:13 AM

View Postkanra, on 29 June 2013 - 08:01 AM, said:

kalau struktuk tabelnya seperti ini?apakah kode-nya kira" sama gan?


Wah, kok gak muncul di sini, ya? :huh: Udah keluar nih struktur tabelnya. :) Kalau struktur tabelnya seperti itu ya tinggal dihilangkan saja parameternya (seperti yang ane sudah sebutkan di atas).

View Postkanra, on 29 June 2013 - 08:01 AM, said:

kode itu kira" ditaruh dibagian mana gan?controller?


Sepertinya di controller. Agan udah bikin aplikasinya sampe mana? Mungkin bisa posting sebagian kodenya di sini?
Fipick - Find and pick recommendations
0

#5 User is offline   kanra 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 27-June 13

Posted 29 June 2013 - 08:25 AM

View Postrei, on 29 June 2013 - 08:13 AM, said:

Wah, kok gak muncul di sini, ya? :huh:


iya ndak muncul gan gambarnya,tapi itu udah tak jelasin gan gambaran tabelnya

View Postrei, on 29 June 2013 - 08:13 AM, said:

Sepertinya di controller. Agan udah bikin aplikasinya sampe mana? Mungkin bisa posting sebagian kodenya di sini?


baru mulai buat gan,di controlernya masih kode asli hasil generate gii
class PenugasanmengajarController extends Controller
{
	public $layout='//layouts/column2';

	
	public function filters()
	{
		return array(
			'rights',
			//'accessControl', // perform access control for CRUD operations
			//'postOnly + delete', // we only allow deletion via POST request
		);
	}
	
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view'),
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','createdosen','createasesor','update','updatedosen','updateasesor'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}
	
	public function actionView($id,$id2,$id3,$id4)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id,$id2,$id3,$id4),
		));
	}
	
	 public function actionCreate()
	 {
		$model=new Penugasanmengajar;
		
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		
		if(isset($_POST['Penugasanmengajar']))
		{
			$model->attributes=$_POST['Penugasanmengajar'];
			if($model->save())
			$this->redirect(array('view','id'=>$model->nidn));
		}
		
		$this->render('create',array(
			'model'=>$model,
		));
	}
	
	public function actionCreatedosen()
	 {
		$model=new Penugasanmengajar;
		
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		
		if(isset($_POST['Penugasanmengajar']))
		{
			$model->attributes=$_POST['Penugasanmengajar'];
			if($model->save())
			$this->redirect(array('view','id'=>$model->nidn));
		}
		
		$this->render('createdosen',array(
			'model'=>$model,
		));
	}
	
	public function actionCreateasesor()
	 {
		$model=new Penugasanmengajar;
		
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		
		if(isset($_POST['Penugasanmengajar']))
		{
			$model->attributes=$_POST['Penugasanmengajar'];
			if($model->save())
			$this->redirect(array('view','id'=>$model->nidn));
		}
		
		$this->render('createasesor',array(
			'model'=>$model,
		));
	}
	
	 public function actionUpdate($id,$id2,$id3,$id4)
	 {
		$model=$this->loadModel($id,$id2,$id3,$id4);
		
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		
		if(isset($_POST['Penugasanmengajar']))
		{
			$model->attributes=$_POST['Penugasanmengajar'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->nidn,'id2'=>$model->kode_mata_kuliah,'id3'=>$model->sk_penugasan,'id4'=>$model->kelas));
		}
		
		$this->render('update',array(
			'model'=>$model,
		));
	}
	
	public function actionUpdatedosen($id,$id2,$id3,$id4)
	 {
		$model=$this->loadModel($id,$id2,$id3,$id4);
		
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		
		if(isset($_POST['Penugasanmengajar']))
		{
			$model->attributes=$_POST['Penugasanmengajar'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->nidn,'id2'=>$model->kode_mata_kuliah,'id3'=>$model->sk_penugasan,'id4'=>$model->kelas));
		}
		
		$this->render('updatedosen',array(
			'model'=>$model,
		));
	}
	
	public function actionUpdateasesor($id,$id2,$id3,$id4)
	 {
		$model=$this->loadModel($id,$id2,$id3,$id4);
		
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		
		if(isset($_POST['Penugasanmengajar']))
		{
			$model->attributes=$_POST['Penugasanmengajar'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->nidn,'id2'=>$model->kode_mata_kuliah,'id3'=>$model->sk_penugasan,'id4'=>$model->kelas));
		}
		
		$this->render('updateasesor',array(
			'model'=>$model,
		));
	}
	
	 public function actionDelete($id,$id2,$id3,$id4)
	 { 
		if (Yii::app()->request->isPostRequest){
			$this->loadModel($id,$id2,$id3,$id4)->delete();
			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
	}
	
	 public function actionIndex()
	 {
		$dataProvider=new CActiveDataProvider('Penugasanmengajar');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}
	

	 public function actionAdmin()
	 {
		$model=new Penugasanmengajar('search');
		$model->unsetAttributes(); //clear any default values
		if(isset($_GET['Penugasanmengajar']))
			$model->attributes=$_GET['Penugasanmengajar'];
			
		$this->render('admin',array(
			'model'=>$model,
		));
	}

	 public function loadModel($id,$id2,$id3,$id4)
	 {
		$model=Penugasanmengajar::model()->findByAttributes(array('nidn'=>$id,'kode_mata_kuliah'=>$id2,'sk_penugasan'=>$id3,'kelas'=>$id4));
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	 protected function performAjaxValidation($model)
	 {
		if(isset($_POST['ajax']) && $_POST['ajax']==='penugasan-mengajar-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
	
}

0

#6 User is offline   rei 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 332
  • Joined: 10-November 10

Posted 29 June 2013 - 09:36 AM

View Postrei, on 29 June 2013 - 08:13 AM, said:

Kalau struktur tabelnya seperti itu ya tinggal dihilangkan saja parameternya (seperti yang ane sudah sebutkan di atas).


Maaf ane lupa tambahin kalau nilai kerjanya udah ada di tabel ya tinggal langsung diset aja nilainya. Kodenya sudah diedit. Silakan dicek lagi, gan. :)
Fipick - Find and pick recommendations
0

#7 User is offline   kanra 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 27-June 13

Posted 07 July 2013 - 08:30 PM

View Postrei, on 29 June 2013 - 07:24 AM, said:



Kalau yang ini sih tinggal diset ke modelnya aja:

$model->setNilaiKerja(....);
$model->save();


Sekian saja penjelasan ane. Mudah-mudahan bisa sedikit membantu. ::)

gan saya kok masih belum bisa ya manggil function set nilai kerjanya
biar kalau klik button cretae nilai_kerja langsung masuk ke db itu kira" kode-nya gimana gan?

kode saya seperti ini tapi gak bisa
public function actionCreate()
	 {
		$model=new Penugasanmengajar;
		
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		
		if(isset($_POST['Penugasanmengajar']))
		{
			$model->attributes=$_POST['Penugasanmengajar'];
			$model->setNilaiKerja($kode_pengajaran,$jumlah_mahasiswa,$sks,$jumlah_dosen = 0);
			$model->save();
			if($model->save())
			$this->redirect(array('admin','id'=>$model->nidn));
		}
		
		$this->render('create',array(
			'model'=>$model,
		));
	}

0

#8 User is offline   rei 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 332
  • Joined: 10-November 10

Posted 08 July 2013 - 07:33 AM

Variabel kode_pengajaran, jumlah_mahasiswa, sks, dan jumlah_dosen itu diset di mana, gan? Kalau variabel-variabelnya sudah ada di model ya tidak usah dimasukkan ke parameter lagi waktu manggil fungsinya. Tinggal dimodifikasi aja fungsi setNilaiKerja-nya.

Trus manggil fungsi savenya sekali aja, gan. :)

$model->setNilaiKerja(...);
if($model->save())
   ...

Fipick - Find and pick recommendations
0

#9 User is offline   kanra 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 27-June 13

Posted 08 July 2013 - 12:21 PM

View Postrei, on 08 July 2013 - 07:33 AM, said:

Variabel kode_pengajaran, jumlah_mahasiswa, sks, dan jumlah_dosen itu diset di mana, gan? Kalau variabel-variabelnya sudah ada di model ya tidak usah dimasukkan ke parameter lagi waktu manggil fungsinya. Tinggal dimodifikasi aja fungsi setNilaiKerja-nya.

Trus manggil fungsi savenya sekali aja, gan. :)

$model->setNilaiKerja(...);
if($model->save())
   ...



sudah bisa masuk data base gan,kode-nya seperti ini:
  
public function actionCreate()
	 {
		$model=new Penugasanmengajar;
		
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);
		
		if(isset($_POST['Penugasanmengajar']))
		{
			//$model->setNilaiKerja($kode_pengajaran, $jumlah_mahasiswa, $sks, $jumlah_dosen);
			$model->attributes=$_POST['Penugasanmengajar'];
			$model->setNilaiKerja($model->kode_pengajaran,$model->jumlah_mahasiswa,$model->sks,$model->jumlah_dosen);
			if($model->save())
			$this->redirect(array('admin','id'=>$model->nidn));
		}
		
		$this->render('create',array(
			'model'=>$model,
		));
	}


tapi hasil hitungannya 0 gan,padahal harusnya 3..
itu kira" kenapa ya gan?
apa gara-gara sks saya berada di tabel lain?
0

#10 User is offline   rei 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 332
  • Joined: 10-November 10

Posted 09 July 2013 - 02:12 AM

View Postkanra, on 08 July 2013 - 12:21 PM, said:

tapi hasil hitungannya 0 gan,padahal harusnya 3..
itu kira" kenapa ya gan?
apa gara-gara sks saya berada di tabel lain?


Kalau field SKS ada di tabel lain ya tinggal dipanggil lewat relasinya, gan:

$model->(nama relasi dengan tabel kuliah)->sks


Ngomong2, setelah melihat kode agan, menurut ane sebaiknya (just saran :) ):
1. Fungsi setNilaiKerja gak perlu pake parameter lagi karena semua parameter sudah ada di model (tinggal langsung dipanggil dari modelnya).
2. Fungsi setNilaiKerja dipanggil di model aja, mungkin di event beforeSave()?
Fipick - Find and pick recommendations
0

#11 User is offline   krisna 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 7
  • Joined: 21-July 13

Posted 28 July 2013 - 09:16 PM

makasih gan atas pencerahannya, ane juga mau bikin kayak gitu mirip-mirip sih
0

#12 User is offline   Nur Rochim 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 42
  • Joined: 04-February 13
  • Location:Indonesia

Posted 11 August 2013 - 09:32 AM

Ini dah solved gan? ikut nyimak Posted Image
0

#13 User is offline   kanra 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 27-June 13

Posted 13 August 2013 - 05:47 AM

View PostNur Rochim, on 11 August 2013 - 09:32 AM, said:

Ini dah solved gan? ikut nyimak Posted Image



sudah gan ::)
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users