raelgc / template

PHP Template
http://raelcunha.com/template.php
GNU Lesser General Public License v2.1
73 stars 42 forks source link

Buscar vários resultados no banco de dados #22

Closed crowleysbr closed 5 years ago

crowleysbr commented 7 years ago

Olá! Na class de template é mencionado que podemos trazer resultados do banco de dados. Eu fiz um teste criando 5 registros no banco de dados (5 linhas), porém, ao executar a query ele imprime na página apenas 1 registro. Alguém sabe dizer o que se passa?

$sql = mysql_query("SELECT * FROM categorias ORDER BY id DESC LIMIT 0,10") or die(mysql_error()); if(mysql_num_rows($sql)>0) { $row = mysql_fetch_array($sql); while($linha = mysql_fetch_array($sql)){ $tpl->CATEGORY_NAME = $linha['nome']; $tpl->CATEGORY_DESC = substr($linha['desc'],0,125).'...'; } }

no BD:

Linha 1: nome = "Jogos" Linha 2: desc = "Categoria de jogos em geral."

Existem 5 registros diferentes... Ou seja, 5 categorias, mas, somente a de "Jogos" é mostrada.

Valkhan commented 7 years ago

Desculpe a demora mas o feriadão me fez tirar uma praia rs.

Sim, vc pode usar retorno do banco de dados, para tanto vc precisa utilizar os blocos:

No HTML:

<ul>
    <!-- BEGIN CATEGORIAS -->
    <li>{CATEGORY_NAME}</li>
    <!-- END CATEGORIAS -->
</ul>

No PHP

<?php 
while (...) {
$tpl->CATEGORY_NAME = $linha['nome'];
$tpl->block('CATEGORIAS');
}

Ou se preferir usar a minha versão modificada desta classe, tem um método adicional (facilitador) que é o addArray que pode ser usado da seguinte forma:

No HTML:

<ul>
    <!-- BEGIN CATEGORIAS -->
    <li>{NOME}</li>
    <!-- END CATEGORIAS -->
</ul>

No PHP

<?php 

$resultado = $linhas; // array(array('nome'=>'Jogos',...))
$tpl->addArray($resultado,'CATEGORIAS'); // Onde o primeiro argumento é o array e o segundo o nome do bloco

Aproveito para informar que é uma boa prática você não utilizar essas funções do mysql e migrar pro mysqli ou de preferência o PDO que vai te agilizar bastante a vida e vai garantir uma vida útil do seu código por mais tempo visto que o mysql e mysqli estão caminhando para extinção e o mysql_* foi descontinuado na versão 7 do php.