Ver Mensaje Individual
  #3  
Antiguo 04-01-2007
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Reputación: 20
D-MO Va por buen camino
Que tal Efelix.

#1
Supongamnos que tienes una venta de ropa, en esta tienes todo dividido por categorías de la siguiente manera:
  • Hombres
    • Camisas
      • Marca X
      • Marca Y
      • Marca Z
    • Playeras
      • ...
    • Pantalones
      • ...
    • Ropa Interior
      • ...
  • Mujeres
    • ...
  • Niños
    • ...
Esta estructura, que se podría comparar con una estructura de directorios (carpetas), debería estar guardada en una base de datos, la cual podría contener los siguientes campos:
Cita:
Tabla: Categorías
  • id
  • idsuperior
  • nombre
id: Almacenará el identificador de la categoría en cuestión.
idsuperior: Almacenará el id de la categoría padre, en caso de no poseer podre se colocará "0".
nombre: El nombre de la Categoría, ej: "Camisas".

Los datos deberán estar guardados de la siguiente manera:


Cita:
id: 1
idsuperior: 0
nombre: Hombres

-------------------------------------

id: 2
idsuperior: 1
nombre: Camisas

-------------------------------------

id: 3
idsuperior: 1
nombre: Pantalones

-------------------------------------

id: 4
idsuperior: 3
nombre: Marca X

-------------------------------------

...
De esa forma con cada una de las categorías.

Luego para identificar la estructura de la posición actual, bastará con un pequeño script en php que se encargue de tomar la posición en la que te encuentras y luego buscar quien es el padre, padre del padre, etc... hasta llegar a el que no posee padre.

ej:
Si tenemos la url:
Código:
http://dominio.com/categoria.php?id=4
Bastaría con un script como este:

Código PHP:
<?php
$id 
$_GET['id'];

$mCon = @ mysql_connect('host','user','pass');
if (
$mCon){
   
mysql_select_db('database');

   
$rQuery = @mysql_query("SELECT * FROM Categorias WHERE id = $id");
   if (
mysql_num_rows($rQuery)==1) {
      
$categoria[0]=mysql_fetch_object($rQuery);
      
$c 0;
      
$salirfalse;
      while(!
$salir){
        
$rQuery = @mysql_query('SELECT * FROM Categorias WHERE id = '.$categoria[$c]->idsuperior);
        
$categoria[++$c]=mysql_fetch_object($rQuery);        
    if(
$categoria[$c]->idsuperior==0){
          
$salir=true;
        }
      }

      for(
$i=count($categoria);$i>=0;$i--){
         echo .
'/'.$categoria[$i]->nombre;
      }

   } else {
      die (
"El id especificado no existe.");
   }
} else {
   die(
'Imposible conectar al Servidor de Base de Datos');
}
?>
El cual nos daría el siguiente resultado:
Código:
/Hombres/Pantalones/Marca X
Con unos pequeños cambios podrás hacer algo similar a la barra de navegación del club.

Nota:
Me he dado cuenta que mientras escribia, Kayetano se me adelantó, y ya no es necesario responder la segunda pregunta.

Saludos
Responder Con Cita