Autocomplete Ile Active Record Yapmak Istiyorum..

[view] menu.php


<div class="row">

		<?php  echo $form->labelEx($model,'yemek1'); ?>

		<?php 

				$this->widget('zii.widgets.jui.CJuiAutoComplete', array(

					'model'=>$model->yemek1,

				    'name'=>'Menu[yemek1]',

				    'source'=>$this->createUrl('kayit/autocompleteTest'),

				    'id'=>'id',

				    'options'=>array(

				        'delay'=>300,

				        'minLength'=>1,

				        'showAnim'=>'fold',

				        'focus'=>'js:function( event, ui ) {

          						$( "#Menu_yemek1" ).val( ui.item.label );

   								return false;

  							}',

				   		'select'=>"js:function(event, ui) {

				            	$('#Menu_yemek1').val(ui.item.label);

				            	$('#kalori1').val(ui.item.kalori);

				            	return false;

				        	}",

				     ),

				    'htmlOptions'=>array(

				        'size'=>'40'

				    ),

				));


				?>

		

		<?php  echo $form->error($model,'yemek1'); 	?>

	</div>

        <div class="row">

                <?php  echo CHtml::textField('kalori1','',array('id'=>'kalori1','disabled' => true)); ?>

	</div>



[controller] KayitController.php


public function actionAutocompleteTest1() {

	$res =array();


	if (isset($_GET['term'])) {

		$sql = 'SELECT kalori as value, yemekAdi as label FROM yemekler ';

		$sql = $sql . ' WHERE  niteligi=2 and yemekAdi LIKE :label'; // Must be at least 1

		$command =Yii::app()->db->createCommand($sql);

		$command->bindValue(":label", '%'.$_GET['term'].'%', PDO::PARAM_STR);

		echo json_encode ( $command->queryAll () );


 	}

}

yemekler tablomda

id yemekAdi niteligi ve kalori alanları mevcut.

istediğim şey autocomplete ile yemek adını seçtiğimde alttaki alana kalorisini yazması ve veritabanına id si ile kaydetmesi.

Bun kodlarla yemek seçimini ve kalori atamasını yapıyorum fakat kaydet butonuna bastığımda alanın sayı olması gerektiği uyarısını alıyorum. Yani yemeğin id si yerine yemekAdi değerini kaydetmeye çalışıyor.

$sql = 'SELECT kalori as kalori, yemekAdi as label, id as value FROM yemekler ';

şeklinde değiştirip denedim ama olmadı

Nasıl bir ekleme yapmam lazım?

çalış yaparsın :) ::) :blink: :D B) :P >:D

Sevap işlemeyi seven bir arkadaşımız şu caresize bi yardım ederse çok büyük hayır işler…

öksüz bu… büyük sevap kazanır :)

Kıyamam arkadaşıma :)

selectte id yi de çek, onuda gönder, onun için ayrı bir textfield yap. o text fielda autocomplete scripttinde id değerini gönder… formu post yaptığında textfield ile gönderdiğin id yi al db ye yaz…

‘name’=>‘Menu[yemek1]’ bunun veritabanindaki degeri int ise bunun ismini degistir. bir tane hidden olustur ve ismini ‘name’=>‘Menu[yemek1]’ bu sekilde ver. gelen id degerinide buna yukle.