Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Dúvida com PHP

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Duvida Dúvida com PHP

    E aí manolos hackers, de boa na lagoa? Bom, há algum tempo venho estudando o PHP e venho tendo resultados satisfatórios (pelo menos para mim, rs). O problema é que ninguém é super dotado, então vão surgindo dúvidas, simples que seja, porém uma dúvida.
    Estou criando criando um fórum, mas não consigo fazer a parte do comentário. Já fiz um sistema de notícias, e muitos me disseram que era "parecido", porém não é. O form que faz a inserção do comentário é esse:

    Código HTML:
    <form name="comentar" method="post" enctype="multipart/form-data" action="">
    <textarea cols="40" rows="10" onfocus="limparPadrao(this);" onblur="escreverPadrao(this);" name="comentario">Escreva seu comentário aqui</textarea>
    <input type="hidden" name="coment" value="ok" />
    <br />
    <input type="submit" name="enviar" value="Enviar" />
    </form>
    E o script em PHP que faz a função:


    Código PHP:
    <?php
    if(isset($_POST['coment']) && $_POST['enviar'] == 'ok'){
                                    
        
    $comentario $_POST['comentario'];
        
    $usuario $_SESSION['MM_Username'];
                                    
        
    $inseri_comentario mysql_query(sprintf('INSERT INTO comentarios (comentario, usuario, local) VALUES (\'%s\', \'%s\', \'%u\')'$comentario$_GET['id']))
                             or die (
    mysql_error());
                                
        if(empty(
    $comentario)){
            echo 
    '<p style="padding:5px; color:#F00;">Preencha o campo comentário.</p>';
        }elseif(
    $inseri_comentario >= '1'){
            echo 
    '<p style="padding:5px; color:#093; font-weight:bold;">Comentário inserido com sucesso!</p>';
        }else{
            echo 
    '<p style="padding:5px; color:#F00;">Erro ao enviar comentário.</p>';
                                    
        }
    }
    ?>
    Quando envio, ele não insere nada e não aponta nenhum erro. Poderiam retirar está minha dúvida? Acho que é simples, mas não saber faz parte.
    Similar Threads

  • Font Size
    #2
    Tenta assim..

    Código:
    <?php 
    if(isset($_POST['comentario']) && $_POST['enviar'] == 'ok'){ 
                                     
        $comentario = $_POST['comentario']; 
        $usuario = $_SESSION['MM_Username']; 
                                     
        $inseri_comentario = "INSERT INTO comentarios (comentario, usuario) VALUES ('$comentario', '$usuario')";
                                 
        if(mysql_query($inseri_comentario)){ 
            echo '<p style="padding:5px; color:#093; font-weight:bold;">Comentário inserido com sucesso!</p>'; 
        }else{ 
            echo '<p style="padding:5px; color:#F00;">Erro ao enviar comentário.</p>';                                  
        } 
    }else{
    	echo '<p style="padding:5px; color:#F00;">Preencha o campo comentário.</p>';	
    }
    ?>
    Você tava puxando uma $_GET["id"], no caso essa variável não era a variavel $usuario que voce declarou com o valor da $_SESSION['MM_Username'] ??

    Eu não testei o código, mas da uma testada ai e ve se funciona...

    Comment


    • Font Size
      #3
      Eu não testei o seu código mas acho que o erro está no IF. Na segunda condição, onde tem $_POST['enviar'] == 'ok'. O botão do formulário tem valor de 'Enviar' e não 'ok', dessa forma a condição nunca é válida e cairá sempre no ELSE. Tente mudar o valor do Botão no form para ok ou mude o statement do IF para 'enviar'.

      Comment


      • Font Size
        #4
        Além disso, há outros acertos que vc pode fazer (nem vou entrar no mérito de prepared statements). Se voce está usando formulário em modo POST, não deveria estar buscando um GET[id]. Acho que essa variável não existe já que a action do form está vazia. Geralmente ou é POST ou é GET. Até existe forma de mandar as duas, mas não recomendo, em sistemas grandes, isso vira uma zona. Voce pode usar $_REQUEST, mas também não recomendo, pois iria criar um buraco de segurança enorme para o sistema.


        A função sprintf que vc está usando no insert da base, tem 3 posições e vc só preenche as duas primeiras, falta a variável para o 'local'.

        Sempre programe com a assertiva error_reporting E_ALL no PHP, alguns erros podem não estar aparecendo por esse motivo.

        Comment

        X
        Working...
        X