Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sasdelli Informática

[Resolvido] Dados de Array, para o Smarty

Recommended Posts

Bom dia pessoal, estou eu aqui denovo.. heheh

 

Seguinte, eu estou fazendo uma consulta no banco através de um formulário assim:

 

$nome_condominio	 =  $_POST['nome_condominio'];

$busca_query = mysql_query("SELECT * FROM tb_cad_cli_condominio WHERE nome_predio LIKE '%$nome_condominio%'")or die(mysql_error());//faz a busca com as palavras enviadas

 

ai fiz um laço para trazer todos os resultados aproximados que a consulta retornou... e em seguida fiz um array para conseguir trabalhar com esses dados dentro do while mesmo.

 

 

 

while ($dados = mysql_fetch_array($busca_query)) {
	$pk	 			=	 $dados['pk_cli_condominio']; 
    $nome   		=	 $dados['nome_predio'];
	$telefone		=	 $dados['telefone_predio'];
	$email_predio	=	 $dados['email_predio'];	

	// Criando array para passar ao smarty com os dados da consulta	
	$dados_array = array($pk 	=> $pk,
						  $nome => $nome,
						  $telefone => $telefone, 
						  $email_predio => $email_predio);

							$dados_array[$pk];
							$dados_array[$nome];
							$dados_array[$telefone];
							$dados_array[$email_predio];
}

 

Se eu der um ECHO $dados_array[$pk] por exemplo, ele me traz todos os resultados sem problemas.

 

Só que para conseguir trabalhar com aparencia quero jogar esses dados via smarty mesmo.

 

Estou tentando da seguinte forma:

 

$smarty = new Smarty();

$smarty->assign('dados_array', $dados_array);

   $smarty->display('p_condominio.tpl');

 

só que na página ele me trás sempre esse resultado: 1 R a r

 

e se tento assim:

 

$smarty = new Smarty();

$smarty->assign('nome', $nome);

   $smarty->display('p_condominio.tpl');


 

ele me trás somente "R" ou seja, a primeira letra do nome.

 

o meu foreach na página TPL está assim:

 

   {foreach from=$nome item=valor}
			{$valor.nome}
  {/foreach}  

 

 

alguem pode me dar uma força ai ?

 

Valew pessoa, até mais!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro mude o while:

while ($dados = mysql_fetch_array($busca_query)) {
               $pk = $dados['pk_cli_condominio']; 
               $nome = $dados['nome_predio'];
               $telefone = $dados['telefone_predio'];
               $email_predio = $dados['email_predio'];        

               // Criando array para passar ao smarty com os dados da consulta 
               $dados_array[] = array('pk'        => $pk,
                                'nome' => $nome,
                                'telefone' => $telefone, 
                                'email_predio' => $email_predio);
       }

Passe os dados dessa forma:

       $smarty = new Smarty();
       $smarty->assign('dados_array', $dados_array);
       $smarty->display('p_condominio.tpl');

E o foreach deve ser assim:

 {foreach name=i loop=$dados_array}
    {$dados_array[i].nome}
 {/foreach} 

Compartilhar este post


Link para o post
Compartilhar em outros sites

LEandro, valew pelo post.

 

mais nao deu certo não,

 

fiz assim:

 

mudei o array desta forma que me passou

 

while ($dados = mysql_fetch_array($busca_query)) {
               $pk = $dados['pk_cli_condominio']; 
               $nome = $dados['nome_predio'];
               $telefone = $dados['telefone_predio'];
               $email_predio = $dados['email_predio'];        

               // Criando array para passar ao smarty com os dados da consulta 
               $dados_array[] = array('pk'        => $pk,
                                'nome' => $nome,
                                'telefone' => $telefone, 
                                'email_predio' => $email_predio);
       }

 

ai mandei pro Smarty

  $smarty = new Smarty();
       $smarty->assign('dados_array', $dados_array);
       $smarty->display('p_condominio.tpl');  

 

então fiz o foreach no arquivo p_condominio.tpl

 

    {foreach name=i loop=$dados_array}
    {$dados_array[i].nome}
 {/foreach}  

 

 

e me mandou a seguinte mensagem de erro.. :

 

Fatal error: Smarty error: [in pesq_condominio.tpl line 28]: syntax error: foreach: missing 'from' attribute (Smarty_Compiler.class.php, line 1165) in E:\Servidor\wamp\www\Smag_Inset\biblioteca\smarty\Smarty.class.php on line 1093

 

Obrigadoo, Valew....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, não está dando certo..

 

se eu faço da forma que eu postei primeiro, da aqueles erros de exibição..

 

ai fiz do jeito que o Leandro falou, deu errado...

 

Alguem tem outra solução?

 

abrass

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, eu já fiz o foreach no meu arquivo TPL.

 

assm:

 

{foreach from=$nome item="valor"}

{$nome.nome_predio}

{/foreach}

 

 

só que só esta aparecendo a primeira letra do nome.

 

queria saber como faço pra pegar os dados de um while em php e jogar para o smarty..

 

o coigo ta assim:

 

<?php
include_once "biblioteca/smarty/Smarty.class.php";


$hostdb = "localhost";// Geralmente Localhost
$userdb = "root";//usuário do seu banco de dados
$passdb = "sasdelli";// senha do banco de dados
$tabledb = "sasdelli_control";// tabela do banco de dados

$conecta = mysql_connect($hostdb, $userdb, $passdb) or die (mysql_error());
@mysql_select_db($tabledb, $conecta) or die ("Erro ao conectar com o banco de dados");


    // recuperando os dados do POST
$nome_condominio	 =  $_POST['nome_condominio'];

$busca_query = mysql_query("SELECT * FROM tb_cad_cli_condominio WHERE nome_predio LIKE '%$nome_condominio%'")or die(mysql_error());//faz a busca com as palavras enviadas

// laço para trazer os resultados da pesquisa com o valor aproximado	
while ($dados = mysql_fetch_array($busca_query)) {
               $pk             =        $dados['pk_cli_condominio']; 
          		$nome           =        $dados['nome_predio'];
               $telefone       =        $dados['telefone_predio'];
               $email_predio   =        $dados['email_predio'];        

               // Criando array para passar ao smarty com os dados da consulta 
               $dados_array = array($pk        => $pk,
                                                         $nome => $nome,
                                                         $telefone => $telefone, 
                                                         $email_predio => $email_predio);

                                                               $dados_array[$pk];
                                                               $dados_array[$nome];
                                                               $dados_array[$telefone];
                                                               $dados_array[$email_predio];
       }

$smarty = new Smarty();
    $smarty->assign('nome', $nome);
    $smarty->display('p_condominio.tpl');


?>

 

e no arquivo tpl ta assim

 

 

 {foreach from=$nome item="valor"}
		     {$nome.nome_predio}
		  {/foreach}  

 

 

entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara....

 

{foreach from=$nome item="valor"}

{$nome.nome_predio}

{/foreach}

 

$nome é o array ...

valor é o que tu deve usar, ou seja,

 

{foreach from=$nome item="valor"}

{$valor.nome_predio}

{/foreach}

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara....

 

{foreach from=$nome item="valor"}

{$nome.nome_predio}

{/foreach}

 

$nome é o array ...

valor é o que tu deve usar, ou seja,

 

{foreach from=$nome item="valor"}

{$valor.nome_predio}

{/foreach}

 

 

Você me passou o mesmo código que eu tenho aqui... continou dando o mesmo erro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique o que seu array esta devolvendo

 

no meu array que é esse:

 

 

$dados_array = array($pk => $pk,

$nome => $nome,

$telefone => $telefone,

$email_predio => $email_predio);

 

echo $dados_array[$pk];

echo $dados_array[$nome];

echo $dados_array[$telefone];

echo $dados_array[$email_predio];

 

se eu der um echo em como fiz ali em cima, ele me traz todos os resultados, certinho..

 

lembrando que tudo isso está dentro do while..

Compartilhar este post


Link para o post
Compartilhar em outros sites

$nome é o que vem do codigo php...

 

foreach($nome AS $valor){
  $valor->nome_predio;
}

{foreach from=$nome item="valor"}
   {$valor.nome_predio}
{/foreach}

 

entao não é nome_predio e sim email_predio

 

Tu deve colocar entao

 

{foreach from=$nome item="valor"}
   {$valor.email_predio}
{/foreach}

 

agora deve ir

Compartilhar este post


Link para o post
Compartilhar em outros sites

$nome é o que vem do codigo php...

 

foreach($nome AS $valor){
  $valor->nome_predio;
}

{foreach from=$nome item="valor"}
   {$valor.nome_predio}
{/foreach}

 

entao não é nome_predio e sim email_predio

 

Tu deve colocar entao

 

{foreach from=$nome item="valor"}
   {$valor.email_predio}
{/foreach}

 

agora deve ir

 

 

cara nao entendi a desse

foreach($nome AS $valor){

 

pode me explicar melhor? valeww

$valor->nome_predio;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

o primeiro é so em php, nem eu sei o que fiz, ate por que é diferente, mas o que tu esta fazendo é colocar o nome errado do campo daonde voce quer puxar os dados ... se tu tem um campo chamado name tu tem de fazer assim :

 

{foreach from=$nome item="valor"}
   {$valor.name}
{/foreach}

 

mas voce esta fazendo assim

 

{foreach from=$nome item="valor"}
   {$valor.nome}
{/foreach}

 

é so falta de atençao na hr de montar

Compartilhar este post


Link para o post
Compartilhar em outros sites

o primeiro é so em php, nem eu sei o que fiz, ate por que é diferente, mas o que tu esta fazendo é colocar o nome errado do campo daonde voce quer puxar os dados ... se tu tem um campo chamado name tu tem de fazer assim :

 

{foreach from=$nome item="valor"}
   {$valor.name}
{/foreach}

 

mas voce esta fazendo assim

 

{foreach from=$nome item="valor"}
   {$valor.nome}
{/foreach}

 

é so falta de atençao na hr de montar

 

mais amigo, voce me passou o mesmo código nos dois campos agora.. dê uma olhada.. está do mesmo jeito..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra tu ve como você nao prestou atençao, em um é nAme e o outro é nOme

 

 

Entendi a diferença, ,mais ultilizando qualquer um dos dois, acontece o mesmo bug. aparece somente a primeira letra do nome..

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, tu estava chamando o campo errado, é isso que estou falando

 

<?php
       include_once "biblioteca/smarty/Smarty.class.php";


       $hostdb = "localhost";// Geralmente Localhost
       $userdb = "root";//usuário do seu banco de dados
       $passdb = "sasdelli";// senha do banco de dados
       $tabledb = "sasdelli_control";// tabela do banco de dados

       $conecta = mysql_connect($hostdb, $userdb, $passdb) or die (mysql_error());
       @mysql_select_db($tabledb, $conecta) or die ("Erro ao conectar com o banco de dados");


           // recuperando os dados do POST
       $nome_condominio         =  $_POST['nome_condominio'];

       $busca_query = mysql_query("SELECT * FROM tb_cad_cli_condominio WHERE nome_predio LIKE '%$nome_condominio%'")or die(mysql_error());//faz a busca com as palavras enviadas

       // laço para trazer os resultados da pesquisa com o valor aproximado    
       while ($dados = mysql_fetch_array($busca_query)) {
               $pk             =        $dados['pk_cli_condominio']; 
                       $nome           =        $dados['nome_predio'];
               $telefone       =        $dados['telefone_predio'];
               $email_predio   =        $dados['email_predio'];        

               // Criando array para passar ao smarty com os dados da consulta 
               $dados_array = array($pk        => $pk,
                                                         $nome => $nome,
                                                         $telefone => $telefone, 
                                                         $email_predio => $email_predio);

                                                               $dados_array[$pk];
                                                               $dados_array[$nome];
                                                               $dados_array[$telefone];
                                                               $dados_array[$email_predio];
       }

$smarty = new Smarty();
    $smarty->assign('nome', $nome);
    $smarty->display('p_condominio.tpl');


?>

{foreach from=$nome item="valor"}
   {$valor.email_predio}
   {$valor.telefone}
   {$valor.pk}
   {$valor.nome}
{/foreach}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.