Foros del Web » Programando para Internet » PHP »

Cómo formatear un ID !!

Estas en el tema de Cómo formatear un ID !! en el foro de PHP en Foros del Web. Hola, tengo el sgte problema: Necesito formatear el campo ID de una tabla con el siguiente formato: xx.xxx.xxx-x cada 'x' puede ser cualquier número. Únicamente ...
  #1 (permalink)  
Antiguo 02/02/2006, 07:58
 
Fecha de Ingreso: enero-2005
Ubicación: Santiago de Chile
Mensajes: 29
Antigüedad: 12 años, 10 meses
Puntos: 0
Cómo formatear un ID !!

Hola, tengo el sgte problema:

Necesito formatear el campo ID de una tabla con el siguiente formato:

xx.xxx.xxx-x

cada 'x' puede ser cualquier número. Únicamente el último dígito (después del guión), puede ser, aparte de números, la letra "k".

Cómo puedo formatearlo?

Averigué que no se puede hacer directamente desde MySQL.

Gracias de antemano!!
Salu2
  #2 (permalink)  
Antiguo 02/02/2006, 08:22
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 14 años
Puntos: 19
mmm no entiendo mucho lo que queres hacer ...
me explicas un poco mas ??? saludos !!!!
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #3 (permalink)  
Antiguo 02/02/2006, 08:26
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Y como tienes el id, asi: 144393846?

Puedes usar las funciones de strings de php, como: sprintf() y substr()
  #4 (permalink)  
Antiguo 02/02/2006, 08:54
 
Fecha de Ingreso: enero-2005
Ubicación: Santiago de Chile
Mensajes: 29
Antigüedad: 12 años, 10 meses
Puntos: 0
Les explico, los ID deben como los siguientes:

Válidos
-------
12.323.652-1
5.212.560-9
01.234.672-2
56.004.700-K <--- la "k" es la única letra válida para identificación

Inválidos
--------
0.234.321-2 <-- ojo con el "cero" del principio
23.456.765-0 <-- el "cero" es inválido apra el dígito verificador (último)
10.999.922-A

Saludos
  #5 (permalink)  
Antiguo 02/02/2006, 08:59
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Yo creo que con una expresión regular puedes validar que se respete el formato, pero no las sé usar.
  #6 (permalink)  
Antiguo 02/02/2006, 09:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Averigué que no se puede hacer directamente desde MySQL
Mysql ofrece funciones de tratamiento de cadenas .. incluso de expresiones regulares así que eso (con más trabajo y complejo por supuesto) dependiendo de que estés haciendo podrías llegar hacerlo sólo con SQL y nada más ...

Deberías concretar de donde obtienes el dado o donde lo tienes ya.
¿Lo tienes en un campo de tu actual Base de datos? .. ¿te llega de un formulario HTML? ..

Por cierto .. si ese "ID" que dices es un "RUT" (Chileno) .. lo que tienes antes de - (guión) es un número que debes formatear con su separador de miles y centenas .. Así que si es que tuvieras el dato como "1289812897-k" podrías usar explode() para quedarte con el n° y el "digito verificador" (lo que vá despues del -" para poner tus puntos de miles con number_format()

Ahora .. por otro lado, .. ese campo "ID" de tu tabla (si concretases mejor .. por qué así sólo hacemos que "disparar" ideas). Si te refieres a que ese ID es el típico campo "unico, clave primaria y autonumérico" .. deberías usar ese ID SI ó SI y usar otro campo para almacenar ese "RUT" .. que sea "único" (UNIQUE), indexado .. etc ... si quieres (para evitar que se repita incluso si meten mano directamente a la tabla implicada) .. luego tu ya lo usaras para tus consultas SQL o relaciones con otras tablas (aunque deberías usar ese ID por un tema de optimización).

Un saludo,
  #7 (permalink)  
Antiguo 02/02/2006, 09:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. a ver ...

Tu que pretendes hacer exactamente?

Validar un RUT (chileno)? (donde lo tienes ahora y en que formato?)

Por qué un "RUT" su validación es con un algoritmo (base "11") (y que está en las FAQ's del foro PHP por ejemplo).

Un saludo,
  #8 (permalink)  
Antiguo 02/02/2006, 15:51
 
Fecha de Ingreso: enero-2005
Ubicación: Santiago de Chile
Mensajes: 29
Antigüedad: 12 años, 10 meses
Puntos: 0
Cita:
Iniciado por Cluster
Mysql ofrece funciones de tratamiento de cadenas .. incluso de expresiones regulares así que eso (con más trabajo y complejo por supuesto) dependiendo de que estés haciendo podrías llegar hacerlo sólo con SQL y nada más ...

Deberías concretar de donde obtienes el dado o donde lo tienes ya.
¿Lo tienes en un campo de tu actual Base de datos? .. ¿te llega de un formulario HTML? ..

Por cierto .. si ese "ID" que dices es un "RUT" (Chileno) .. lo que tienes antes de - (guión) es un número que debes formatear con su separador de miles y centenas .. Así que si es que tuvieras el dato como "1289812897-k" podrías usar explode() para quedarte con el n° y el "digito verificador" (lo que vá despues del -" para poner tus puntos de miles con number_format()

Ahora .. por otro lado, .. ese campo "ID" de tu tabla (si concretases mejor .. por qué así sólo hacemos que "disparar" ideas). Si te refieres a que ese ID es el típico campo "unico, clave primaria y autonumérico" .. deberías usar ese ID SI ó SI y usar otro campo para almacenar ese "RUT" .. que sea "único" (UNIQUE), indexado .. etc ... si quieres (para evitar que se repita incluso si meten mano directamente a la tabla implicada) .. luego tu ya lo usaras para tus consultas SQL o relaciones con otras tablas (aunque deberías usar ese ID por un tema de optimización).

Un saludo,
Hola Cluster, siento no haber respondido antes.
La idea no es validar ese RUT (por ahora), sino recibir ese dato desde un formulario HTML y después de eso formatearlo en la forma xx.xxx.xxx-x. Mi idea es que MySQL realice esa tarea automáticamente una vez que reciba el dato.

Voy a investigar sobre las expresiones regulares en MySQL y algunas funciones en php para lograr lo que necesito. En todo caso, MySQL es capaz de modificar un dato e ingresarlo a la base de datos?

Otra cosa, el campo ID o RUT sería un identificador único, llave primaria, pero no autonumérico. Tu me dices que es mejor tener un RUT y aparte un ID único?? Si es así, porque lo dices ???

Gracias y saludos
  #9 (permalink)  
Antiguo 03/02/2006, 08:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
La idea no es validar ese RUT (por ahora), sino recibir ese dato desde un formulario HTML y después de eso formatearlo en la forma xx.xxx.xxx-x. Mi idea es que MySQL realice esa tarea automáticamente una vez que reciba el dato.
Pero .. ese "dato" como lo ingresan? con qué formato posible? .. Mysql puedes en la sentencia SQL dar un formato a un dato usando las mismas expresiones regulares que las usarías desde PHP. Lo "bueno" de PHP simplemente es que como lenguaje de programación que es puedes tomar tu dato (el que te ingresan en tu formulario HTML) y tratarlo como gustes para dejarlo tal cual tu lo quieres en tu BD.

Por cierto .. deberías validar ese RUT SI o SI antes de dejarlo en tu BD .. no sé por qué no lo quieres validar . .pero ¿de que sirve ese dato no correcto? .. Bueno .. esto es discutible según tu caso .. pero deberías planteartelo (Rutinas para validar un RUT tienes en las FAQ en PHP .. también en Javascript .. y en muchos lenguajes).

Cita:
En todo caso, MySQL es capaz de modificar un dato e ingresarlo a la base de datos?
Si, .. por ejemplo:

Código:
$sql="INSERT INTO tabla (id,rut) VALUES ('',FUNCION('".$rut."'))";
Cuando digo "FUNCION()" me refiero a cualquier función de Mysql de las que dispones para tratar cadenas .. o numeros .. o fechas .. en definitiva .. lo que corresponda.

Un pequeño tutorial sobre expresiones regulares aplicadas a Mysql:
http://mysql.conclase.net/curso/index.php?cap=regulares

(Pero recuerda que las expresiones regulares NO son própias de PHP .. ni de Mysql .. Si quieres más información al respecto deberas buscar en otro tipo de manuales).

Cita:
Otra cosa, el campo ID o RUT sería un identificador único, llave primaria, pero no autonumérico. Tu me dices que es mejor tener un RUT y aparte un ID único?? Si es así, porque lo dices ???
El "rut" no podría ser "autonumérico" (eso es sólo aplicable al tipico "id" como lo usamos como único ..).

Si, .. por establecer relaciones, integridad referencial .. Imagina si un día te dá por cambiar el formato de esos "rut's" .. o incluso que tengas que modificar un dato así ..

Si relacionas tus registros por ese ID del registro .. el dato como el "rut" da lo mismo ..

ejemplo:

tabla cliente
id_cliente
rut
nombre


tabla clientes-facturas
id_factura
id_cliente <- Clave foránea relacion ambas tablas.
monto

De esta forma las relaciones, los indices .. las consultas SQL (con JOIN o sub-consultas) se agilizan mucho más que usar el "RUT" por ejemplo como dato "regado" por todas las tablas.

Todo esto es discutible y .. donde mejor te podrán orientar, aconsejar o afirmar todo esto (o rebatirlo) será en el foro de "Base de datos".

Un saludo,
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 04:00.