Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/04/2018, 06:14
tonigomila1988
 
Fecha de Ingreso: mayo-2011
Ubicación: Palma de Mallorca
Mensajes: 108
Antigüedad: 13 años
Puntos: 4
PDO Mostrar Categorias Subcategorias Contenido

Hola a todos,

tengo una idea clara de como quiero hacer funcionar el código:

tengo una tabla de categorias de esta manera:

Código MySQL:
Ver original
  1. ctg_id ctg_parent ctg_nom  ctg_titol
  2. 1      0          Info  Info
  3. ...
  4. 7      1          Primeros Pasos  Nuestros primeros pasos
  5. 8      1          Desarrollo    Avanzando con paso firme
  6. ..

y una tabla contenido que tiene una FK a categorias, para determinar en que categoria va el contenido.

La prueba que quiero hacer es en una página, mostrar en bucle la categoria madre, sus subcategorias y dentro de las mismas, el contenido asociado.

Tengo un código PDO para la consulta a las categorías madre:

Código PHP:
Ver original
  1. $connect = connectDB($dbconfig);
  2.     // preparar sentencia sql a ejecutar.
  3.     $sql = "SELECT ctg_id, ctg_titol FROM categories WHERE ctg_parent = 0";
  4.     $stmt = $connect->prepare($sql);
  5.     // ejecutar sentencia
  6.     $stmt->execute();
  7.     // guardamos el resultado como un array
  8.     $categories = $stmt->fetchAll(PDO::FETCH_ASSOC);

Claro, lo que yo entiendo, y como he empezado es recorrer el array y mostrar el titulo de la categoria

Código PHP:
Ver original
  1. <?php
  2.     foreach ($categories as $categoria) {
  3.         echo "<h2>".$categoria['ctg_titol']."<h2>";
  4. }
  5. ?>

y luego dentro del foreach, añadir otra consulta para las subcategorias con el id de ese momento

Código PHP:
Ver original
  1. <?php
  2.     foreach ($categories as $categoria) {
  3.         echo "<h2>".$categoria['ctg_titol']."<h2>";
  4.         $sql = "SELECT ctg_id, ctg_titol FROM categories WHERE ctg_parent = ?"
  5.         $stmt->execute($categoria['ctg_id']);
  6.     }  
  7. ?>

Pero leyendo un poco por los posts, al hacer estas llamadas en bucle puede saturar el servidor, así que estoy bastante confundido de como replantear esto, si voy bien así o debo cambiar el planteamiento de las consultas.

Gracias por vuestra atención.

Un saludo.