Ver Mensaje Individual
  #16 (permalink)  
Antiguo 10/03/2012, 11:52
IEKK
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 3 meses
Puntos: 202
Respuesta: mostrar datos bd según tipo de usuario

Lo prometido es deuda, así que te dejo un ejemplo, pero, como usas BD... mejor olvidar los ifs y los switch para las categorías.

Es un ejemplo, evidentemente es mejorable.
Cambia lo que necesites y no dejes la conexión y las consultas tan cutres. Y por supuesto recuerda poner seguridad al recoger el parámetro con $_GET.

¿Qué hace el ejemplo?
Crea varios enlaces con las categorías que tienes en la tabla Categorías.
Al hacer clic en cada enlace verás sólo las fotos de los animales escogidos.

Dirás: pero es que yo lo quería para los usuarios...
Es el mismo planteamiento. Sólo adáptalo a tu página.

¿Por qué las categorías están en una tabla y no en una columna?
Normalización de tablas (aquí no entro, cada cual que empolle lo suyo)

¿Por qué hay una subconsulta?
Por que el valor que se pasa por parámetro es el nombre pero buscamos las categorías por id (número)

¿Y porque no usar el número de id?
URL amigables y mejor indexación de las webs (Aquí tampoco entro en detalle por el mismo motivo)


Tabla categorías:
Código MySQL:
Ver original
  1. --
  2. -- Estructura de tabla para la tabla `categorias`
  3. --
  4.  
  5. CREATE TABLE IF NOT EXISTS `categorias` (
  6.   `id` int(11) NOT NULL AUTO_INCREMENT,
  7.   `nombre` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  8.   PRIMARY KEY (`id`)
  9. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
  10.  
  11. --
  12. -- Volcado de datos para la tabla `categorias`
  13. --
  14.  
  15. INSERT INTO `categorias` (`id`, `nombre`) VALUES
  16. (1, 'perros'),
  17. (2, 'largatos'),
  18. (3, 'peces');

Tabla imágenes:
Código MySQL:
Ver original
  1. --
  2. -- Estructura de tabla para la tabla `imagenes`
  3. --
  4.  
  5. CREATE TABLE IF NOT EXISTS `imagenes` (
  6.   `id` int(11) NOT NULL AUTO_INCREMENT,
  7.   `titulo` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
  8.   `ruta` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  9.   `categoria` tinyint(4) NOT NULL,
  10.   PRIMARY KEY (`id`)
  11. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;
  12.  
  13. --
  14. -- Volcado de datos para la tabla `imagenes`
  15. --
  16.  
  17. INSERT INTO `imagenes` (`id`, `titulo`, `ruta`, `categoria`) VALUES
  18. (1, '54645645654', 'img/labrador.jpg', 1),
  19. (2, 'rewrewrewrw', 'img/caniche_02.jpg', 1),
  20. (3, 'iguana al sol', 'img/lagarto.png', 2),
  21. (4, 'pez tropical', 'img/pez-león.gif', 3);

Página php:

Código PHP:
<!DOCTYPE HTML>
<html>

<head>

</head>

<body>

<?php

    $conexion 
mysql_connect("127.0.0.1","root","") or die ( "No se ha podido establecer la conexi&oacute;n con el servidor"); 
    
mysql_select_db("deprueba",$conexion); 

    
//Función q cargara cada contenido dependiendo del parámentro por URL
    
function cargarImagenes($categoria='')
    {                        
        if( 
$con=mysql_query("SELECT titulo, ruta FROM imagenes WHERE categoria=
                            (SELECT id FROM categorias WHERE nombre LIKE '"
.$categoria."')") or die("Error en la consulta: ".mysql_error()) )
        {
            while(
$rs mysql_fetch_assoc($con))
            {
                echo 
'Titulo: '.$rs['titulo'].'<br />
                      <img src="'
.$rs['ruta'].'" /><br /><br />';    
            }
        }        
    }
    
    
//Unos enlaces de prueba mostrando todas las categorias que tienes en la BD
    
if( $con=mysql_query("SELECT nombre FROM categorias") or die("Error en la consulta: ".mysql_error()) )
    {
        while(
$rs mysql_fetch_assoc($con))
        {    
            
$categorias[] = $rs['nombre'];
            echo 
'Enlace: <a href="'.$_SERVER['PHP_SELF'].'?categoria='.$rs['nombre'].'">'.$rs['nombre'].'</a><br />';    
        }

        if(isset(
$_GET['categoria']) )
        {        
            
cargarImagenes($_GET['categoria']);
        }
        elseif(
count($categorias) > 0)
        {
            
cargarImagenes($categorias[0]);
        }
    }
    else{
    echo 
'Ups no hay categorias en nuestra BD';
    }
?>
    
</body>
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(

Última edición por IEKK; 10/03/2012 a las 12:03