Yii Framework Forum: Consulta Ao Banco De Dados - Yii Framework Forum

Jump to content

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

Consulta Ao Banco De Dados Rate Topic: -----

#1 User is offline   bia 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 17-January 13

Posted 21 February 2013 - 05:40 PM

Pessoal tenho uma página de cadastro de livro,mas para cadastrar livro
preciso buscar o autor, já tenho minha tabela autor, como posso
fazer um campo de busca no cadastro de livro que busca todos os autores
da minha tabela autor?

Alguem sabe como?
Desde já Obrigada. :)
"Só sei que nada sei..."
0

#2 User is offline   Gustavo Andrade 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 128
  • Joined: 16-August 11
  • Location:Brazil - MG

Posted 21 February 2013 - 08:03 PM

Você pode usar um campo select mesmo, tipo:

<?php
$autor= CHtml::listData(Autor::model()->findAll(), 'id_autor', 'nome_autor');
$options = array(
'tabindex' => '0',
'empty' => '-- Selecione --',
);?>

0

#3 User is offline   bia 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 17-January 13

Posted 21 February 2013 - 09:53 PM

View PostGustavo Andrade, on 21 February 2013 - 08:03 PM, said:

Você pode usar um campo select mesmo, tipo:

<?php
$autor= CHtml::listData(Autor::model()->findAll(), 'id_autor', 'nome_autor');
$options = array(
'tabindex' => '0',
'empty' => '-- Selecione --',
);?>




O problema é se possuírem vários autores
quero fazer um campo de busca que você digita
o nome do autor ou parte do nome dele,e o autor aparece em uma tabela
"Só sei que nada sei..."
0

#4 User is offline   ricardo_rm 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 47
  • Joined: 16-January 12

Posted 22 February 2013 - 06:20 AM

View Postbia, on 21 February 2013 - 09:53 PM, said:

O problema é se possuírem vários autores
quero fazer um campo de busca que você digita
o nome do autor ou parte do nome dele,e o autor aparece em uma tabela

Olá bia, tudo bem?

Então não sei se é exatamente o que você quer, mas você pode ter uma busca com autocomplete, assim:

<?php 
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
						'id'=>'autor',
						'name'=>'autor',
						'source'=>$this->createUrl('ator/pesquisaator'),
						'htmlOptions'=>array(
						),
					)); 
?>


No caso source será o controller/action usado para buscar o termo digitado.

Dai no seu controlador, você recupera o valor digitado e utiliza algum método para fazer a busca.

public function actionPesquisaator()
	{
		if(isset($_GET['term'])&&($keyword=trim($_GET['term']))!=='')
		{
			$suggest=Ator::model()->pesquisaAtor($keyword);
			echo CJSON::encode($suggest);
		}
	}


era isso que você precisava?
0

#5 User is offline   bia 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 17-January 13

Posted 22 February 2013 - 11:18 AM

View Postricardo_rm, on 22 February 2013 - 06:20 AM, said:

Olá bia, tudo bem?

Então não sei se é exatamente o que você quer, mas você pode ter uma busca com autocomplete, assim:

<?php 
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
						'id'=>'autor',
						'name'=>'autor',
						'source'=>$this->createUrl('ator/pesquisaator'),
						'htmlOptions'=>array(
						),
					)); 
?>


No caso source será o controller/action usado para buscar o termo digitado.

Dai no seu controlador, você recupera o valor digitado e utiliza algum método para fazer a busca.

public function actionPesquisaator()
	{
		if(isset($_GET['term'])&&($keyword=trim($_GET['term']))!=='')
		{
			$suggest=Ator::model()->pesquisaAtor($keyword);
			echo CJSON::encode($suggest);
		}
	}


era isso que você precisava?




Ficaria assim ?

<?php 
$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
'id'=>'idAutores',
'name'=>'nome',
'source'=>$this->createUrl('AutoresController/pesquisaAtor'),
'htmlOptions'=>array(
),
)); 
?>


</div>



public function actionPesquisaAtor()
{
if(isset($_GET['term'])&&($keyword=trim($_GET['term']))!=='')
{
$suggest=Autores::model()->pesquisaAtor($keyword);
echo CJSON::encode($suggest);
}
}



lembrando que quero buscar o autor no form do view material
sendo que autor é outro view
"Só sei que nada sei..."
0

#6 User is offline   ricardo_rm 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 47
  • Joined: 16-January 12

Posted 22 February 2013 - 11:44 AM

isso mesmo, não há problemas .....

o que você poderia fazer pra ficar mais legal é o seguinte:

1 - faça esse autocomplete dessa forma, só armazenando o nome ...
2 - quando o nome for selecionado ele pode preencher uma input do tipo "hidden" com o id do autor, dessa forma você só recupera esse campo ....

Quando comecei com Yii encontrei uns exemplos legais de widgets no site abaixo, inclusive tem esse de autocomplete, ve se te ajuda:

http://www.eha.ee/la...ew=autocomplete

isso que falei seria parecido com o terceiro exemplo do site ...
0

#7 User is offline   bia 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 17-January 13

Posted 22 February 2013 - 11:57 AM

View Postricardo_rm, on 22 February 2013 - 11:44 AM, said:

isso mesmo, não há problemas .....

o que você poderia fazer pra ficar mais legal é o seguinte:

1 - faça esse autocomplete dessa forma, só armazenando o nome ...
2 - quando o nome for selecionado ele pode preencher uma input do tipo "hidden" com o id do autor, dessa forma você só recupera esse campo ....

Quando comecei com Yii encontrei uns exemplos legais de widgets no site abaixo, inclusive tem esse de autocomplete, ve se te ajuda:

http://www.eha.ee/la...ew=autocomplete

isso que falei seria parecido com o terceiro exemplo do site ...


fiz exatamente como postei anteriormente e não deu certo
"Só sei que nada sei..."
0

#8 User is offline   ricardo_rm 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 47
  • Joined: 16-January 12

Posted 22 February 2013 - 12:50 PM

Bia, fiz alguns ajustes aqui e está funcionando tente ai ....

View:
<?php 
		$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
			'id'=>'idAutores',
			'name'=>'nome',
			'source'=>$this->createUrl('autores/pesquisaAutores'),
			'htmlOptions'=>array(),
		)); 
?>


AutoresController - adicionar a seguinte action:

public function actionPesquisaAutores(){
	
	if(isset($_GET['term'])&&($keyword=trim($_GET['term']))!==''){
		$pesquisa = Tag::model()->getAutores($keyword);
		echo CJSON::encode($pesquisa);
	}
}


Autores(Model) - adicionar o seguinte método:

public function getAutores($keyword){
		
	$retorno = array();
		
	$autores = array(
		'Marcelo'=>'Marcelo',
		'Maria'=>'Maria',
		'Pedro'=>'Pedro',
		'Antonio'=>'Antonio'
	);
		
	foreach($autores as $indice=>$conteudo){
		if(strpos($indice, $keyword) !== false){
				$retorno[] = utf8_encode($conteudo);
		}
	}
		
	return $retorno;
}


A única coisa que você terá que ajustar é o método getAutores para que ele busque o resultado no banco. No meu caso fiz com uma array apenas para lhe mostrar ;)
0

#9 User is offline   bia 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 17-January 13

Posted 22 February 2013 - 01:53 PM

View Postricardo_rm, on 22 February 2013 - 12:50 PM, said:

Bia, fiz alguns ajustes aqui e está funcionando tente ai ....

View:
<?php 
		$this->widget('zii.widgets.jui.CJuiAutoComplete', array(
			'id'=>'idAutores',
			'name'=>'nome',
			'source'=>$this->createUrl('autores/pesquisaAutores'),
			'htmlOptions'=>array(),
		)); 
?>


AutoresController - adicionar a seguinte action:

public function actionPesquisaAutores(){
	
	if(isset($_GET['term'])&&($keyword=trim($_GET['term']))!==''){
		$pesquisa = Tag::model()->getAutores($keyword);
		echo CJSON::encode($pesquisa);
	}
}


Autores(Model) - adicionar o seguinte método:

public function getAutores($keyword){
		
	$retorno = array();
		
	$autores = array(
		'Marcelo'=>'Marcelo',
		'Maria'=>'Maria',
		'Pedro'=>'Pedro',
		'Antonio'=>'Antonio'
	);
		
	foreach($autores as $indice=>$conteudo){
		if(strpos($indice, $keyword) !== false){
				$retorno[] = utf8_encode($conteudo);
		}
	}
		
	return $retorno;
}


A única coisa que você terá que ajustar é o método getAutores para que ele busque o resultado no banco. No meu caso fiz com uma array apenas para lhe mostrar ;)


Obrigada, mas uma dúvida esse View vai ficar no :
C:\wamp\www\biblioteca\protected\views\autores\view ??
"Só sei que nada sei..."
0

#10 User is offline   ricardo_rm 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 47
  • Joined: 16-January 12

Posted 22 February 2013 - 02:01 PM

Funcionou? rs ...

Então, na verdade, aquele trecho pode ser inserido em qualquer view, inclusive na view que contem o formulário responsável pelo seu cadastro de livros ...
0

#11 User is offline   bia 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 17-January 13

Posted 22 February 2013 - 02:59 PM

View Postricardo_rm, on 22 February 2013 - 02:01 PM, said:

Funcionou? rs ...

Então, na verdade, aquele trecho pode ser inserido em qualquer view, inclusive na view que contem o formulário responsável pelo seu cadastro de livros ...


Ops não funcionou, desculpa minha ignorância sou iniciante em php e no Yii,
esse : 'id'=>'idAutores', se refere ao idAutores da minha tabela autores
'name'=>'nome', e o name ao nome do autor da tabela??
"Só sei que nada sei..."
0

#12 User is offline   ricardo_rm 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 47
  • Joined: 16-January 12

Posted 25 February 2013 - 06:29 AM

View Postbia, on 22 February 2013 - 02:59 PM, said:

Ops não funcionou, desculpa minha ignorância sou iniciante em php e no Yii,
esse : 'id'=>'idAutores', se refere ao idAutores da minha tabela autores
'name'=>'nome', e o name ao nome do autor da tabela??


relaxa, todos já passamos por isso rs ... esses atributos definem o name e o id do input, html mesmo, não tem nada a ver com a tabela ...

Então, mas você fez isso que falei e que erro aparaeceu? se possivel ativa o debug no arquivo index.php:

defined('YII_DEBUG') or define('YII_DEBUG',true);

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