1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

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

Discussão em 'Web Development' iniciada por mazinhu, 27 de Abril de 2009. (Respostas: 10; Visualizações: 1215)

  1. mazinhu

    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
     
  2. mazinhu

    mazinhu Power Member

  3. OldMan

    OldMan Power Member

    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"];?
     
  4. mazinhu

    mazinhu Power Member

    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)

    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: 29 de Abril de 2009
  5. OldMan

    OldMan Power Member

    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).
     
  6. p3dro

    p3dro Power Member

    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
     
  7. mazinhu

    mazinhu Power Member


    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.


    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: 29 de Abril de 2009
  8. p3dro

    p3dro Power Member

    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";
     
  9. mazinhu

    mazinhu Power Member

    Isso aprensenta qual o erro não é algo assim?

    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
     
  10. p3dro

    p3dro Power Member

    Sim, mostra todos os erros.

    Pois, daí eu te ter perguntado se não faltava 1 echo :p

    Qual era então o problema e como é que o resolveste?
     
  11. mazinhu

    mazinhu Power Member

    Errado
    PHP:
    $ssql .= " where id_livrovisitas_php = <=" $vermais 
    Certo
    PHP:
    $ssql .= " where id_livrovisitas_php <=" $vermais 
    Era esse pequeno descuido xD
    tinha um = ai a mais.
     

Partilhar esta Página