Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/07/2007, 16:25
Avatar de -Defero-
-Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Pregunta Menú y submenús con PHP y MySQL

No sé exactamente dónde debería ir esta duda, en PHP o en MySQL. Si algún moderador considera que el tema debe cambiar de subforo, lo comprenderé. Dicho esto, paso a explicar mi duda.

Quiero crear un documento que sea un compendio de enlaces extraídos de una base de datos MySQL, para poder gestionarlos desde el navegador mediante PHP. Quiero que se muestren de la siguiente manera:

Categoría A
enlace a
enlace b
enlace c

Categoría B
enlace d
enlace e
enlace f

Podría meter todos los enlaces en una misma tabla, añadirles un campo adicional para especificar a qué categoría corresponden, y crear una consulta para cada categoría. El problema es que en ese caso debería especificar de antemano cuáles serán las categorías que crearé, y escribir tantas consultas como categorías haya. Si más adelante decido añadir una nueva categoría, tendré que modificar la consulta.

En vez de eso, quiero poder añadir nuevas categorías en la base de datos mediante PHP, sin tener que modificar las consultas para añadir una nueva categoría.

Así que mi base de datos (de momento) constará de dos tablas: una de categorías, y otra de enlaces (más adelante quiero meter categorías y subcategorías, pero de momento no quiero complicarme tanto, vayamos paso a paso).

La tabla "categoria" tendrá dos campos: "ref_categoria" y "nombre".

La tabla "enlaces" tendrá cuatro campos: "ref_enlace", "ref_categoria" (que especificará a qué categoría corresponde cada enlace), "nombre", y "url".

Una vez montada la tabla y añadidos algunos datos de prueba, me pongo manos a la obra. Vamos a lo fácil: listar los distintos enlaces. Para simplificar sólo mostraré el dato "ref_enlace" (me salto la parte de conexión):

Código PHP:
<? 
$consulta 
"SELECT * FROM enlaces ORDER BY ref_enlace ASC";
$resultado mysql_query($consulta);
while (
$rows mysql_fetch_array($resultado))
echo 
"<li><b>Enlace $rows[ref_enlace]</b></li>";
$i++;
?>
Esto me muestra una lista de los elementos que he metido en la base de datos, pero sin "categorizar". Mi pregunta es, ¿cómo puedo combinar la consulta a la tabla de enlaces y a la tabla de categorías, para que se muestren los enlaces en sus respectivas categorías?

He estado buscando, y creo que se puede hacer mediante INNER JOIN, pero no estoy seguro. He intentado sustituir la consulta anterior por ésta:

Código PHP:
$consulta "SELECT * FROM enlaces INNER JOIN categoria ON enlaces.ref_categoria = categoria.ref_categoria ORDER BY categoria.ref_categoria_ ASC, enlaces.ref_enlace ASC"
Pero el resultado ha sido negativo, me da el siguiente error:

Cita:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/html/prueba.php on line 15
¿Alguien me podría orientar un poco? Estoy bastante perdido.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable