Ajax return a results loop

Asked

Viewed 179 times

2

I am making a financial system with ajax, both revenues and expenses have "descriptions" and to edit the information of a recipe I call her information but I have to pull the descriptions tbm. However, I use the front-end append to create these descriptions and I take the number of lines generated there and make a loop in php that records in the database. Now I gotta get those lines back and put that append in again.

I made it work to pull the unique data, but to pull the descriptions the way I did not working...(the description ajax is inside the "Success" of the recipe ajax for sure)

Sorry for the size of the question...

esquema de como funciona

front-end

Php file that ajax calls...

<?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);

$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>
  • Replace the source prints with text in the question.

2 answers

1

The problem is that the variable $linha_descricao does not exist, the right is $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
  );

Also there is another error. On this line:

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

The right thing is:

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

The mistake Uncaught TypeError: Cannot read property 'numero_de_linhas' of null happens in JS, explaining that this variable came null, because there were these previous errors in your connection with the bank.

  • I went through this detail, thank you... but it still tells me "Uncaught Typeerror: Cannot read Property 'numero_de_linhas' of null "

  • @Gustavosamuelmarcolin has another error. I will edit.

  • @Gustavosamuelmarcolin worked out?

  • @Gustavosamuelmarcolin I think you should put the database class... Delete the bank information and post the class in the question.

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 php file little thing 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 way is working as I want. Thank you!

  • Cool Gustavo, comment on the details that were missing, may help other people with similar problem.

Browser other questions tagged

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