Ajax return a result loop

2

I'm doing a financial system with ajax, both revenue and expenses have "descriptions" and to edit the information of a recipe I call its information but I have to pull the descriptions tbm. But the thing is that I use append on the front end to create these descriptions and I get the number of lines generated there and I loop in the php that writes to the bank. Now I have to retrieve these lines and put in that append again.

I made it work to pull the single data, but to pull the descriptions the way I did it is not working ... (the ajax of the descriptions is within the recipe ajax success for sure)

Sorry for the size of the question ...

Thephpfilethatajaxcalls...

<?phpinclude_once("../database/Database.class.php");

$database = new Database();

$idReceita = $_GET['id'];

$sql = "SELECT * FROM cnt_receita_descricao WHERE id_receita = '".$idReceita."'";
$resultado = $database->conexao->query($sql);

$linha = $resultado->fetch(PDO::FETCH_ASSOC);

$numero_de_linhas = $resultado->rowCount();

if ($numero_de_linhas > 0){

for ($i = 0; $i <$numero_de_linhas; $i++) {

  $dadoReceitaDescricao[$i] = array(
    'numero_de_linhas' => $numero_de_linhas,
    'decricao' => $linha_descricao['descricao'],
    'complemento' => $linha_descricao['complemento'],
    'valor_unitario' => $linha_descricao['valor_unitario'],
    'todos_meses' => $linha_descricao['todos_meses'],
    'numero_de_meses' => $linha_descricao['numero_de_meses']
  );
}
}

echo json_encode($dadoReceitaDescricao[$i]);
?>

Ajax script ...

<script type="text/javascript">
 function pegarIdDaReceitaEditar(id){
 var idReceita = id;
 alert(idReceita);
 $.ajax({
 type: "GET",
 url: "buscarDadosReceita.php?id="+idReceita,
 success: function( response ){
   var dadosReceita = jQuery.parseJSON( response );

   $("#dadoDaReceita").val(dadosReceita.dadoDaReceita);
   // alert("teste01R-R");

   $.ajax({
     type: "GET",
     url: "buscarDadosReceitaDescricao.php?id="+idReceita,
     success: function( response ){
       var dadosReceitaDescricao = jQuery.parseJSON( response );

       $("#numero_de_linhas").val(dadosReceitaDescricao.numero_de_linhas);
       // alert("teste01R-D");

       for($i=0; $i<$dadosReceitaDescricao.numero_de_linhas; $i++){

$("#dadoDeDescricaoDaReceita"+$i).val(dadosReceitaDescricao.dadoDeDescricaoDaReceita);
       }
     }
   });

 }
 });
 }
</script>
    
asked by anonymous 16.12.2017 / 18:05

2 answers

1

The problem is that the variable $linha_descricao does not exist, right $linha , because the results of your query are here: $linha = $resultado->fetch(PDO::FETCH_ASSOC);

$dadoReceitaDescricao[$i] = array(
    'numero_de_linhas' => $numero_de_linhas,
    'decricao' => $linha['descricao'], // <-- aqui
    'complemento' => $linha['complemento'], // <-- aqui
    'valor_unitario' => $linha['valor_unitario'], // <-- aqui
    'todos_meses' => $linha['todos_meses'], // <-- aqui
    'numero_de_meses' => $linha['numero_de_meses'] // <-- aqui
  );

In addition there is another error. In this line:

$resultado = $database->conexao->query($sql);

The right thing to do is:

$resultado = $database->query($sql);

The error Uncaught TypeError: Cannot read property 'numero_de_linhas' of null happens in JS, explaining that this variable is null because there were previous errors in your connection to the database.

    
17.12.2017 / 00:56
1

@AndreiCoelho managed to resolve the issue was with several details missing

<script type="text/javascript">
function pegarIdDaReceitaEditar(id){
var idReceita = id;
alert(idReceita);
$.ajax({
type: "GET",
url: "buscarDadosReceita.php?id="+idReceita,
success: function( response ){
var dadosReceita = jQuery.parseJSON( response );

$("#dadoDaReceita").val(dadosReceita.dadoDaReceita);
// alert("teste01R-R");

$.ajax({
 type: "GET",
 url: "buscarDadosReceitaDescricao.php?id="+idReceita,
 success: function( response ){

   if(response){
   var dadosReceitaDescricao = jQuery.parseJSON( response );
   //console.warn(dadosReceitaDescricao);

   $("#numero_de_linhas").val(dadosReceitaDescricao.numero_de_linhas);
   // alert("teste01R-D");

   for($i=0; $i<$dadosReceitaDescricao.numero_de_linhas; $i++){

   $("#dadoDeDescricaoDaReceita"+$i)
   .val(dadosReceitaDescricao.dadoDeDescricaoDaReceita);

   $.each(dadosReceitaDescricao, function(i, descricao) {

     var descCallB = $("string com os dados da descricao");

   }

  }else{
     console.warn('erro: sem resposta.');
  }
   }
 }
});

}
});
 }
</script>

And in the php arquitecture little thing I changed ...

<?php
 include_once("../database/Database.class.php");

 $database = new Database();

 $idReceita = $_GET['id'];

 $sql = "SELECT * FROM cnt_receita_descricao WHERE id_receita = '".$idReceita."'";
 $resultado = $database->conexao->query($sql);

 $numero_de_linhas = $resultado->rowCount();

 if ($numero_de_linhas > 0){

  for ($i = 0; $i <$numero_de_linhas; $i++) {

   $linha_descricao = $resultado->fetch(PDO::FETCH_ASSOC);

   $dadosReceitaDescricao[$i] = array(
    'numero_de_linhas' => $numero_de_linhas,
    'id_descricao' => $linha_descricao['id_descricao'],
    'decricao' => $linha_descricao['descricao'],
    'complemento' => $linha_descricao['complemento'],
    'valor_unitario' => $linha_descricao['valor_unitario'],
    'todos_meses' => $linha_descricao['todos_meses'],
    'numero_de_meses' => $linha_descricao['numero_de_meses']
  );
 }
}

echo json_encode($dadosReceitaDescricao);
?>

This is how it works. Thanks!

    
18.12.2017 / 01:02