Foros del Web » Programando para Internet » PHP »

Sencilla pregunta: en busca de una funcion

Estas en el tema de Sencilla pregunta: en busca de una funcion en el foro de PHP en Foros del Web. Hola chicos/as, en esta oportunidad les escribo para consultarles si existe algúna forma en PHP para saber en que número de fila se encuentra determinado ...
  #1 (permalink)  
Antiguo 19/09/2005, 10:21
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 12 años, 3 meses
Puntos: 2
Sencilla pregunta: en busca de una funcion

Hola chicos/as, en esta oportunidad les escribo para consultarles si existe algúna forma en PHP para saber en que número de fila se encuentra determinado dato a buscar... por ejemplo tengo una tabla con una única columna llamada "nombre" y necesito saber en que posición se encuentra el nombre "pepe".
Lamentablemente no puedo numerar las filas, xq si decido borrar alguna de por el medio, la numeración ya no me serviría, y volver a numerar toda la tabla no me parece algo demasiado bueno...
Les agradezco de antemano... saludos!
  #2 (permalink)  
Antiguo 19/09/2005, 10:29
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 12 años, 2 meses
Puntos: 18
Ahora mismo no se me ocurre una funcion para hacer eso. Sin embargo, te aconsejo que cada tabla que crees tenga un campo identificador (auto numérico). Le ayuda al programador y le ayuda al sistema (a hacer búsquedas, por ejemplo)
  #3 (permalink)  
Antiguo 19/09/2005, 11:06
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 12 años, 3 meses
Puntos: 2
Te agradezco jerkan por tu respuesta y recomendación, pero lamentablemente en este caso el auto numérico no me es útil para mi problema... en C la mysql_row_tell sirve bárbara para eso, pero en PHP no encuentro algo así... alguno tiene alguna idea?
Saludos
  #4 (permalink)  
Antiguo 19/09/2005, 11:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero que Base de datos usas? .. Mysql? .. Este tema lo deberías resolver con SQL no desde PHP ...

Supuestamente tu deberías crear tus tablas con campos autonuméticos y únicos .. (como un campo más de tu tablas) .. ese número (ID) es el que hará único a tu registro (de tus tablas), si borras regitros .. ningún problema .. el espacio queda ahí (no se "rellena" con otro registro) eso es lo que hará único a tu registro y mantendrá la "integridad referencial" de tus relaciones.

Concreta el tema para ver de mover tu mensaje al foro de "Base de datos" ..

Un saludo,
  #5 (permalink)  
Antiguo 19/09/2005, 12:00
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 12 años, 3 meses
Puntos: 2
Hola Cluster, antes que nada gracias por responder...

Paso a explicar detalladamente. Mi base de datos efectivamente es MySQL.
Dentro de la base tengo una lista bastante extensa de usuarios registrados, contenedora de diferentes columnas. Una de esas columnas es el ID, que para lo único que lo utilizo es para saber (en el panel de perfil de cada usuario) el número que le corresponde (por orden de llegada) a cada persona.
Por ejemplo si tengo 10 usuarios registrados, un nuevo usuario tendrá el número 11, que aparecerá en su perfil. Hasta ahí todo bárbaro. El problema comenzó cuando uno de los webmasters, se le ocurrió hacer una terrible limpieza de la base, eliminando varias decenas de usuarios, con lo que en el panel de perfil de "X" usuario, aparece que es el número 160, cuando en realidad solo quedaron 50 usuarios. Esto pasa debido a que el ID es fijo, y siempre se seguirá incrementando, por eso buscaba una posibilidad de saber en que posición de la tabla se encuentra determinado registro.

Espero ahora sí haber sido claro con la exposición del problema, que lo ubiqué en este foro porque sé que desde otros lenguajes eso se realiza sin problemas, pero con PHP (justamente lo que necesito) no le encuentro solución.

Desde ya muchas gracias.
Saludos.
  #6 (permalink)  
Antiguo 19/09/2005, 12:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. en ese caso .. debes diferenciar bien lo que es y significa para "tu modelo de datos" ese ID que es secuencial y único con un "código de usuario" o "numerador de usuarios".

Ese ID que ahora usas .. debe quedar como está .. ese es el campo que debes usar para referenciarte a el y así hacerlo único; por qué hacer esto? .. Imagina:
El link para ver mi perfil de usuario en ese sistema era algo tipo: usuarios.php?id=10 .. llegué yo y puse ese perfil en un e-mail . .en un foro .. etc .. Ahora ya no existo como "id=10" por qué lo borraron, OK? .. Si tu validas cuando te piden ese "ID" si existe o no .. me darás el mensaje "ya no existe tal usuario" .. (supongo que esto lo harás). Ese es el objetivo de que NO cambie ese ID y siga como está. Esto es parte de la teoría de "integridad referencial".

Ahora .. si lo que te preocupa es cuando muestras tus usaurios .. haz un contador:

Código PHP:
$i=0;
while (
$row=mysql_fetch_array($resultado)){
echo 
$i." -> ".$row['usuario']."<br>";
$i++;

Realmente como te comento, ese "número" no debes usarlo como referencia!. Es tu "ID" actual el que manda a efectos de relaciones.

Siempre puedes contar tus usuarios (con SQL como COUNT()) para decir cosas tipo "tenemos tantos usuarios en nuestra BD" .. UD. es el usuario X° registrado, su "ID" en el sistema es TAL" ...

Un saludo,
  #7 (permalink)  
Antiguo 19/09/2005, 12:26
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 12 años, 3 meses
Puntos: 2
Gracias nuevamente por tu pronta respuesta... ahora el tema se me va aclarando de a poco.
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:04.