Foros del Web » Programando para Internet » PHP »

seleccionar valores que no hayan aparecido anteriormente (php, sql)

Estas en el tema de seleccionar valores que no hayan aparecido anteriormente (php, sql) en el foro de PHP en Foros del Web. Hola buenaaas Voy al grano. En una sección de galería de imágenes, muestro primero 4 categorías (las más vistas) luego debajo, 4 mas (al azar) ...
  #1 (permalink)  
Antiguo 19/10/2006, 23:01
Avatar de kctus
Usuario baneado!
 
Fecha de Ingreso: noviembre-2002
Ubicación: ToledoBsAsGaliciaBolivia
Mensajes: 1.038
Antigüedad: 21 años, 6 meses
Puntos: 1
seleccionar valores que no hayan aparecido anteriormente (php, sql)

Hola buenaaas

Voy al grano.

En una sección de galería de imágenes, muestro primero 4 categorías (las más vistas) luego debajo, 4 mas (al azar) y debajo, otras 4 (las últimas registradas)
Mi problema es, como poder hacer para que no se repita la misma categoría en alguna de esas tres secciones.
Pongo el código con el que obtengo los datos de cada una de las secciones (lo cual funciona perfectamente)

Código PHP:
// MOSTRAMOS LAS 4 CATEGORIAS MAS VISTAS
$aindex1 "select zona_id, nombre from zonas ORDER BY view DESC LIMIT 0,4";
$bindex1 mysql_query($aindex1);
$i=1;
while (
$cindex1=mysql_fetch_array($bindex1)) { 
    
$urlzona[$i] = $cindex1['nombre'];
    ++
$i;
}
// MOSTRAMOS LAS 4 CATEGORIAS AL AZAR
$aindex2 "select zona_id, nombre from zonas ORDER BY RAND() LIMIT 0,4";
$bindex2 mysql_query($aindex2);
$i=1;
while (
$cindex2=mysql_fetch_array($bindex2)) { 
    
$urlzona2[$i] = $cindex2['nombre'];
    ++
$i;
}
// MOSTRAMOS LAS 4 ULTIMAS CATEGORIAS
$aindex3 "select zona_id, nombre from zonas ORDER BY regdate DESC LIMIT 0,4";
$bindex3 mysql_query($aindex3);
$i=1;
while (
$cindex3=mysql_fetch_array($bindex3)) { 
    
$urlzona3[$i] = $cindex3['nombre'];
    ++
$i;

Alguna idea? Obviamente, supongo que lo más lógico es poner de condicion a las de "al azar" que no obtenga ningun resultado que ya esté en las "mas vistas". Y en "las ultimas", igual pero con las dos anteriores.

Pero no termino de concretarlo.... graciaas!
  #2 (permalink)  
Antiguo 20/10/2006, 09:03
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Yo lo haría de esa forma, sí. Basta con agregar una cláusula WHERE,

WHERE zona_id <> (valor anterior) AND zona_id <> (otro valor)

Y para guardar los ID, simplemente en cada iteración del while, ponés algo como:
$ids = array(); (antes de empezar el primer while)

$ids[count($ids)] = $cindex['zona_id']; (dentro de cada while)

Con eso, en cada pasada del while vas agregando a la matriz $ids el valor de id obtenido.


Saludos.
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 09:08.