1 votes

How to make a query with ajax-jquery taken from two tables?

I am trying to query a pair of tables pertaining to a library and return the data in JSON format then display the data in a table constructed in HTML. The Problem is that the json I return undefined I have already made queries take the data in JSON format but this one is special and it costs me, I'll clarify that the query I do it well from php. 'll get the code for the query in php:

 <?php 
//$cota=$_POST["c"];
$cota="FGHDFHDFH";
include_once("../conexion.php");

//----CONSULTA DE VARIAS TABLAS POR 'INNER JOIN', ES PARA OBTENER UNA SOLA FILA----
$r=mysql_query("SELECT * FROM `prestamo` INNER JOIN solicitantes ON prestamo.id_soli=solicitantes.id_solicitante INNER JOIN libro ON prestamo.cotlibr=libro.cotlibr INNER JOIN tipo_prestamo ON prestamo.id_tip_pre=tipo_prestamo.id_tip_pre  WHERE libro.cotlibr='$cota' LIMIT 1") or die(mysql_error());
$r_id=mysql_fetch_object($r);
//----FIN CONSULTA DE VARIAS TABLAS POR 'INNER JOIN'----


//----CONSULTA A DOS TABLAS QUE ES PARA OBTENER LOS NOMBRES DE VARIOS AUTORES DE UN LIBRO----
$b_autor=mysql_query("SELECT * FROM libro INNER JOIN detaauto ON libro.cotlibr=detaauto.cotlibr WHERE libro.cotlibr='$cota'") or die(mysql_error());

//----LA TABLA PARA OBTENER LOS AUTORES LOS RECORRO CON UN CICLO YA QUE EN ESTE CASO SON DOS AUTORES QUE TIENE UN LIBRO----
while($r_autor=mysql_fetch_array($b_autor))
{
    $autor=$r_autor["codauto"];

    $dato[]=array("autor"=>$autor);//----LOS ALMACENO EN UNA VARIABLE 'datos' QUE ES ARRAY----

}

//----LO OBTENIDO DE LA PRIMERA CONSULTA LO GUARDO TAMBIEN EN LA VARIABLE 'datos' ESTE NO LO RECORRO EN UN CICLO YA QUE LO DEVUELVE ES UN SOLA FILA----
$dato[]=array(
    "idtp"=>$r_id->id_tip_pre,
    "titulo"=>$r_id->titlibr,
    "cota"=>$r_id->cotlibr, 
    );
echo json_encode($dato); //----LO IMPRIMO Y CONVIERTO A FORMATO JSON---
 ?>

in js

$("#btn-libro").click(function(event) { //----SE GATILLA AL HACER CLICK EN UN BOTON---
        event.preventDefault();
        var cota=$("#cota").val(); //---OBTENGO EL VALOR DE UN CAMPO TEXT INPUT---
        $.ajax({
            url: 'proceso/pro_bus_pre.php',
            type: 'POST',
            dataType: 'json',
            data: {c:cota},
        })
        .done(function(data) {
            $.each(data, function(index, val) { //----UTILIZANDO '$.each' RECORRO EL ARREGLO PARA SACAR----
                                                //----CADA VALOR DE LO QUE ME ENVIA PHP EN ESTE CASO LOS AUTORES----
                 console.log("success "+ data.autor +" tirulo "+data.titulo); //---ARROJA 'undefined' DEL RESULTADO DE LA DOS CONSULTAS----
            });
            console.log(data.titulo); //---ARROJA 'undefined'----

        });

    });

in php this is what I printed that seems to me to be well for what I want to do:

[{"author":"cvhcfghf"},{"author":"ADELMO GENRO FILHO"},{"idtp":"3","title":"THE SECRET OF THE PYRAMID","height":"FGHDFHDFH"}]

this is the result that you want to print to the user where it shows the videos autes linked to the one book that I'm consulting. this is the whole problem.

1voto

There is no title property on all the Objects in the array try using this.

 $("#btn-libro").click(function(event) { //----SE GATILLA AL HACER CLICK EN UN BOTON---
        event.preventDefault();
        var cota=$("#cota").val(); //---OBTENGO EL VALOR DE UN CAMPO TEXT INPUT---
        $.ajax({
            url: 'proceso/pro_bus_pre.php',
            type: 'POST',
            dataType: 'json',
            data: {c:cota},
        })
        .done(function(data) {
            for (var item of data) {
              console.log(item);
            }

        });

    }); 

HolaDevs.com

HolaDevs is an online community of programmers and software lovers.
You can check other people responses or create a new question if you don't find a solution

Powered by:

X