Ciclo para ver si un dato es Numerico
Publicado por Kathyu (905 intervenciones) el 05/09/2019 17:37:13
Saludos, tengo el siguiente dilema.
Tengo un formulario que pide factura y numero, tengo un campo varchar en una tabla para ello, este puede aceptar números y letras que vienen del formulario, se me ha pedido que si en el formulario no ingresan nada que yo coloque un numero correlativo.
Fue fácil, hice una funcion getLastDoc() me voy a la tabla, selecciono el ultimo numero y le sumo uno (1), asi si en la tabla no habia nada, me pone 1, y al siguiente le pone 2 y así sucesivamente...
El problema me resulta cuando en el campo anterior hay un dato alfanumérico, por ejemplo C-3PO, entonces mi función getLastDoc() no puede sumar uno a mi dato porque este no es numérico, entonces con la función is_numeric compruebo si el dato es numero y le sumo uno, pero que pasa si mi dato es alfanumérico? tengo que hacer un ciclo hasta llegar al ultimo numero puro
Entonces no encuentro la lógica para el ciclo (while creo) correcto. He hecho pruebas (que terminan en un infinity loop) pero creo que la lógica iría algo así:
Básicamente el primer dato que recorrería seria C-3PO y como no es numérico volvería a ir a la DB, el segundo seria RTFM-29 y volvería a ir a la base, pero el tercero (la tercer vuelta del ciclo) seria 27 entonces le sumaria 1 y mi variable $ultimoNum ahora valdría 28, fácil verdad?
Lastima que no funciona, alguna idea?
Tengo un formulario que pide factura y numero, tengo un campo varchar en una tabla para ello, este puede aceptar números y letras que vienen del formulario, se me ha pedido que si en el formulario no ingresan nada que yo coloque un numero correlativo.
Fue fácil, hice una funcion getLastDoc() me voy a la tabla, selecciono el ultimo numero y le sumo uno (1), asi si en la tabla no habia nada, me pone 1, y al siguiente le pone 2 y así sucesivamente...
1
2
3
4
5
6
7
8
9
// Datos en la Tabla de la DB
NumDoc
1
2
3
...
25
26
27
El problema me resulta cuando en el campo anterior hay un dato alfanumérico, por ejemplo C-3PO, entonces mi función getLastDoc() no puede sumar uno a mi dato porque este no es numérico, entonces con la función is_numeric compruebo si el dato es numero y le sumo uno, pero que pasa si mi dato es alfanumérico? tengo que hacer un ciclo hasta llegar al ultimo numero puro
1
2
3
4
5
6
7
8
9
10
11
// Datos en la Tabla de la DB
NumDoc
1
2
3
...
25
26
27
RTFM-29
C-3PO
Entonces no encuentro la lógica para el ciclo (while creo) correcto. He hecho pruebas (que terminan en un infinity loop) pero creo que la lógica iría algo así:
1
2
3
4
5
$ultimoNum = ''; // Solo declaro la variable
while (is_numeric($ultimoNum) == FALSE) { // Mientras el resultado de la función is_numeric($ultimoNum) sea FALSO
$ultimoNum = $querys->getLastDoc()[0]['documento_num']; // Que se meta a la DB y siga trayendo el otro numero que le sigue
}
$ultimoNum = $ultimoNum + 1; // Cuando $ultimoNum sea numérico que le sume uno que el programa continué
Básicamente el primer dato que recorrería seria C-3PO y como no es numérico volvería a ir a la DB, el segundo seria RTFM-29 y volvería a ir a la base, pero el tercero (la tercer vuelta del ciclo) seria 27 entonces le sumaria 1 y mi variable $ultimoNum ahora valdría 28, fácil verdad?
Lastima que no funciona, alguna idea?
Valora esta pregunta


0