Buenas.
¿No os resultaría más sencillo tirar de un sencillo "id", que se almacenara
como la mayoría de estos registros (auto_increment, para distinguirlos), y
luego actualizar su saldo pendiente, fecha de último contacto o pago,
etcétera?
Por lo que cuentas, parece que se trata de un programa destinado a lo que en
algunos bancos se llama "Recobro". La fecha de morosidad podrías almacenar
con un simple TIME, y creo que sería menos lioso rescatar por SQL sus
informes.
A mi me parece mucho más sencillo hacerlo de esta forma, pero lo mismo hay
algo en lo que no caigo. Pero, salvo que nos digas algo más, me parece más
fácil (e incluso rápido) almacenarlos por un id generado por auto_increment,
rescatar los datos por TIME y tirar de UPDATE para actualizar saldo
pendiente, fecha de morosidad (si es necesario, no siempre lo es), etcétera.
Sacar el listado es sencillo, te valdría con hacer una consulta con la
condición WHERE saldo_pendiente > 0. Lo mismo me dejo algo.
Si resulta que lo tienes que hacer por fuerza creando el código de
identificación de cada persona con ese método, que a mi me sigue pareciendo
algo lioso, parece que dicho código siempre empieza con los seis caracteres
dedicados a la fecha.
Utiliza strlen, y crea una variable nueva extirpando los caracteres
correspondientes a la fecha y filtrando los ceros. Pásalo a un valor entero
con intval, y calcula el número siguiente a partir de ahí. Aunque tengas que
analizar los caracteres uno por uno, debería funcionar. Si los dos primeros
caracteres son ceros, te valdrá con añadirlos después.
Saber cuantos ceros añadir no debería ser problema, porque el número que
generaras te lo pondría fácil. Si pasas ese mismo número por un strlen, el
número de caracteres devueltos te dirá si es de 1, 2, 3 o 4 cifras. Ese te
daría el número de ceros a introducir entre la fecha y el número que buscas.
Espero no haberlo liado demasiado. Intentaré llevarme el mail a casa (no
tengo conexión casera, me conecto desde un ciber), e intentar traerte algo
de código que lo explique mejor.
Un saludo.
2009/1/7 Juan Manuel Acuña Barrera <gps1mx@gmail.com>
Inicio del mensaje reenviado:
De: Carlos Medina <info@simply-networks.de>
Fecha: 7 de enero de 2009 09:34:06 a.m. GMT-06:00
Para: php-es@lists.php.net
Asunto: [PHP-ES] Formatear un numero difícil
Responder a: info@simply-networks.de
Buenas a todos de la lista,
esta vez les comento que tengo la tarea de mostrar datos de personas que
no han pagado. No es que me guste mucho, pero bueno:
Resulta que necesito generar un script que me introduzca en la base de
datos personas con numeros de identificacion como 097732. Aqui el numero se
compone de el ano en dos cifras(09) y de una cantidad indefinida de numeros
detras de ellas. Por lo que he podido ver son de cuatro cifras. Ahora lo que
hay que hacer es generar nuevas personas morosas. Es decir tengo que
preguntar al mysql el ultimo de la lista (ya lo tengo hecho) y generar un
numero como el siguiente: 097733. Como ven no es muy trivial ya que me
resolveria la papeleta si los numeros detras del 09 comenzaran siempre en un
numero. La cuestion es que estamos por 090014. Es decir el numero que me
quedaria despues es 0015.
Tiene alguien alguna solucion que me pueda dar porfa? o por lo menos me
pueda guiar en donde mirar? ;-) no crean que no he buscado en php.netpero no lo encuentro :-D
Saludos
Carlos Medina
--
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit:
http://www.php.net/unsub.phpNo estoy muy seguro si es a lo que te refieres, pero puedes probar esto:
<?php
$prefijo='09';
$variable='0014';
$nuevaVariable=str_pad($variable+1, 4, "0", STR_PAD_LEFT);
echo "variable: $variable <br>";
echo "nuevaVariable: $nuevaVariable <br>";
echo "<br><br>";
echo "numero anterior: " . $prefijo . $variable . "<br>";
echo "nuevo numero: " . $prefijo . $nuevaVariable . "<br>";
?>
Espero que te sirva. Ojalá nos puedas avisar como te va con esto, ok?
Suerte!
Juan Manuel Acuña.