Foros del Web » Programando para Internet » PHP »

Posicion en la Base de Datos

Estas en el tema de Posicion en la Base de Datos en el foro de PHP en Foros del Web. Hola estoy ingresando clientes en una base de datos y necesito saber el lugar en que lo ingresa (obviamente será el ultimo) pero quiero que ...
  #1 (permalink)  
Antiguo 18/12/2004, 07:17
 
Fecha de Ingreso: julio-2002
Mensajes: 119
Antigüedad: 21 años, 9 meses
Puntos: 0
Posicion en la Base de Datos

Hola estoy ingresando clientes en una base de datos y necesito saber el lugar en que lo ingresa (obviamente será el ultimo) pero quiero que al ordenarlos por orden alfabetico, por ejemplo, me diga que, al ordenar alfabeticamente el usuario que acabo de ingresar (el 45 en orden de ingreso) es el 17 de la lista ordenada.... se entiende??

Ojala me puedan dar una manito porfa con este asunto...
  #2 (permalink)  
Antiguo 18/12/2004, 10:23
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
en sql existe una función que se llama last_insert_id(), que te devuelve el identificador de la última fila insertada.

Código:
SELECT LAST_INSERT_ID() AS last_id FROM usuarios;
recoje ese valor con php, y cuando muestres los usuarios en orden alfabético, compara ese id con el de cada usuario, cuando sean iguales, muestras en otro color la fila o lo que sea necesario para indicar que es el usuario que se acaba de agregar.

saludos
  #3 (permalink)  
Antiguo 18/12/2004, 10:24
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
bueno, last_insert_id() funciona para mysql, no estoy seguro en postgre, pero debe haber una función similar. En el estandar sql92 usaria:

Código:
SELECT MAX(user_id) AS last_id FROM users;
eso debe funcionar con cualquier motor que este dentro del estandar.

saludos
  #4 (permalink)  
Antiguo 18/12/2004, 10:44
 
Fecha de Ingreso: julio-2002
Mensajes: 119
Antigüedad: 21 años, 9 meses
Puntos: 0
es mas o menos similar a lo que necesito... pero especificamente necesito saber el indice de en registro en un ordenamiento particular...

por ejemplo si ordeno en forma ascendente el registro x es el 17 de la lista (me imagino que ese "17" es el identificador") y si lo ordeno en forma descendente es el 35...

son justamente esos valores (17 o 35) los que necesito... es el indice que obtiene el registro despues de ordenarse de cierta forma....

Ojala se pueda...
  #5 (permalink)  
Antiguo 18/12/2004, 22:08
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
lo que necesitas entonces es un simple contador. El identificador nunca cambia. Es independiente de si lo ordenaste en forma descendente o ascentedente. EL identificador es precisamente eso, una forma de identificar bajo cualquier circunstancia un registro. Cuando tu haces una consulta como esta:

Código:
INSERT INTO clientes(unique_id,name) VALUES (NULL,'nombre del cliente');
El campo unique_id será el próximo disponible de la tabla, suponiendo que cuando creaste la tabla hiciste que el campo fuera autoincrementable y único. Ese identificador lo puedes recuperar después de haber hecho la inserción de la forma que ya te expliqué. Ahora bien, simplemente cuando los ordenes en forma ascendente o descentente, tienes que contar cuantos registros hay antes. algo similar a esto:

Código PHP:
//insertas al usuario
$sql_insert "INSERT INTO customers (customer_id,customer_name) VALUES (NULL,'pedro paramo');";
mysq_query($sql);

//recuperas su identificador
$sql_recover_id "SELECT LAST_INSERT_ID() AS last_id FROM customers";
$rss mysql_query($sql_recover_id);
$row mysq_fetch_object($rss);
$id $row->last_id;

//haces una consulta ordenada por nombre descendentemente y cuentas el lugar
$sql "SELECT * FROM customers ORDER BY customer_name DESC";
$rss mysql_query($sql);
$counter 1;
while ( 
$customers mysql_fetch_object($rss) ) {
      if ( 
$id == $customers->customer_id ) {
            break;
      } else {
            
$counter++;
      }
}
echo 
"Eres el número {$num} de la lista ordenada alfabeticamente descendentemente"
es algo escueto, pero creo que está bien, o no te entendí lo que buscas.

saludos
  #6 (permalink)  
Antiguo 19/12/2004, 11:03
 
Fecha de Ingreso: julio-2002
Mensajes: 119
Antigüedad: 21 años, 9 meses
Puntos: 0
era justamente eso.. muchas gracias
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:17.