Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Me deparei com o seguinte impasse aqui no trabalho e sei que tem gente aqui que pode me ajudar!
Só uma obs: Eu entrei no lugar do cara que começou a desenvolver no trabalho. Estão pedindo mudanças em alguns detalhes, e eu já peguei esse "pepino" rsrs
Tenho um arquivo em php que estou fazendo uma lista de nomes cadastrados e jogando num select. Ela está funcionando perfeitamente na pag .php.
aqui vai o código:
$pdo = new PDO("mysql:host=localhost; dbname=*********", "root", "");
$stm = $pdo->prepare("select * from ******** order by ***** asc");
$stm->execute();
$nlinhas=$stm->rowCount();
if ($nlinhas==0) {
echo "<option>Nenhum</option>";
}
else
{ echo "Aqui <select value='destinatario'>";
while ($row =$stm->fetch())
{
$id[] = $row['id'];
$nome[] = $row['loginColaborador'];
echo "<option value='{$id[$contar]}'>{$nome[$contar++]}</option> ";
}
echo "</select>";
}
Depois de ter feito o array no arquivo php eu mando esses dados para o arquivo .tpl da seguinte forma. Esta parte tbm é na pag .php
Exemplo:
$smarty->assign('destinatario',$destinatario);
$smarty->display("despacho.tpl");
Eu pensei em criar uma classe normal e chamar a lista no .tpl. Mas o problema é q nao da pra chamar o php lá. No arquivo .tpl, eu chamo assim:
{$destinatario}
Como eu faço pra chamar esse select no arquivo .tpl?
Cara, no .php, vc deve somente fazer a consulta e popular o array.
No .tpl, vc verifica o valor do array, para iterar no template com {foreach} por exemplo
>
O smarty ta ai para ajudar vc a separar o php do html, acho melhor fazer desse jeito:
php
$pdo = new PDO("mysql:host=localhost; dbname=*********", "root", "");
$stm = $pdo->prepare("select * from ******** order by ***** asc");
$stm->execute();
$nlinhas=$stm->rowCount();
$destinatarios =$stm->fetchAll(); //pega todas a linhas da consulta.
$smarty->assign('destinatarios', $destinatarios);
$smarty->display('arquivo.tpl');
tpl
<select name="destinatarios">
<option value="">selecione</option>
{foreach $destinatarios as $item}
<option value="{$item.id}">{$item.descricao}</option>
{/foreach}
</select>
Eita, quase ao mesmo tempo!
caramba hahahah
putz, eu vou ter q estudar muuuuito isso.
agora encontrei um outro erro:
Ta dando indefinido dentro do select e dizendo q é no arquivo .file.tlp.php
esse código aqui:
<b>Para:</b> <select name="destinatario">
<option value="">selecione</option>
<?php $_smarty_tpl->tpl_vars['item'] = new Smarty_Variable; $_smarty_tpl->tpl_vars['item']->_loop = false;
$_from = $_smarty_tpl->tpl_vars['destinatario']->value; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array');}
foreach ($_from as $_smarty_tpl->tpl_vars['item']->key => $_smarty_tpl->tpl_vars['item']->value){
$_smarty_tpl->tpl_vars['item']->_loop = true;
?>
<option value="<?php echo $_smarty_tpl->tpl_vars['item']->value['id'];?>
"><?php echo $_smarty_tpl->tpl_vars['item']->value['descricao'];?>
</option>
<?php } ?>
</select>
Exatamente nessa linha aqui
<?php echo $_smarty_tpl->tpl_vars['item']->value['descricao'];?>Acho que você não entendeu o que o pessoal disse anteriormente.
Smarty serve para separar PHP de HTML. Você está tentando usar lógica e atribuição PHP dentro de um arquivo de template. Todas estas linhas de configuração e preparação de variáveis devem ficar no arquivo.php não no arquivo.tpl.
>
Acho que você não entendeu o que o pessoal disse anteriormente.
Smarty serve para separar PHP de HTML. Você está tentando usar lógica e atribuição PHP dentro de um arquivo de template. Todas estas linhas de configuração e preparação de variáveis devem ficar no arquivo.php não no arquivo.tpl.
entendi, meu brother. a unica coisa q ta rolando, é q ainda nao sei aplicar. queria saber pq ta dando esse erro, dizendo que o select ta vazio...
entendi, meu brother. a unica coisa q ta rolando, é q ainda nao sei aplicar. queria saber pq ta dando esse erro, dizendo que o select ta vazio...
Foi so um exemplo, no lugar de {$item.id} e {$item.descricao} vc coloca o nome da sua chave apos o ponto.
Foi so um exemplo, no lugar de {$item.id} e {$item.descricao} vc coloca o nome da sua chave apos o ponto.
cara, foi mal pela ignorancia. nesse caso, minha chave é o id mesmo?
suas chaves são os indices do array quem vem do banco, na duvida de um print_r no array.
suas chaves são os indices do array quem vem do banco, na duvida de um print_r no array.
Meu brother, apareceu aqui. Entendi!!! agora só ver como inserir isso no banco!obrigado pela paciencia!!!!
O smarty ta ai para ajudar vc a separar o php do html, acho melhor fazer desse jeito:
php
$destinatarios =$stm->fetchAll(); //pega todas a linhas da consulta.tpl
{foreach $destinatarios as $item} <option value="{$item.id}">{$item.descricao}</option> {/foreach} </select>