Búsquedas anidadas en MySQL (o algo por el estilo)
Estoy haciendo mi primer proyecto desde CERO para una pequeña página web con información de capítulos de varias series de TV. Decidí usar MySQL y PHP para generar las diferentes páginas de mi sitio. La idea es que yo pueda ir agregando datos en la base de datos y las páginas se vayan llenando solas de información sin que yo tenga que estar agregando código todo el tiempo. Resumiendo, como funcionaría cualquier página actual donde el diseño el fijo y lo que varía es el contenido.
Por ahora me valí de diferentes tutoriales para aprender lo básico sobre como integrar MySQL a un PHP. Pero ahora he llegado a un punto donde no puedo avanzar porque mucho no comprendo de programación.
Mi base de datos tiene diferentes tablas (una por cada serie), cada una con 5 columnas, donde cada fila correspondería a un capítulo diferente
Id (que es un # único que representaría a cada entrada)
Temporada (también en número, este dato se repite)
Capitulo (también en número, se repite al volver a empezar la numeración con cada temporada)
Nombre (texto con el nombre del capítulo)
Url (una dirección única)
Ej: 0, 2, 12, Un Día Después, http://www.pagina.com/informaci%C3%B3n
La estructura de lo que necesitaría sería lo siguiente:
Una función que me permita primero encontrar la cantidad de temporadas, y luego a cada temporada ingresarle los capítulos correspondientes a cada una, seguido de un link con información de cada uno.
Lo que pude hacer hasta ahora es que me devuelva todos los datos de cada una de las entradas con el formato que yo quiero (ej, el nombre del capítulo es un link activo que me lleva a la url de la base de datos). Hasta ahí todo bien. El problema es que cuando busco me devuelve siempre el número de la temporada, cuando en realidad lo que necesito es que me agrupe los datos, y no me repita todo el tiempo con cada uno de los capítulos el número de la temporada.
El código que uso es el siguiente (contiene código de jquery mobile):
¿<?php $link = mysql_connect('localhost','usuario','clave') or die ('Error conectando a la base de datos'); $dbname = 'basededatos'; mysql_select_db($dbname, $link); $result = mysql_query("SELECT * FROM seriedetv ORDER BY temporada", $link); if ($row = mysql_fetch_array($result)){ echo '<div data-role="collapsible">'; do { echo "<h3>Temporada ".$row["temporada"]."</h3>"; echo '<ul data-role="listview" data-inset="true">'; echo "<li><a href=".$row["url"].">".$row["capitulo"].")".$row["nombre"]."</a></li>"; } while ($row = mysql_fetch_array($result)); echo "</ul></div> \n"; } else { echo "¡No se ha encontrado ningún registro!"; } ?>
Lo que me devuelve en formato es correcto, pero no es lo que busco. Me repite en cada búsqueda los datos del número de la temporada, cuando en realidad hace falta una sola vez para usarla de encabezado.
Necesito primero que me liste todas las temporadas y darle un formato. Y luego dentro de cada temporada hacer una búsqueda de los capítulos correspondientes, y ordenarlos según su número (capitulo).
Según algo entiendo, ¿creo qué debería ingresar otra búsqueda luego de la 9na línea? Pero creo que igual no funcionaría porque me repetiría el resultado de las temporadas con cada uno de los capítulos existentes... Lo que necesito es que me devuelva solo una vez el resultado de cada temporada. No se si me explico.
Es como ordenar posts por categoría. Cada post tiene la información sobre a qué categoría pertenece. Si hago una búsqueda de las categorías, no quiero que me repita mil veces los nombres de las categorías (porque hay muchos posts en cada categoría) sino que me devuelva solo los títulos sin repetirlos.
Perdón por ser tan extenso. Traté de ser lo más claro posible y que no haya dudas...
¿Alguien puede darme una mano? ¿O recomendarme alguna página para leer?