multiple checkbox

Agan-agan dan sis,ane mau buat sperti ini http://www.eha.ee/labs/yiiplay/index.php/en/person/batch sebetulnya,tapi agak bingung karena code nya kayak gini




public function actionUpdateYears()

	{

		// we only allow POST request

		if(Yii::app()->request->isPostRequest)

		{

			$increment=!empty($_GET['op']) && $_GET['op']=='more' ?  1 : -1;

			$criteria=new CDbCriteria();

			$criteria->addInCondition('id', $_POST['person-id']);

			Person::model()->updateCounters(array('birthyear'=>$increment), $criteria);


			// if AJAX request, we should not redirect the browser

			if(!isset($_GET['ajax']))

			{

				if(!$this->goBack())

					$this->redirect(array('batch'));

				else

					$this->goBack();

			}

		}

		else

			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');

	}



Person::model()->updateCounters dari mana ya?

sebenernya sih ane cuma mau ubah status,klo di klik beberapa berubah status 1 atau 2 tergantung si user,ada cara yg lebih sederhana dri ini?dan kalau ane mau bkin misal yg umurnya >18 jadi status 3 itu gimana yaa?:(

UpdateCounters itu punya yii…

buat update langsung… itu kan 1 ma -1 jadi kalo pilihannya more tambah 1, less kurang 1…

kalo mo ubah tinggal bag ini yg diubah…


$increment=!empty($_GET['op']) && $_GET['op']=='more' ?  1 : -1;

			$criteria=new CDbCriteria();

			$criteria->addInCondition('id', $_POST['person-id']);

			Person::model()->updateCounters(array('birthyear'=>$increment), $criteria);

misal


$option=$_GET['op'];

$criteria=new CDbCriteria();

$criteria->addInCondition('id', $_POST['person-id']);

if ($option ==<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/huh.gif' class='bbc_emoticon' alt='???' />)

{

// apa yg mau dilakuin

} else {

.......

}

kalau mau maksimal bisa milih itu tergantung dari database gimana ya?jadi aq mau bkin multiple select tapi stiap user beda bisa select berapanya :(

kalo itu q lom pernah coba…

kalo ga ada yg bisa coba lempar ke general discussion…

aq bikin kayak gini jadinya,tapi kok g berubah ya status nya?tapi juga g muncul error


public function actionUpdateStatus()

        {

                // we only allow POST request

                if(Yii::app()->request->isPostRequest)

                {


			$option=$_GET['stat'];

			//var_dump($option);die();

			$criteria=new CDbCriteria();

			$criteria->addInCondition('id', $_POST['id']);

			

			if ($option ==1)

			{

			//ChildData::model()->updateCounters(array('status'=>$option), $criteria);

			ChildData::model()->updateAll(array('status'=>1),$criteria);

			} else {

			//.......

			ChildData::model()->updateAll(array('status'=>2),$criteria);

			}

                       // Person::model()->updateCounters(array('birthyear'=>$increment), $criteria);

		       var_dump (ChildData::model()->updateAll(array('status'=>1),$criteria)->getErrors());die();

                        // if AJAX request, we should not redirect the browser

                        if(!isset($_GET['ajax']))

                        {

                                if(!$this->goBack())

                                        $this->redirect(array('view'));

                                else

                                        $this->goBack();

                        }

                }

                else

                        throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');

        }

:(

coba if-nya diganti kaya gini


if (!empty($_GET['stat']) && $_GET['stat']=='1'){

kalo lom berhasil coba liat viewnya yak…

seperti ini sis


$this->widget('ext.XBatchMenu', array(

    'formId'=>'person-form',

    'checkBoxId'=>'id',

    'ajaxUpdate'=>'child-renewal-grid', // if you want to update grid by ajax

    'emptyText'=>'Silahkan Cheklist Anak Terlebih Dahulu!',

    'confirm'=>'Apakah anda yakin melanjutkan proses?',

    'items'=>array(

        array('label'=>'Anak Dalam Asuhan Panti','url'=>array('updateStatus','stat'=>1)),

        array('label'=>'Anak Dalam Asuhan Keluarga','url'=>array('updateStatus','stat'=>2)),

    ),

    'htmlOptions'=>array('class'=>'actionBar'),

));


echo CHtml::beginForm('','post',array('id'=>'person-form'));

$this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'child-renewal-grid',

	'dataProvider'=>$model->findAnaks($idLksa),

	//'enablePagination'=>false,

	//'filter'=>$model,

	'selectableRows'=>2,

	'columns'=>array(

		//'id',

		array(

			'class'=>'CCheckBoxColumn',

			'id'=>'id',

		),

		'child_code',

		'child_name',

		array(

			'name'=>'gender_id',

                        'header'=>'Jenis Kelamin',

                        'type'=>'raw',

                        'value'=>'ChildData::model()->getGender($data->gender_id)',

                ),

		//'gender_id',

		'pob',

		'dob',

		array(

			'header'=>'Action',

			'value'=>'CHtml::link( \'View\', array(\'ChildData/view\',\'id\'=>$data->id))' ,

			'type'=>'raw',

		),

		//array('name'=>'child_Data', 'value'=>'$data->childData->lksa_data_id'),


	),

));

echo CHtml::endForm();


 if ($option ==1)

diganti


if (!empty($_GET['stat']) && $_GET['stat']=='1')

view :


'items'=>array(

array('label'=>'Anak Dalam Asuhan Panti','url'=>array('updateStatus','stat'=>'1')),

array('label'=>'Anak Dalam Asuhan Keluarga','url'=>array('updateStatus','stat'=>'2')),

),

oooh ternyata sebenernya bisa,tapi ada yang nimpa status itu karena aq mau bkin pas pertama dimunculin status nya jadi 0




public function actionRenewal($id)

	{

		

		$model=new ChildData;

		$anak= ChildData::model()->findAllByAttributes(array('lksa_data_id'=>$id,));

		

		

		

		foreach($anak as $child)

		{

			//var_dump($child->attributes);

			

			 $child->status=0;

			 $child->update_date=date('Y-n-j');

			//$child->child_picture='lalala.jpg';

			//var_dump($child->attributes);

			 $child->save();

			// var_dump($child->attributes) ;

			//var_dump($child->getErrors()) ;

			//die();

			


		}

		$this->render('renewal',array(

			'model'=>$model ,'id'=>$id,

		));

	}

dan pas di update status nya berubah,tapi karena ada child->status=0 di action utamanya jadi 0 lagi statusnya,

kira-kira kalau mau pas pertama nampilin data status nya 0 dan ketika diupdate g ketimpa am codingan utamanya harus di ubah seperti apa ya :(

emang yg duluan mana c??

updatestatus or renewal???

kayanya q liat di updatestatus ga panggil action renewal d…

ko bisa abis updatestatus ke renewal???

apa q yg ga liat??? :unsure:

View itu ad didalam action renewal sis,jadi awalnya aq manggil action renewal,dan dsitu ditampilin semua data yg udah diubah statusnya jd 0,nah abis itu br user update status anaknya,jd pas udah update krena ad di action renewal lg statusnya jd 0 lg :(

ooo…

ko di renewal statusnya di set 0???

kegunaannya apa??apa buat nampilin yg di view???

apa gimana???

bisa liat koding lengkap renewal ma updatestatusnya???

iya buat yg nampilin di view doang :D

kira2 gini view nya




$this->widget('ext.XBatchMenu', array(

    'formId'=>'person-form',

    'checkBoxId'=>'id',

    'ajaxUpdate'=>'child-renewal-grid', // if you want to update grid by ajax

    'emptyText'=>'Silahkan Cheklist Anak Terlebih Dahulu!',

    'confirm'=>'Apakah anda yakin melanjutkan proses?',

    'items'=>array(

       array('label'=>'Anak Dalam Asuhan Panti','url'=>array('updateStatus','stat'=>'1')),

	array('label'=>'Anak Dalam Asuhan Keluarga','url'=>array('updateStatus','stat'=>'2')),


    ),

    'htmlOptions'=>array('class'=>'actionBar'),

));


echo CHtml::beginForm('','post',array('id'=>'person-form'));

$this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'child-renewal-grid',

	'dataProvider'=>$model->findAnaks($idLksa),

	//'enablePagination'=>false,

	//'filter'=>$model,

	'selectableRows'=>2,

	'columns'=>array(

		//'id',

		array(

			'class'=>'CCheckBoxColumn',

			'id'=>'id',

		),

		'child_code',

		'child_name',

		array(

			'name'=>'gender_id',

                        'header'=>'Jenis Kelamin',

                        'type'=>'raw',

                        'value'=>'ChildData::model()->getGender($data->gender_id)',

                ),

		//'gender_id',

		'pob',

		'dob',

		array(

			'header'=>'Action',

			'value'=>'CHtml::link( \'View\', array(\'ChildData/view\',\'id\'=>$data->id))' ,

			'type'=>'raw',

		),

		//array('name'=>'child_Data', 'value'=>'$data->childData->lksa_data_id'),


	),

));

echo CHtml::endForm();


model find anaks nya kayak gini

public function findAnaks($id){


		$criteria = new CDbCriteria( array(

		'condition' => 'lksa_data_id = :id and status =0',

		'params'    => array(':id' => $id),

		//'limit'	=>'5',

		) );

		//$criteria->with='childData';


		return new CActiveDataProvider('ChildData', array(

			'criteria'=>$criteria,'pagination' => array('pageSize'=>250,)

		));

	}



karena status awal mereka ngak 0 untuk ditampilin aq mau ubah jadi 0 dlu :D gtu sih kira2,apa aq harus bedain action buat bikin status 0 ama action buat status barunya?

ow geto…

kalo menurutku c set statusnya tu diawal pas data disave aja…

kalo ga ya bikin action buat ubah status jadi 0 baru di action itu manggil action buat updatestatusnya…

kalo ga kondisi status kurang dari satu tapi kalo statusnya kosong lum pernah coba g c…


public function findAnaks($id){


                $criteria = new CDbCriteria( array(

                'condition' => 'lksa_data_id = :id and status <1',

                'params'    => array(':id' => $id),

                //'limit'       =>'5',

                ) );

                //$criteria->with='childData';


                return new CActiveDataProvider('ChildData', array(

                        'criteria'=>$criteria,'pagination' => array('pageSize'=>250,)

                ));

        }

itu kalo tipe data statusnya integer lo ya…

tapi bukannya kalo data di db tipe integer kalo qta ga masukin nilainya jadi default 0 ya???

apa statusnya bukan integer???