Seleccionar el proximo usuario activo

  • Autor Autor roberts
  • Fecha de inicio Fecha de inicio
R

roberts

Préstamo
Gamma
Programador
Hola amigos, me he estado quemando un poco la cabeza intentando hacer esto. :grumpy:

Bien, es lo siguiente;

Necesito crear una función que busque (De abajo hacia arriba) un usuario de la base de datos que el valor de la tabla status sea 1. Pero, no debe hacer un while y leer todos los registros con ese valor, solo uno de ellos y debe saltar simpre al primero. Por ejemplo;

Tengo 5 usuarios registrados:

Id - nombre - status
1 --- Jong -------- 1
2 --- Roberts ----- 1
3 --- Maria -------- 2
4 --- Jose ---------- 1
5 --- Jonny -------- 1

En este ejemplo tomamos a Jonny como impulso, por lo que vamos a leer los registros por encima de el, saltamos a Jose por ser el primero (aunque tenga el valor 1), el usuario que deberia ser seleccionado es Roberts, por ser el primero con el Status 1 despues de haber saltado a Jose ya que Maria tiene el Status 2.

Para mi ha sido un reto, espero alguno de ustedes me pueda ayudar.

Saludos
 
PHP:
mysql_query("SELECT * FROM usuarios WHERE status=1 ORDER BY  Id DESC LIMIT 0,1");

Segun lo que planteas, el usuario Roberts no sería el último, el último usuario seria Jonny, ya que cuando agregas registros el ID incrementa , el primer usuario seria Roberts. (Es lo que entiendo por lo que redactas, si no es así se más claro con lo que quieres hacer y para que lo quieres hacer).
 
Última edición por un moderador:
Pues a mi se me ocurre hacer un select donde le id<idelegido y status=1.
Te quedará una lista (o arreglo) y escogerás el primero del arreglo (o el segundo, por el salto que dices que aún no entiendo porque lo haces).

¿Es lo que buscas?
 
PHP:
mysql_query("SELECT * FROM usuarios WHERE status=1 ORDER BY  Id DESC LIMIT 0,1");

Segun lo que planteas, el usuario Roberts no sería el último, el último usuario seria Jonny, ya que cuando agregas registros el ID incrementa , el primer usuario seria Roberts. (Es lo que entiendo por lo que redactas, si no es así se más claro con lo que quieres hacer y para que lo quieres hacer).

Gracias por responder, el problema es que debo empezar a leer los registros desde un usuario determinado, en este caso Jonny, puede que debajo de el haya mas registros y arriba de Roberts haya otros tambien.

---------- Post agregado el 13-abr-2014 hora: 22:03 ----------

Pues a mi se me ocurre hacer un select donde le id<idelegido y status=1.
Te quedará una lista (o arreglo) y escogerás el primero del arreglo (o el segundo, por el salto que dices que aún no entiendo porque lo haces).

¿Es lo que buscas?

Esto me da una idea 😎

Deja y pruebo, gracias

Nota: sigue sin funcionar
 
Última edición:
PHP:
$ultimo = mysql_fetch_array(mysql_query("SELECT `id` FROM `usuarios` ORDER BY `id` DESC LIMIT 1"));
$usuario = mysql_fetch_array(mysql_query("SELECT * FROM `usuarios` WHERE `id` < '".$ultimo['id']."' AND `status` = 1 ORDER BY `id` DESC LIMIT 1"));
print_r($usuario);
 
Última edición:
PHP:
$ultimo = mysql_fetch_array(mysql_query("SELECT `id` FROM `usuarios` ORDER BY `id` DESC LIMIT 1"));
$usuario = mysql_fetch_array(mysql_query("SELECT * FROM `usuarios` WHERE `id` < '".$last['id']."' AND `status` = 1 LIMIT 1"));
print_r($usuario);

Gracias man, voy a probar
 
Id - nombre - status
1 --- Jong -------- 1
2 --- Roberts ----- 1
3 --- Maria -------- 2
4 --- Jose ---------- 1
5 --- Jonny -------- 1
6 --- Pepito -------- 1
5 --- Juanito -------- 2
5 --- Andres -------- 1


PHP:
SELECT * FROM usuarios WHERE Id <= (SELECT Id FROM usuarios WHERE nombre = "Jonny" LIMIT 1) AND status = 1 ORDER BY Id DESC LIMIT 2, 10

Esta SQL devolvería

Id - nombre - status
2 --- Roberts ----- 1
1 --- Jong -------- 1
 
Atrás
Arriba