Problem to update database record with ajax

Asked

Viewed 35 times

2

Good night, I’m trying to update the database via ajax, but it’s not working,I have two text area, and update it with update. Before trying without ajax, it was working perfectly, only now that you do not want to catch more... I can no longer identify the error, can help me?

My form and ajax:

            <form method="POST" id="formulario_mensagem">

                <input type="text" name="msg_id" id="msg_id" value="<?php echo $row['msg_id'];  ?>">


                <textarea type="text" name="msg_original" id="msg_original" rows="5">"<?php $st=$row['msg_text']; echo 
                str_replace('+', '<br />', $st);?>"</textarea>

                <textarea type="text" name="msg_nova" id="msg_nova" rows="5" placeholder="Digite a Resposta Aqui"></textarea>

                <button type="submit" onclick="inserir_registo()">Reenviar</button>
            </form>


<script type="text/javascript">
function inserir_registo()
{
    //dados a enviar, vai buscar os valores dos campos que queremos enviar para a BD
    var dadosajax = {
        'msg_id' : $("#msg_id").val(),
        'msg_original' : $("#msg_original").val(),
        'msg_nova' : $("#msg_nova").val()
    };
     pageurl = 'fetch_mensagem.php';
    //para consultar mais opcoes possiveis numa chamada ajax
    //http://api.jquery.com/jQuery.ajax/
    $.ajax({

        //url da pagina
        url:pageurl,
        //parametros a passar
        data: dadosajax,
        //tipo: POST ou GET
        type: 'POST',
        //cache
        cache: false,
        //se ocorrer um erro na chamada ajax, retorna este alerta
        //possiveis erros: pagina nao existe, erro de codigo na pagina, falha de comunicacao/internet, etc etc etc
        error: function(){
            alert('Erro: Ao Enviar Mensagem!');
        },
        //retorna o resultado da pagina para onde enviamos os dados
        success: function(result)
        { 
            //se foi inserido com sucesso
            if($.trim(result) == '1')
            {
                alert("Mensagem enviada com sucesso!");
            }
            //se foi um erro
            else
            {
                alert("Ocorreu um erro ao enviar mensagem!");
            }

        }
    });
}
</script>

My fetch_message.php:

<?php
 include "verifica_sessao.php";
  include "config.php";

      date_default_timezone_set('America/Sao_Paulo');

      $data=date("d/m/Y H:i:s");
      $id = $_POST['msg_id'];
      $texto = $_POST['msg_original'];
      $novo = $_POST['msg_nova'];

//Aqui arrumo o texto e faço o update
      $saida = '';
      $saida .= $id;
      $saida .= '.';
      $saida .= '\n \n';
      $saida .= $texto;
      $saida .= '.';
      $saida .= '\n \n';
      $saida .= $novo;

      $result = $db->prepare("UPDATE mensagens SET msg_text='$saida' WHERE msg_id='$id' AND msg_status=0");
      $result->execute();
       while($row = $result->fetch()){
        if( $result->fetch()){ 
             echo '1';             
                  }
                  else{
                     echo '0'; 
                     }
                }
?>

Before I was using the action and was normal, only now it just stopped...who can help me thank you..

  • vc changed something in your fetch_message.php file?

1 answer

2


Correct your call with ajax like this, test and return me if it is ok. I believe it will already solve your problem:

Change your button: <button type="submit" onclick="inserir_registo()">Reenviar</button> for: <button type="submit" name="enviar" value="enviar" id="enviar">Reenviar</button>

Instead of onClick() let’s call the ajax on submit form. Ok?

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$('#formulario_mensagem').submit(function(e){
    e.preventDefault();

    if($('#enviar').val() == 'Enviando...'){
        return(false);
    }

    $.ajax({
       url: 'fetch_mensagem.php',
       type: 'post',
       dataType: 'html',
       data: {
           'msg_id' : $("#msg_id").val(),
           'msg_original' : $("#msg_original").val(),
           'msg_nova' : $("#msg_nova").val()
       }
    }).done(function(data){
        alert(data);
    });

});
</script>

I let alert(data); so will return you have on your page. Anything just tell me.

  • Thank you very much Leandro worked perfectly!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.