Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!!
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....
Foreach em Smarty
{foreach from=$variavel item="ab"}
{b.name}
{/foreach}
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
Testou a que eu falei ?
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?
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}
>
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...
verifique o que seu array esta devolvendo
>
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..
$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
>
$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;
}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
>
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..
Pra tu ve como você nao prestou atençao, em um é nAme e o outro é nOme
>
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..
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}
Ok, e mesmo depois de ter colocado os campos certos, o MESMO erro estar acontecendo... ?
Qual o erro ?
>
Qual o erro ?
olha, fiz dessa forma agora...
aqui está 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);
$dados_array[$pk];
$dados_array[$nome];
$dados_array[$telefone];
$dados_array[$email_predio];
}
meu smarty
$smarty = new Smarty();
$smarty->assign('dados_array', $dados_array);
$smarty->display('p_condominio.tpl');
e para exibir eles
{foreach from=$dados_array item="valor"}
{$valor.email_predio}
{$valor.telefone}
{$valor.pk}
{$valor.nome}
{/foreach}
ele está puxando, só que o primeiro caracter de cada elemento...
assim:
1 1 1 1 R R R R a a a a r r r r
no banco está cadastro assim:
15
Robson
asd
robson@sasdelli....
como tenho três cadastros, ele repete tudo isso.. entendeu?
Tenta recuperar em PHP esses valores e ve o que eles te retornam
>
Tenta recuperar em PHP esses valores e ve o que eles te retornam
então,
fiz assim para exibir eles em php..
echo $dados_array[$pk]."<br />";
echo $dados_array[$nome]."<br />";
echo $dados_array[$telefone]."<br />";
echo $dados_array[$email_predio]."<br />";
echo "<hr />";
só dei um echo em cada variavel do meu array, e retornou normalmente.. assim:
13
Robson Sasdelli
asd
robson@sasdelliinformatica.com.br
------------------------------------
15
Robson Robson
asd
robson@sasdelliinformatica.com.br
sem problemas nenhum...
Pessoal, consegui aqui.. vou postar a solução para nao ficar um post sem fim beleza?
o erro de não exibir os dados inteiros e somente a primeira letra estava na motagem do array.
estava montando ele assim:
$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];
ai montei assim:
$dados_array[] = array('pk' => $pk,
'nome' => $nome,
'telefone' => $telefone,
'email_predio' => $email_predio);
passei os arquivos via Smarty assim:
$smarty = new Smarty();
$smarty->assign('dados_array', $dados_array);
$smarty->display('p_condominio.tpl');
e recuperei assim
{foreach from=$dados_array item="valor"}
{$valor.pk} <br />
{$valor.nome} <br />
{$valor.email_predio} <br />
{$valor.telefone} <br />
<hr>
{/foreach}
ai ele me traz assim:
13
Robson Sasdelli
robson@sasdelliinformatica.com.br
asd
------------------------
15
Robson Robson
robson@sasdelliinformatica.com.br
asd
a vantagem é que agora posso trabalhar com aparência sem problemas.
Bom é isso pessoal, hoje foi um dia loco, mais deu tudo certo..
valew aii para quem ajudou postando..
e gremio10 obrigado pela paciência...
Até,
abraços!
>
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}
Cara,
Desculpe a demora na resposta. Não tive tempo de ver antes.
Eu me enganei no exemplo. O que te passei é do section e não do foreach.
Tenta utilizar como acima, Mas muda o .tpl:
{section name=i loop=$dados_array}
{$dados_array[i].nome}
{/section}
Primeiro mude o while:
while ($dados = mysql_fetch_array($busca_query)) {
Passe os dados dessa forma:
E o foreach deve ser assim:
{foreach name=i loop=$dados_array}
{$dados_array[i].nome}
{/foreach}