Generate report when sending PHP form

0

I need help with the submission of a form and at the same time I generate the report of the data sent by it, that is to say that by pressing the save button the data is inserted (part that I already have made) but that also direct me to the generated report, my code is as follows:

Here I start sending the form

$(document).on('click', '.btn-submit', function(ev){
      ev.preventDefault();
      var btn_button = $(this);
      if($("#formcita").valid() == true){
        var data = $("#formcita").serialize();
        btn_button.html(' <i class="fa fa fa-spinner fa-spin"></i> Procesando...');
        btn_button.attr("disabled",true);
        $.post('save_cita.php', data, function(data,status){
          console.log("Data: " + data + "\nStatus: " + status);
          if( data == "1"){
            //alert("Data: " + data + "\nStatus: " + status);
            $(".alert-danger").hide();
            $(".alert-success").fadeIn(800);
            btn_button.html('<i class="fa fa fa-check-circle"></i> Hecho');
            setTimeout(function(){  location.reload(); }, 2000);
          }
          else{
            //alert("Data: " + data + "\nStatus: " + status);
            $(".alert-success").hide();
            $(".alert-danger").fadeIn(800);
            btn_button.html('Guardar').attr("disabled",false);
          }
        });
      }
    });

});

** then I receive it in this file for the insertion process **

if($form_name == 'add_cita'){
$fcita = mysqli_real_escape_string($mysqli, $_POST['fcita']);
$hcita = mysqli_real_escape_string($mysqli, $_POST['hcita']);
$coment = mysqli_real_escape_string($mysqli, $_POST['coment']);
$numdon = mysqli_real_escape_string($mysqli, $_POST['numdon']);
$numafi = mysqli_real_escape_string($mysqli, $_POST['numafi']);


$query = "INSERT INTO citas (fechaCita,horaCita,comentario,dui_donantes,afi_pacientes)
          values('$fcita','$hcita','$coment','$numdon','$numafi')"; 
$result = $mysqli->query($query) or die($mysqli-> connect_error);
if($result)
    echo "1";
else
    echo "0";
}

If someone has any suggestion or idea that I could add to my code to do the above, in advance thank you very much.

    
asked by Samuel Nerio 21.03.2018 в 21:09
source

2 answers

0

If you do not have any problem when printing, the PDF pre-visualization remains and your user has to go back or write the page to redirect, I think FPDF is a good option,

You should do something like that ..

require('fpdf.php');
    if($form_name == 'add_cita'){
$fcita = mysqli_real_escape_string($mysqli, $_POST['fcita']);
$hcita = mysqli_real_escape_string($mysqli, $_POST['hcita']);
$coment = mysqli_real_escape_string($mysqli, $_POST['coment']);
$numdon = mysqli_real_escape_string($mysqli, $_POST['numdon']);
$numafi = mysqli_real_escape_string($mysqli, $_POST['numafi']);


$query = "INSERT INTO citas (fechaCita,horaCita,comentario,dui_donantes,afi_pacientes)
          values('$fcita','$hcita','$coment','$numdon','$numafi')"; 
$result = $mysqli->query($query) or die($mysqli-> connect_error);
if($result)
    $pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->MultiCell(150, 5, utf8_decode('FCITA =' . $fcita), 0, 'C');
$pdf->MultiCell(150, 5, utf8_decode('HCITA =' . $hcita), 0, 'C');
ob_end_clean();
$pdf->Output();
else
    echo "0";
}

I also recommend you take a look at the JSPDF to generate PDF without the preview of the PDF. link

    
answered by 22.03.2018 / 01:38
source
0

if with report you mean to show a modal or a message showing the data that I just saved in the database?

If so, you could get it with Jquery by calling the values of the fields by the id, example ... If you have an input with id="name" in the form

if( data == "1"){

alert("Se acaba de guardar el siguiente dato en la base de datos"+("#nombre").val());
        $(".alert-danger").hide();
        $(".alert-success").fadeIn(800);
        btn_button.html('<i class="fa fa fa-check-circle"></i> Hecho');
        setTimeout(function(){  location.reload(); }, 2000);
      }
    
answered by 21.03.2018 в 22:52