Mostrando as assinaturas do livro de visitas
Código para mostrar as assinaturas que nosso livro de visitas tenha registrado.
Por Miguel Angel Alvarez - Tradução de JML
Recordando a explicação geral deste exercício, lembraremos que a página do livro de visitas tinha dois grandes blocos, que se decidiam comprovando se se recebe ou não algo pelo formulário. Para isso podemos utilizar um enunciado if como este:
if (!$HTTP_POST_VARS)
No caso de não receber dados pelo formulário este if se avaliaria com resultado positivo. Preste atenção na negociação para entender a correta avaliação do if.
Neste capítulo vamos relatar a parte do if na qual não se recebem dados por um formulário, ou seja, a avaliação positiva do if.
Extrair as últimas assinaturas
Neste caso, o primeiro a realizar é a extração das últimas assinaturas da base de dados. Para isso, devemos construir uma sentença SQL que selecione da base de dados tais assinaturas.
//se não recebo nada pelo formulário de assinatura do livro, mostro as assinaturas do livro
//construo a sentença SQL
$ssql = "SELECT * FROM livrovisitas_php";
//se mostrarão as últimas assinaturas, embora haja um link na parte debaixo que se poderá clicar para ver mais assinaturas.
if (isset($_GET["vermais"]))
$ssql .= " where id_livrovisitas_php<=" . $vermais;
//ordeno a sentença e limito o número de resultados
$ssql .= " ORDER BY id_livrovisitas_php desc limit 11";
//tomo o jogo de resultados
$resultid = mysql_query($ssql,$conn);
Esta sentença se constrói em várias partes. Primeiro, cria-se a primeira parte do select e logo outras partes mais complicadas de ver.
Será necessário um corte para entender a parte na qual se avalia se existe ou não a variável vermais, recebida por URL ($_GET["vermais"]). Isto vem porque na parte debaixo das assinaturas, no caso de existirem mais assinaturas das quais se tenham mostrado, se colocaria um link para ver mais assinaturas, que conteria uma referência a este próprio livro de visitas com a variável vermais igual ao identificador da próxima assinatura que tenha que se visualizar. Algo como livrovisitas/index.php?vermais=960
Se havíamos recebido a variável vermais, selecionamos somente as assinaturas que tenham o identificador menor ou igual que o índice recebido em vermais.
AS assinaturas devem ser vistas em ordem decrescente, para que se mostrem primeiro as últimas assinaturas inseridas. É o que se indica na parte que põem ORDER BY. Ademais se devem selecionar somente 10 assinaturas por página, embora na prática selecionaremos 11, apesar da última não se mostrar, só se extrai para saber o índice que tem e utiliza-lo para construir o link vermais, no caso de que existam outras assinaturas por visualizar.
Na última linha se executa a sentença SQL para extrair os dados.
Loop While
Realiza-se a seguir um loop para percorrer os resultados. É um simples percorrido por um conjunto de resultados de uma consulta a base de dados. Tem a particularidade de que se contam os resultados mostrados para, no caso de que se tenha mostrado já 10, não seguir mostrando mais.
while (($damefila=mysql_fetch_object($resultid)) && ($num_filas<10))
{
?>
<table align="center" width="100%" cellspacing="2" cellpadding="0" border="0">
<tr>
<td valign="top" class=fuente8><b>
<? //se o visitante não introduziu nome mostro como nome "Anônimo"
if ($damefila->nome == "-"){
"Anônimo";
}elseif ($damefila->email != "-") {
echo '<a href="mailto:' . $damefila->email . '">' . $damefila->nome . '</a>';
}else{
echo $damefila->nome;
}
?></b>:<br>
</td></tr>
<tr><td bgcolor=cccccc colspan="2"><img src="images/pixeltrans.gif" width=1 height=1 border="0"></td></tr>
<td class=fuente8 valign="top">
<?echo strip_tags($damefila->comentario)?>
<td valign="top" align="right" nowrap class=fuente8>
Valoracao: <?echo $damefila->valoracao?>
</td>
</tr>
</table>
<br>
<?
$num_filas++;
} //termina o loop while
Os resultados se mostram em uma tabela, por isso pode ficar um pouco confuso este código no meio de tantas etiquetas HTML, mas não foi revisto nenhuma complicação especial.
Mostrar o link de vermais
Ao final da página, se havia mais assinaturas por ver, há que mostrar o link de vermais. Para isso, simplesmente avaliamos a variável que contém o ponteiro ao registro atual. Se o loop anterior finalizou porque tal ponteiro havia chegado ao da lista de valores, então é que não há mais assinaturas para ver. Se ao contrário, o loop finalizou e ainda faltava alguma assinatura no ponteiro é que há que mostrar o link de vermais e colocar o índice da assinatura que seria visualizada a seguir.
//se faltam mais valorações no conjunto de resultados, mostro o link de "Ver mais"
if ($damefila)
echo "<div align=center><b><a href=\"index.php?vermais=$damefila->id_lirovisitas_php\">Ver mais mensagem</a></b></div><br>";
Mostrar o formulário de assinatura
Por último, deveria ser mostrado o formulário da assinatura. Nós o separamos em um diretório a parte para que fique tudo mais organizado. No código de nosso exercício nesta seção, o único que encontraremos será o include com o arquivo HTML que contém o formulário.
include ("formul_mensagem.html");