Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Formato de consulta MySQL en PHP

Estas en el tema de Formato de consulta MySQL en PHP en el foro de PHP en Foros del Web. Hola a todos. Estoy intentando realizar una consulta a una base de datos mysql, a traves de php, en la cual necesito que me devuelva ...
  #1 (permalink)  
Antiguo 21/11/2013, 11:00
 
Fecha de Ingreso: noviembre-2013
Mensajes: 1
Antigüedad: 10 años, 5 meses
Puntos: 0
Formato de consulta MySQL en PHP

Hola a todos.

Estoy intentando realizar una consulta a una base de datos mysql, a traves de php, en la cual necesito que me devuelva los nombres del autor y sus libros uno debajo del otro, en el siguiente formato:

Autor 1
libro 1
libro 2

Autor 2
libro 1
libro2

Autor 3
libro 1
libro 2
...
etc.

El problema es que cuando intento imprimir la tabla en ese formato, hay autores que tienen mas de un libro entonces me lo imprime de esta forma:

Autor 1
libro1

Autor 1
libro2

No se si se entiende. Yo lo que quiero es que el nombre de cada autor lo imprima una vez y todos sus libros a continuación.

Estoy utilizando estas 3 tablas:

http://dpaste.com/1475660/

y la consulta la realizo con el siguiente código:

http://dpaste.com/1475670/

Desde mi punto de vista el problema seria mas de php que de mysql, ya que por ejemplo si lo intento imprimir en formato de tabla (uno al lado del otro) lo imprime de manera correcta, y lo que necesitaría seria una manera de imprimir los datos uno debajo del otro de la forma ya mencionada.

Acepto cualquier sugerencia.

Muchas gracias.
  #2 (permalink)  
Antiguo 21/11/2013, 11:07
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 244
Antigüedad: 13 años, 7 meses
Puntos: 20
Respuesta: Formato de consulta MySQL en PHP

Autor lo imprimes solo una vez y luego imprimes todos los libros del autor, no se ve complicado.

Te ayudas con un contador para imprimir solo un autor.
  #3 (permalink)  
Antiguo 21/11/2013, 11:10
 
Fecha de Ingreso: octubre-2012
Mensajes: 135
Antigüedad: 11 años, 7 meses
Puntos: 8
Respuesta: Formato de consulta MySQL en PHP

no es una opción elegante ni optimizada, pero si funcional.

Serían don bucles y dos consultas, una de todos los autores, y la otra de los libros de ese autor. En el primer bucle recorre la tabla de autores, hace la segunda consulta que saca todos los libros de ese autor y empieza el segundo bucle mostrando los libros, cuando termine ese bucle, automáticamente empezara con el siguiente autor, así solo te mostrara el autor una vez.

Saludos
  #4 (permalink)  
Antiguo 21/11/2013, 11:16
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Formato de consulta MySQL en PHP

Una logica asi tendria que servirte...

Código PHP:
Ver original
  1. $aux = '';
  2. foreach( $registros as $registro){
  3.  
  4.   if( $registro['autor'] == $aux){
  5.  
  6.     echo $registro['autor'];// es un autor nuevo, imprimo su nombre
  7.     $aux = $registro['autor'];
  8.   }
  9.  
  10.   echo $registro['libro'];//imprimo siempre el libro
  11. }
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #5 (permalink)  
Antiguo 21/11/2013, 11:21
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Formato de consulta MySQL en PHP

Usa PDO o SQLite, las funciones de mysql están obsoletas desde hace casi dos años.

Ordena los resultados de la consulta por autor, y por nombre del libro.
Guarda en una variable, el último escritor que has escrito en pantalla. Antes de escribir el siguiente, comprueba si es el mismo que antes. Si lo es, no lo escribas, y si no lo es, escríbelo.

Sería algo así:

Código PHP:
Ver original
  1. if (!$resultado) {
  2.     die('Consulta no válida: ' . mysql_error());
  3. }
  4. $ultimo="";
  5. while ($fila = mysql_fetch_object($resultado)){
  6.     if ($ultimo!=$fila->Author){
  7.         $ultimo=$fila->Author;
  8.         echo $ultimo . "<br>";
  9.     }
  10.     echo $fila->Title . "<br>";
  11. }

EDIT: Maldición, me ha pisado el de arriba, escribiendo lo m¡smo justo antes xd.

Etiquetas: formato, mysql, 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 15:31.