[Ajuda] - PHP livro de visitas(ver mais comentarios)

mazinhu

Power Member
Boas pessoal, ando a uns dias e não arranjo forma de dar a volta a esse problema, acrescento comentários ao livro e apresento um certo numero de comentários por pagina. Sempre que quero ver os comentários mais antigos tenho um link que mostra-me esses comentários sempre com a limitação por página.
O Problema é, quando quero ver os mais antigos e clico no link, aparece sempre uma página em branco.
Tenho esse codigo.
Exibir.php
PHP:
<body>
        <?php
        //conexao BD
?>
       <?php //exibir
        if (!$HTTP_POST_VARS) 
       //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 5";

//tomo o jogo de resultados
$resultid = mysql_query($ssql); 
while (($damefila=mysql_fetch_object($resultid)) && ($num_filas<4))
{
    ?>
    <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">
       <?php echo strip_tags($damefila->comentario)?>
       <td valign="top" align="right" nowrap class=fuente8>
       Classificação: <?php echo $damefila->valoracao?>
    </td>
    </tr>
    </table>

    <br>
    <?
    $num_filas++; echo $vermais;
} //termina o loop while 
//se faltam mais valorações no conjunto de resultados, mostro o link de "Ver mais"

if ($damefila)
    
    echo "<div align=center><b><a href=\"exibir.php?vermais=$damefila->id_livrovisitas_php\">Ver mais mensagem</a></b></div><br>"; echo $vermais;
     ?>
</body>
visitas.php
PHP:
<?php
        //conexao BD

?>
 
    
    
<?
//Cortamos as cadeias muito longas
$nome=substr($nome,0,150);
$email=substr($email,0,80); 
//eliminamos as etiquetas HTML e PHP das cadeias de texto
$nome = strip_tags($_POST["nome"]);
$email = strip_tags($_POST["email"]);
$comentario = strip_tags($_POST["comentario"]); 

if (strlen($comentario)==0)
{
?>
<script type='text/javascript'>
    alert('Insira o comentario');
</script> 
<?
header('Location: formul_mensagem.html');
}
//se algum dos campos falta prefiro colocar um travessão ou "sem comentários"
if (!$nome)$nome="Anônimo";
if (!$email) $email="-";
if (!$comentario) { echo "";} else { 
//Geramos a ssql e inserimos o registro
$ssql = "INSERT INTO livrovisitas_php (nome,email,valoracao,comentario) VALUES ('" . $nome . "','" . $email . "'," . $_POST["valoracao"] . ",'" . $comentario . "')";
mysql_query($ssql); 
header('Location: exibir.php');}
?>
formul_mensagem.html
Código:
<body>
<form name=livrovisitas action="visitas.php" method="post">
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
    <td class=titcol> <b>Assine o Livro de Visitas</b></td>
</tr>
<tr>
    <td class=fuente8> Deixe sua mensagem no livro de visitas e dê sua opinião do site
    <br>
    <br>
    </td>
</tr>
<tr>
    <td>
    <table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tr>
       <td class=fuente8 align="center">
       Nome
       <br>
       <input type="Text" name="nome" size="20" maxlength="150">
       <br>
       <br>
       Email
       <br>
       <input type="Text" name="email" size="20" maxlength="100">
       <br>
       <br>
       Classificação
       <br>
       <select name="valoracao">
       <option value=1>Muito Fraco
       <option value=2>Fraco
       <option value=3 selected>Regular
       <option value=4>Bom
       <option value=5>Muito Bom
       </select>
       </td>
       <td ALIGN=CENTER class=fonte8 valign="middle">
          Comentarios*:
          <br>
          <textarea name="comentario" cols="30" rows="7"></textarea>
       </td>
    </tr>
    <tr>
       <td colspan=2 align=center class=fonte8>
       <br>
       <input type="submit" value=" Enviar a assinatura ao livro de visitas ">
       </td>
    </tr>
    <tr>
       <td colspan=2 align=center class=fonte8>
       <br>
       *Campos Obrigatorios
       </td>
    </tr>
    </table>
    </td>
</tr>
</table>
</form> 
</body>
Qualquer ajuda e' bem vinda :D
 
O Problema é, quando quero ver os mais antigos e clico no link, aparece sempre uma página em branco.

A que te referes com "página em branco"? A página onde deviam aparecer os comentários não tem nada ou abre uma página extra em branco para além da que tem os comentários?

Código:
exibir.php?vermais=$damefila->id_livrovisitas_php

Qual é a função do "->" no meio do URL?
Para teres o valor da var vermais que estás a passar pelo URL não era suposto usares algo tipo $_GET["vermais"];?
 
Simplesmente passa o valor da variavel $vermais, e no sql ($ssql .= " where id_livrovisitas_php = <=" . $vermais;)esse valor não sofre alteraçao para apresentar os comentarios de valor de ver mais desc limit 5 ( no caso os ultimos 4 adicionados)

Código:
exibir.php?vermais=$damefila->id_livrovisitas_php
Qual é a função do "->" no meio do URL?
Para teres o valor da var vermais que estás a passar pelo URL não era suposto usares algo tipo $_GET["vermais"];?
o '->' indica qual o campo da base de dados deve ir buscar o valor.
Esse codigo e' um script que encontrei, algumas coisas nao estavam bem e eu já corrigi.
quando clico no ver mais tenho acesso ao valor da variavel.

Formulario
Exibir Comentarios

Edit: O $_GET["vermais"] esta no exibir .php (if (isset($_GET["vermais"])) )
 
Última edição:
Não faço ideia então... já testaste um simples echo nessa página a ver se ele está a ler o php?
Ou mesmo tentar o url sem usar a var exibir.php?vermais=5 (não sei que valor ias ter na var).
 
Esta instrução não me parece ser válida :confused:
PHP:
$ssql .= " where id_livrovisitas_php = <=" . $vermais
não será só <= ?

Altera esta linha
PHP:
$resultid = mysql_query($ssql);
para isto
PHP:
$resultid = mysql_query($ssql) or die (mysql_error());
e verifica se exibe algum erro
 
Não faço ideia então... já testaste um simples echo nessa página a ver se ele está a ler o php?
Ou mesmo tentar o url sem usar a var exibir.php?vermais=5 (não sei que valor ias ter na var).


Ja tentei isso, o echo apresenta o valor que esta no link.
se voce viu o exemplo la no link do exibir o ver mais ganha valor.


Esta instrução não me parece ser válida :confused:
PHP:
$ssql .= " where id_livrovisitas_php = <=" . $vermais
não será só <= ?

Altera esta linha
PHP:
$resultid = mysql_query($ssql);
para isto
PHP:
$resultid = mysql_query($ssql) or die (mysql_error());
e verifica se exibe algum erro

Já apresenta os valore =D

O erro era mesmo esse "= <=" .

Vou agora fazer uma revisão geral a isso e ver se esta tudo ok.
Obrigado pessoal
 
Última edição:
Ja tentei isso, o echo apresenta o valor que esta no link.
se voce viu o exemplo la no link do exibir o ver mais ganha valor.


Nesse momento, não sei o porque, o exibir.php deixou de me mostrar qualquer valor.

Adiciona esta linha logo no inicio do ficheiro php

PHP:
<?php
error_reporting(E_ALL);
?>

Neste código não te falta 1 echo?
PHP:
if ($damefila->nome == "-"){
       "Anônimo";
 
Adiciona esta linha logo no inicio do ficheiro php

PHP:
<?php
error_reporting(E_ALL);?>
Isso aprensenta qual o erro não é algo assim?

?>[/PHP]Neste código não te falta 1 echo?
PHP:
if ($damefila->nome == "-"){
       "Anônimo";
Não, aqui somente vai definir se existe o nome na base de dados se não existe define que será escrito Anônimo.

Problema resolvido =D
Obrigado pela ajuda pessoal
 
Back
Topo