Foros del Web » Programando para Internet » PHP »

Aplicacion web para gestion de webcomic

Estas en el tema de Aplicacion web para gestion de webcomic en el foro de PHP en Foros del Web. Hola! muy buenas a todos!, tengo una duda sobre la consulta a la base de datos de la gestion de un webcomic. Tengo el siguiente ...
  #1 (permalink)  
Antiguo 07/04/2013, 07:16
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Pregunta Aplicacion web para gestion de webcomic

Hola! muy buenas a todos!, tengo una duda sobre la consulta a la base de datos de la gestion de un webcomic.

Tengo el siguiente planteamiento de base de datos relacional:

Tabla Temporadas
id
Nombre

Tabla TempXCap relacion n a m
idtemp
idcap

Tabla Capitulos
id
Nombre
Pag1 (imagen)
Pag2 (imagen)
Pag3 (imagen)
Pag4 (imagen)
Pag5 (imagen)
Pag6 (imagen)
Pag7 (imagen)
Pag8 (imagen)
Pag9 (imagen)
Pag10 (imagen)
Pag11 (imagen)
Pag12 (imagen)

Y mi duda esta en consulta para saber las temporadas que hay y que me devuelva estas separadas y con un enlace a ver los registros de los capítulos

Este código me haría la consulta de la temporadas ordenadas por el Id, si no me equivoco... no se, le falta algo no?

Código PHP:
Ver original
  1. $query_temporada = mysql_query("SELECT temporadas.id, temporadas.nombre, tempxcap.idtemp, tempxcap.idcap, capitulos.id, capitulos.nombre, capitulos.pag1, capitulos.pag2, capitulos.pag3, capitulos.pag4, capitulos.pag5, capitulos.pag6, capitulos.pag7, capitulos.pag8, capitulos.pag9, capitulos.pag10, capitulos.pag11, capitulos.pag12   FROM ".$db_table_temp.",".$db_table_tempxcap.",".$db_table_temp."
  2. WHERE id='".$_GET['id']."' ORDER BY id ASC LIMIT 1, $conexion);

Aún no lo tengo montado, pero estoy bastante perdido xD si alguien me diera alguna idea lo agradecería mucho.
  #2 (permalink)  
Antiguo 07/04/2013, 08:23
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Aplicacion web para gestion de webcomic

Pues si que estas un poco perdido. Lo primero que debes hacer es relacionar la tabla de temporadas y capitulos usando la tabla intermedia. Para eso primero se debe hacer dos uniones, la primera entre temporadas y TempXCap a traves del id e idtemp, luego este resultado lo debes volver a unir realizando otra unión entre TempXCap y capitulos con el id de los capitulos.

Te paso un enlace donde explican como hacer un enlace entre varias tablas que lo explican muy a lo Petete.

http://www.mysqlya.com.ar/temarios/d...od=64&punto=70
__________________
Blog de humor http://elcuasatar.net63.net/
  #3 (permalink)  
Antiguo 07/04/2013, 09:15
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Aplicacion web para gestion de webcomic

Si las relaciones las tengo claras, pero las he hecho con el asistente de PHPMyAdmin tal que asi:




Y he introducido algunos datos y con el codigo php ya he conseguido mostrarlo en la web:




Código PHP:
Ver original
  1. {
  2.     $query_temporadas = mysql_query("SELECT * FROM ".$db_table_temp.""); // Ejecutamos la consulta
  3.     while($columna = mysql_fetch_assoc($query_temporadas)) // Realizamos un bucle que muestre todas las temporadas, utilizando while.
  4.     {
  5.         echo '
  6.        <table>
  7.            <tr>
  8.                <td>'.$columna['id'].' | '.$columna['nombre'].'</td>
  9.            </tr>
  10.        </table>
  11.        ';
  12.     }
  13. }



El caso es que, quiero que por cada temporada me muestre los capitulos con su nombre y el enlace a las paginas de los capitulos, que son un enlace que luego introduciré en las tags de img.

La consulta se vuelve complicada xD, seria algo como...

Código PHP:
Ver original
  1. $query_temporadas = mysql_query("SELECT * FROM ".$db_table_temp." LEFT JOIN".$db_table_tempxcap. ON ".$db_table_temp.id"=.$db_table_tempxcap.idtemp");

Bufff que lio, quizás seria bueno mover este tema a mysql xD gracias por el enlace voy a seguir echandole un ojo ;)
  #4 (permalink)  
Antiguo 07/04/2013, 10:18
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Aplicacion web para gestion de webcomic

Si es un poco "dificil" hacer las relaciones cuando uno no tiene cancha (hace unos dias me enfrente a una situación similar, así que entiendo tu problema) Si hace dos semanas me hubieras hecho la pregunta no habria podido responderla, pero lo importante es poder abstraer el problema y dividirlo por partes.

Mas o menos yo trataria de hacer la busqueda mas o menos así (por favor revisa la sintaxis que puedo llegar a equivocarme):

Código MySQL:
Ver original
  1. select * from (temporadas t inner join tempxcap txp on t.id=txp.idtemp) left join capitulos c on txp.idcap=c.id;
  2. //cambiar el asterisco por lo valores que necesitas, no sobrecargues la consulta con datos innecesarios

En teoría eso te traeria todos los datos, para refinar la búsqueda por capitulos tocaria incluirle un where donde solicites que temporada en concreto necesitas.

Código MySQL:
Ver original
  1. where t.nombre="nombre de la temporada"


Y creo que con eso seria todo, si entiendes el enlace que te mande e incluso haces los ejemplos seguro te quedara muy claro.

Bueno, ahora un poco de propaganda a mi mismo por llegar a mi mensaje 1000. Jamas llegue a imaginar que algun día llegaria a esta cifra. Agradezco a todos los miembros del foro por ayudarme y poder devolver algo de lo que he aprendido a la comunidad.
__________________
Blog de humor http://elcuasatar.net63.net/
  #5 (permalink)  
Antiguo 07/04/2013, 12:18
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Aplicacion web para gestion de webcomic

Mil gracias y nunca mejor dicho!

He avanzado bastante xD, a ver os muestro como se ve en pantalla:



El codigo queda así:

Código PHP:
Ver original
  1. else
  2. {
  3.     $query_temporadas = mysql_query("SELECT t.id, t.nombre FROM (temporadas t INNER JOIN tempxcap txp on t.id=txp.idtemp) LEFT JOIN capitulos c on txp.idcap=c.id WHERE t.id='1' LIMIT 1"); // Ejecutamos la consulta
  4.     $query_temporadas2 = mysql_query("SELECT c.id, c.nombre FROM (temporadas t INNER JOIN tempxcap txp on t.id=txp.idtemp) LEFT JOIN capitulos c on txp.idcap=c.id WHERE c.id>='1'"); // Ejecutamos la consulta
  5.     while($rows=mysql_fetch_array($query_temporadas))  // Realizamos un bucle que muestre todos los datos, utilizando while.
  6.     {
  7.         echo '
  8.        <table class="temporada">
  9.            <tr colspan="2">
  10.                <td>'.$rows[0].' | Título: '.$rows[1].'</td>
  11.            </tr>
  12.        </table>
  13.        ';
  14.     }
  15.  
  16.     while($rows=mysql_fetch_array($query_temporadas2))
  17.     {
  18.         echo '
  19.        <table class="capitulo">
  20.            <tr>
  21.                <td>'.$rows[0].' |'.$rows[1].'</td>
  22.            </tr>
  23.        </table>
  24.        ';
  25.     }

El problema que tengo ahora, es que al poner el LIMIT 1 en la consulta para las temporadas no me recoge las siguientes temporadas, como podría arreglarlo? tengo otro registro más en la tabla de temporadas pero solo muestra el primero >.<
  #6 (permalink)  
Antiguo 07/04/2013, 12:27
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Aplicacion web para gestion de webcomic

Pues eso es papita pal loro esta parte WHERE t.id='1' en lugar de hacerla estatica hazla dinámica para que muestre la temporada 1,2,3,4. Yo me imagino que con un simple for seria mas que suficiente para recorrer todas las temporadas.

Yo no lo haria con tablas, yo lo haría con listas. Me parece que sale mas elegante y moderno acorde a la web de hoy, pero para gustos los colores.

Cuando termines pasame la pagina para ver los comics. Me encantan mucho, mi blog esta inspirado en el formato de comic y me encantan en general todos los "teveos".

p.s. La consulta la podrias hacer uniendo todos los where con la condición pepito and sutanito and perensejo y de esa manera en una sola consulta sacas todos tus valores, no habria necesidad de hacer el mismo trabajo dos veces.
Código PHP:
$query_temporadas mysql_query("SELECT t.id, t.nombre FROM (temporadas t INNER JOIN tempxcap txp on t.id=txp.idtemp) LEFT JOIN capitulos c on txp.idcap=c.id WHERE t.id='1' LIMIT 1"); // Ejecutamos la consulta
    
$query_temporadas2 mysql_query("SELECT c.id, c.nombre FROM (temporadas t INNER JOIN tempxcap txp on t.id=txp.idtemp) LEFT JOIN capitulos c on txp.idcap=c.id WHERE c.id>='1'"); // Ejecutamos la consulta 
Cambialo por:

Código PHP:
mysql_query("SELECT t.id, t.nombre,c.id,c.nombre FROM (temporadas t INNER JOIN tempxcap txp on t.id=txp.idtemp) LEFT JOIN capitulos c on txp.idcap=c.id WHERE t.id='1' AND c.id>='1' LIMIT 1"); // Ejecutamos la consulta 
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 07/04/2013 a las 12:32
  #7 (permalink)  
Antiguo 08/04/2013, 13:25
 
Fecha de Ingreso: noviembre-2007
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Aplicacion web para gestion de webcomic

Utilizando solo una consulta no me muestra los capítulos :S, solo la temporada 1. Creo que tiene que haber algo mas en la consulta xD.

Eso de 1,2,3,4 para las temporadas no se puede aplicar en la condicion de t.id=loquesea ?

Etiquetas: aplicacion, gestion, mysql, registro, 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 18:19.