Foros del Web » Programando para Internet » PHP »

como mostrar contenidos de las secciones y subsecciones en un solo query

Estas en el tema de como mostrar contenidos de las secciones y subsecciones en un solo query en el foro de PHP en Foros del Web. hola. estoy desarrollando un cms desde cero (sin utilizar framework). he creado mis tablas secciones, contenidos y menu_posicion. en la seccion o categorias servicios hay ...
  #1 (permalink)  
Antiguo 08/04/2012, 20:37
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Pregunta como mostrar contenidos de las secciones y subsecciones en un solo query

hola. estoy desarrollando un cms desde cero (sin utilizar framework). he creado mis tablas secciones, contenidos y menu_posicion.



en la seccion o categorias servicios hay 2 secciones.

estimulacion y psicologia integral

dentro de la seccion estimulacion hay 9 subsecciones registradas al igual que la seccion psicologia integral. en el diseño, quiero que las subsecciones se muestren a la derecha y los contenidos a la izquierda en una sola consulta. por ejemplo de la subseccion desarrollo personal de la seccion estimulacion que me muestre los detalles de la subseccion.

mi pregunta es como hago para que en una sola consulta pueda mostrar las subsecciones y el contenido de la subseccion ?.

yo antes habia realizado 3 consultas. una para mostrar a que seccion pertenece, luego las subsecciones (que son 9 dicho sea de paso) y el resto para mostrar el contenido de la subseccion.

este es mi codigo.

Código PHP:
Ver original
  1. // secciones
  2. $sql_secciones  = "SELECT * FROM `menu_secciones` WHERE url_subseccion = '".$_GET['subseccion']."'";
  3. $rpta_secciones = query($sql_secciones,$cn) or die(mysql_error());
  4. $fila = fetch_array($rpta_secciones);
  5.  
  6. //subsecciones
  7. $sql_subsecciones  = "SELECT * FROM `menu_secciones` WHERE idsubseccion = '".$fila['idseccion']."'";
  8. $rpta_subsecciones = query($sql_subsecciones,$cn) or die(mysql_error());
  9.  
  10. while($fila2 = fetch_array($rpta_subsecciones))
  11. {
  12.     echo $fila2['subseccion'];
  13.     echo "<br />";
  14. }
  15.  
  16. // contenido de la subseccion.
  17. $sql_contenidos  =  "SELECT c.*, ms.* FROM contenido_seccion c
  18.                      LEFT JOIN menu_secciones ms ON (c.idseccion = ms.idseccion)
  19.                      WHERE c.idseccion = '".$fila['idsubseccion']."'";
  20.                    
  21. $rpta_contenidos = query($sql_contenidos) or die(mysql_error());
  22. $row_contenidos  = fetch_array($rpta_contenidos);
  23.  
  24. echo $row_contenidos['subseccion'];
  25. echo "<br />";
  26. echo $row_contenidos['detalle'];

no se si esta es la mejor manera correcta de hacerlo. les estare agradecido si me ayudan con mi tema.

Nota. las secciones, subsecciones y los cntenidos los estoy mostrando con url amigables.

saludos.

Última edición por esaenz22; 08/04/2012 a las 20:59 Razón: correccion del tema.
  #2 (permalink)  
Antiguo 08/04/2012, 21:27
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: como mostrar contenidos de las secciones y subsecciones en un solo query

Saludos , este tema realmente es perteneciente a base de datos no tiene nada que ver con php
pero te podria decir que para que dos tablas distintas se pueda involucrar en una misma consulta deberia de existir un campo en comun para ambas , algo que la relaciones entre si

y luego hacer una consulta tal cual como la haces en linea 17 utilizando join
  #3 (permalink)  
Antiguo 08/04/2012, 21:59
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: como mostrar contenidos de las secciones y subsecciones en un solo query

gracias por responder gjx2. si tiene que ver tambien con php. por logica estoy mostrando datos. como vuelvo a preguntar si se puede reducir el codigo con una 2 dos consultas para mostrar las subsecciones y el contenido de la subseccion ?.

alli esta la duda que tengo.

saludos.
  #4 (permalink)  
Antiguo 08/04/2012, 22:43
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: como mostrar contenidos de las secciones y subsecciones en un solo query

Como te dije antes esto no tiene que ver con php es un error de lógica , php no tiene la culpa de que no conozca el significado de join

1- No se porque para obtener la subseccion tienes que hacer dos consulta a la misma tabla, esto es algo fuera de lógica y que no tiene que ver con php vuelvo y te digo esto es un error de lógica de programación claro de que un programador de php te pueda ayudar es una cosa pero que no te este dando el resultado esperado es otra.


2- Luego con el id optenido de la tabla de menu_secciones haces uso de join a una tabla de contenido_seccion para finalmente obtener estos datos
Código PHP:
Ver original
  1. echo $row_contenidos['subseccion'];
  2. echo "<br />";
  3. echo $row_contenidos['detalle'];

3- haces mal uso de las funciones para trabajar con mysql en php como en la lineas 3,4,8 no utilizas el prefijo de mysql_ en ninguna parte que para ser sincero desconozco la razon.

Nota:
Cuando tienes dos tablas la cual en un futuro piensas que de alguna forma estarán vinculadas debes de crearle un punto de acceso por asi decirlo para que puedas hacer el march.

y luego utilizar la potencia de join para enlazarla , Ojo: esto no es php join es una función de mysql en este caso.


la solucion a tu problema podria ser esta.

Código PHP:
Ver original
  1. $sql_secciones  =
  2.             "SELECT contenido_seccion.*,menu_secciones.* FROM menu_secciones
  3.             JOIN contenido_seccion  ON contenido_seccion.idseccion = menu_secciones.idseccion
  4.             WHERE menu_secciones.url_subseccion = '".$_GET['subseccion']."'";
  5.            
  6. $rpta_contenidos = mysql_query($sql_contenidos) or die(mysql_error());
  7. $row_contenidos  = mysql_fetch_array($rpta_contenidos);
  8.  
  9. echo $row_contenidos['subseccion'];
  10. echo "<br />";
  11. echo $row_contenidos['detalle'];

Espero haberte ayudado no es mi entencion ofender pero debes de leer aun mas.
  #5 (permalink)  
Antiguo 09/04/2012, 08:56
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: como mostrar contenidos de las secciones y subsecciones en un solo query

Gracias por la ayuda. en primer lugar como tu estas diciendo.

3- haces mal uso de las funciones para trabajar con mysql en php como en la lineas 3,4,8 no utilizas el prefijo de mysql_ en ninguna parte que para ser sincero desconozco la razon.

si he utlizado las funciones de php y mysql. no especifique que he creado funciones como query, fetch_array, etc. si cambiara el nombre de query() por otro nombre, seria el mismo resultado. en parte ya es por logica que no he mostrado correctamente los datos.

y luego utilizar la potencia de join para enlazarla , Ojo: esto no es php join es una función de mysql en este caso.

Se que la funcion join es mysql. si estuviera hablando solo de bd, el post lo hubiera publicado en el foro de base de datos.

Voy a tratar de resumir para que se entienda.

- La subeccion estimulacion tiene 9 subsecciones de la seccion servicios. Las subsecciones que se muestren a la izquierda.

- Que me muestre los detalles de la subseccion desarrollo social asi como esta imagen.



nuevamente dejo mis tablas con los registros de las secciones y los contenidos.

Contenidos



Secciones



vuelvo a preguntar nuevamente. como hago para que en una sola consulta pueda mostrar las subsecciones y el contenido de la subseccion?.

y esto si tiene que ver con php con mysql.

saludos.

Última edición por esaenz22; 09/04/2012 a las 09:03 Razón: correccion del tema.

Etiquetas: contenidos, query, secciones, sql, 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 04:49.