Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Aplicacion php y json

Estas en el tema de Aplicacion php y json en el foro de PHP en Foros del Web. Buenas tardes, a ver si me podeis ayudar porque me estoy volviendo loco. El tema es que tengo un portafolio, cuando haces click en un ...
  #1 (permalink)  
Antiguo 12/01/2014, 14:35
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 17 años
Puntos: 2
Aplicacion php y json

Buenas tardes, a ver si me podeis ayudar porque me estoy volviendo loco. El tema es que tengo un portafolio, cuando haces click en un item te muestra con ajax los detalles de dicho elemento.

Tengo dos tablas, una con todos los detalles de los items y otra con las imagenes que pertenecen a cada item. Lo primero, no se si las estoy relacionando correctamente porque cuando compruebo la consulta me dupllica el resultado.

campos tabla 1: id_proyecto, etc
campos tabla 2: id, imagenes, id_proyecto

Consulta:
Código PHP:
Ver original
  1. select ....... from tabla1 as p, tabla2 as i where p.id_projecto = i.id_proyecto and p.id_proyecto = '$id'

Mi problema es mas amplio, pero quiero desarrollarlo por partes, si me lo permitis, de momento me gustaria saber si esta consulta es correcta, lo que quiero es que me devuelve el id_proyecto y demas datos de la tabla 1 y las imagenes asociadas en la tabla 2..

Gracias
  #2 (permalink)  
Antiguo 12/01/2014, 16:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Aplicacion php y json

En el título dices que tu problema es de PHP y JSON pero yo solamente veo SQL y eso definitivamente no corresponde a este foro.

Si tu asunto es la consulta SQL en si deberías consultar en el foro de base de datos.

Es decir, cada tema en su lugar, no confundas todo con PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/01/2014, 16:59
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 17 años
Puntos: 2
Respuesta: Aplicacion php y json

Si efectivamente, mi problema es de php y json, o eso creo, pero antes queria comprobar que el fallo no estaba en la consulta...

Evidentemente no tengo los mismos conocimientos que pareces tener tu, pero tranquilo, no confundo todo con php. Gracias por la ayuda.
  #4 (permalink)  
Antiguo 12/01/2014, 17:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Aplicacion php y json

Cita:
Iniciado por wolfmoon Ver Mensaje
...

... pero tranquilo, no confundo todo con php.
Entonces postea la pregunta sobre la query en el foro de BBDD, no aquí.
Los temas de SQL se tratan especialmente en BBDD.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 13/01/2014, 11:27
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 17 años
Puntos: 2
Respuesta: Aplicacion php y json

Codigo completo.

Trato de sacar la info de la tabla 1 + las imagenes asociadas en la tabla 2. Mi problema es que solo me devuelve un registro. Y de la tabla 2 necesito sacar varias filas...

Archivo 1 php
Código PHP:
Ver original
  1. public function getProjectId($id){
  2.        
  3.         $sql = "select "
  4.             ."p. todos los campos de tabla 1, "
  5.             ."i.todos los campos de tabla 2 "
  6.             ."from "
  7.             ."tabla 1 as p, tabla 2 as i "
  8.             ."where "
  9.             ."p.project_id = '$id' "
  10.                         ."and "
  11.                         ."p.project_id = i.project_id"
  12.             ;          
  13.            
  14.         $query = mysqli_query(parent::connect(), $sql);
  15.        
  16.         return $query;
  17.     }

Archivo php 2
Código PHP:
Ver original
  1. $objProject = new Articulos();
  2.     $consulta = $objProject->getProjectId($_POST['id']);
  3.            
  4.     while( $row= mysqli_fetch_array($consulta)){
  5.                
  6.         for($i=0;$i<sizeof($row["examples"]);$i++){
  7.        
  8.             $examples[$row["examples"]] = array(
  9.                $examples[$row["examples"]] = array(
  10.                                'examples_link'=> $row['example_link'],
  11.                    'example_type' => $row['example_type']
  12.                        )
  13.             );
  14.         }
  15.     }
  16.            
  17. echo json_encode($examples);

Archivo js
Código Javascript:
Ver original
  1. for(i=0;i<data.examples.length;i++){
  2.                    
  3. $('.capa').append('<img src="'+data.examples[i]+'"/>');
  4. }

A ver si me podeis echar un cable...
  #6 (permalink)  
Antiguo 13/01/2014, 11:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Aplicacion php y json



¿Y el problema es?

Digo, si crees que es la consulta podrías ejecutarla a mano y observar si te devuelve los registros que esperas.

Si funciona entonces tu código está mal, y sería inteligente de tu parte compartir las observaciones que ya has hecho.

Si la consulta no funciona como esperas entonces ya sabes por donde comenzar, cosa que ya te hemos dicho: si el problema es de BD por favor atiende el foro de BD.

Cuando tengas algo nos avisas.

PDTA: sigo creyendo que tu consulta de SQL está mal, pero sigues de aferrado publicando en PHP como si aquí supiéramos todo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 13/01/2014, 11:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Aplicacion php y json

Código SQL:
Ver original
  1. SELECT p. todos los campos de tabla 1,  i.todos los campos de tabla 2
  2. FROM tabla 1 AS p, tabla 2 AS i
  3. WHERE
  4.     p.project_id = '$id'  AND  p.project_id = i.project_id

Primer consejo para todas las ocasiones en que tengas un problema de BBDD: Postea en el foro de Bases de Datos.
Segundo consejo: Postea las consultas tal y como son. No modifiques nombres de campos, columnas o simplifiques nada. Todo lo que omitas o generalices puede hacer que te demos consejos incorrectos.
EL SQL es específico. Trabaja con cosas reales y con relaciones reales. Si generalizas estarás omitiendo información importante para las soluciones.

Consejo final: Aporta información concreta de las relaciones entre tablas. De ese modo no tendremos que adivinar.
Para el caso, como no nos estás dando los nombres reales de las tablas, sólo nos queda suponer que la relación entre la primera tabla y la segunda podría ser 1:1, o 1:N.
En el primer caso debería devolver un único registro, por tanto no habría "error" como supones.
En el segundo, como estás filtrando por proyecto, si el proyecto tiene un sólo registro actualmente relacionado en ambas tablas, podría devolver un sólo registro y no habría errores.
Pero si en una de ellas debiera haber más de uno vinculado al buscado, no es correcto lo que devuelve.

Pero como verás, sin información concreta, no podemos más que hacer suposiciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 13/01/2014, 13:15
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 17 años
Puntos: 2
Respuesta: Aplicacion php y json

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Código SQL:
Ver original
  1. SELECT p. todos los campos de tabla 1,  i.todos los campos de tabla 2
  2. FROM tabla 1 AS p, tabla 2 AS i
  3. WHERE
  4.     p.project_id = '$id'  AND  p.project_id = i.project_id

Primer consejo para todas las ocasiones en que tengas un problema de BBDD: Postea en el foro de Bases de Datos.
Segundo consejo: Postea las consultas tal y como son. No modifiques nombres de campos, columnas o simplifiques nada. Todo lo que omitas o generalices puede hacer que te demos consejos incorrectos.
EL SQL es específico. Trabaja con cosas reales y con relaciones reales. Si generalizas estarás omitiendo información importante para las soluciones.

Consejo final: Aporta información concreta de las relaciones entre tablas. De ese modo no tendremos que adivinar.
Para el caso, como no nos estás dando los nombres reales de las tablas, sólo nos queda suponer que la relación entre la primera tabla y la segunda podría ser 1:1, o 1:N.
En el primer caso debería devolver un único registro, por tanto no habría "error" como supones.
En el segundo, como estás filtrando por proyecto, si el proyecto tiene un sólo registro actualmente relacionado en ambas tablas, podría devolver un sólo registro y no habría errores.
Pero si en una de ellas debiera haber más de uno vinculado al buscado, no es correcto lo que devuelve.

Pero como verás, sin información concreta, no podemos más que hacer suposiciones.
Entendido!
La consulta esta correcta, al probarla me devuelve dos registros, pero por consola el json me devuelve solo 1, alguna idea?
  #9 (permalink)  
Antiguo 13/01/2014, 13:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Aplicacion php y json

Cita:
Iniciado por wolfmoon Ver Mensaje
Entendido!
La consulta esta correcta, al probarla me devuelve dos registros, pero por consola el json me devuelve solo 1, alguna idea?
¿Tal vez el código que genera dicho JSON está mal?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 13/01/2014, 13:58
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 17 años
Puntos: 2
Respuesta: Aplicacion php y json

Tal vez por eso pregunto que estoy haciendo mal? Esto es un foro no? o me he equivodado de sitio para preguntar dudas? No crees que si supiera lo que estoy haciendo mal no me haria falta preguntar nada....
  #11 (permalink)  
Antiguo 13/01/2014, 13:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Aplicacion php y json

Tal vez si muestras dicho código sería mejor, ¿tal vez?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 13/01/2014, 14:08
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 17 años
Puntos: 2
Respuesta: Aplicacion php y json

Código PHP:
Ver original
  1. //** FUNCION PARA LISTAR PROYECTOS POR ID  ***************************************************************/
  2.     public function getProjectId($id){
  3.        
  4.         $sql = "select "
  5.             ."p.project_id, "
  6.             ."p.project_titulo, "
  7.             ."p.project_detalle, "
  8.             ."p.project_cliente, "
  9.             ."p.project_bg, "
  10.             ."p.project_tags, "
  11.             ."p.project_fecha, "
  12.             ."p.project_hash, "
  13.             ."i.id_imagenes, "
  14.             ."i.examples, "
  15.             ."i.example_link, "
  16.             ."i.example_type, "
  17.             ."i.project_id "
  18.             ."from "
  19.             ."portafolio as p, imagenes_project as i "
  20.             ."where "
  21.             ."p.project_id = '$id' "
  22.             ."and "
  23.             ."p.project_id = i.project_id";        
  24.            
  25.         $query = mysqli_query(parent::connect(), $sql);
  26.        
  27.         return $query;
  28.     }

Archivo php 2
Código PHP:
Ver original
  1. if(isset($_POST["id"]) && Database::getIntStatic("id")){
  2.     require_once(ROOT . '/site/articulos.php');
  3.     $objProject = new Articulos();
  4.     $consulta = $objProject->getProjectId($_POST['id']);
  5.  
  6.        
  7.     while( $row= mysqli_fetch_array($consulta)){
  8.        
  9.        
  10.         for($i=0;$i<sizeof($row["examples"]);$i++){
  11.        
  12.             $examples[$row["examples"]] = array(
  13.                 $examples[$row["examples"]] = array(
  14.                     'examples_link'=> $row['example_link'],
  15.                     'example_type' => $row['example_type']
  16.                 )
  17.             );
  18.    
  19.         }
  20.     }
  21.    
  22. echo json_encode($examples);
  23.  
  24. }


Javascript
Código Javascript:
Ver original
  1. function jsonRequest(id){
  2.        
  3.             $.ajax({
  4.                 url: '/agencia-tabata/es/portafolio/showProject.php',
  5.                 type: 'post',
  6.                 dataType:"json",
  7.                 data : {
  8.                     'id':id
  9.                 },
  10.                 success : function(data){
  11.                                       for(i=0;i<data.examples.length;i++){
  12.                       $('.wrapper-medias').append('<img src="'+data.examples[i]+'"/>');
  13.                    
  14.                 }
  15.                                }
  16.  
  17.               }

El id lo recibo en otra funcion mediante atributo.
Hasta ahora es lo que tengo
  #13 (permalink)  
Antiguo 13/01/2014, 14:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Aplicacion php y json

Concentrémonos en el archivo donde construyes el JSON, en ningún otro para no perder el foco.

Dices que la consulta te arroja dos registros, pero el JSON solo indica uno, ¿cómo estás depurando dicho código al respecto?

Yo sólo veo tu código y nada más pienso, ¿qué harás para depurar dicho script?

Código PHP:
Ver original
  1. $objProject = new Articulos();
  2.         $consulta = $objProject->getProjectId($_POST['id']);
  3.  
  4. echo 'ENTRA AQUI';
  5. echo 'TOTAL=';
  6. echo mysqli_num_rows($consulta);
  7.  
  8.         while( $row= mysqli_fetch_array($consulta)){
  9.  
  10. // ¿qué valores hay en "examples"?
  11. // ¿tenemos que adivinar como funciona esto?
  12.                    
  13.             for($i=0;$i<sizeof($row["examples"]);$i++){
  14.  
  15.            // NO SABEMOS LO QUE HACES AQUí Y SI TAMPOCO LO EXPLICAS
  16.            // ES IMPOSIBLE DECIRTE QUE HACES MAL, ES POR ESO QUE NO LLEGAS
  17.            // A NADA; MIENTRAS TU ASUMAS QUE PODEMOS AYUDARTE CON SOLO MOSTRAR
  18.            // CÓDIGO NOSOTROS ASUMIREMOS NADA, Y POR LO TANTO, NO HAY MUCHO QUE AGREGAR
  19.  
  20.                 $examples[$row["examples"]] = array(
  21.                    $examples[$row["examples"]] = array(
  22.                                    'examples_link'=> $row['example_link'],
  23.                        'example_type' => $row['example_type']
  24.                            )
  25.                 );
  26.             }
  27.         }
  28.                
  29.     echo json_encode($examples);

Creo que ahí está la clave de todo.

¿Se entiende "el problema" con tu problema ahora?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 13/01/2014, 15:07
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 17 años
Puntos: 2
Respuesta: Aplicacion php y json

Si yo hago esto:

Código PHP:
Ver original
  1. $row= mysqli_fetch_array($consulta);
  2.  
  3. echo json_encode($row);

Me devuelve correctamente los valores pero solo 1 fila. Es a partir de aqui donde no se exactamente como seguir para que de la tabla 2 me pille todas las filas con sus imagenes

si lo hago mediante un while intentando que me recorra todo el arrego, me imprime en consola la respuesta correctamente, pero no en json:
Código PHP:
Ver original
  1. while($row= mysqli_fetch_array($consulta)){
  2. $data[]=$row;
  3. }
  4. echo json_encode($data);

No se que mas puedo decirte, me falla la logica seguramente...
  #15 (permalink)  
Antiguo 13/01/2014, 15:13
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 17 años
Puntos: 2
Respuesta: Aplicacion php y json

Lo que pretendo es que me devuelva un json que seria asi:

Código Javascript:
Ver original
  1. project_id "1"
  2.    
  3. project_titulo "titulo"
  4.    
  5. project_hash "hash"
  6.        
  7. ..........
  8.    
  9. examples    [Object { example_type="image", example_link="link"}, Object { example_type="image", example_link="link"}]
  10.    
  11.     0
  12.         Object { example_type="image", example_link="link"}
  13.    
  14.     1
  15.         Object { example_type="image", example_link="link"}
  16.        
  17. .......
  #16 (permalink)  
Antiguo 13/01/2014, 15:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Aplicacion php y json

A caray, ¿dices que esto sirve bien?
Código PHP:
Ver original
  1. $row= mysqli_fetch_array($consulta);
  2. echo json_encode($row);

¿Pero esto no?
Código PHP:
Ver original
  1. $data = array(); // NUNCA olvides inicializar el array
  2.  
  3. while($row= mysqli_fetch_array($consulta)){
  4.    $data[]=$row;
  5. }
  6. echo json_encode($data);

No tiene sentido lo que dices, pues el while() es sólo una iteración del primer código (el que funciona) y por ende debería funcionar también, lógicamente.

Y así como lo dices suena totalmente extraño, netamente absurdo.

¿Podrías mostrar lo que te resulta?

Ver para creer.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #17 (permalink)  
Antiguo 13/01/2014, 15:35
Avatar de wolfmoon  
Fecha de Ingreso: octubre-2007
Mensajes: 189
Antigüedad: 17 años
Puntos: 2
Respuesta: Aplicacion php y json

Despues de resetear el navegador y borrar historial y cookies, me muestra las imagenes de la tabla 2, pero me duplica tambien todos los campos de la tabla 1, lo que me muestra en consola en la pestaña respuesta y html son todos los nombres de los campos + su contenido, pero la pestaña JSON no aparece...

edito: esto con el while, si quito el while la pestaña json aparece listando todo correctamente, salvo que solo 1 fila

Etiquetas: aplicacion, json, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:19.