Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/11/2011, 00:33
Avatar de jorgelpadronb
jorgelpadronb
 
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: error en generar codigo de una tabla

Hola amigo. Parece que no me captaste. Te explico mejor. Mira, en el primer script que posteaste, al principio, declaras:

$lon="";

Esto hace que $lon se inicialice como una variable string.

Más abajo, casi al final utilizas a $lon como segundo parámetro en la llamada a una función str_pad. Si te fijas, traduciendo tu error al Español, dice: se esperaba un número y se encuentra un string, y mensiona a un segundo parámetro de la misma función str_pad a la que llamas casi al final. Ese segundo parámetro que debería ser numérico es $lon, que ahora está funcionando como un string.

Para más información, la función str_pad, según la referencia de PHP que tengo acá, requiere 3 parámetros:

1- Un valor string.
2- Un valor numérico (que es en tu caso $lon)
3- Otro string

Ejemplo:

$lon=4;
echo str_pad("ejemplo",$lon,"H");

Esto imprime: ejemploHHHH

Esta función lo que hace es concatenar el string del primer parámetro con una cadena que contiene al string del tercer parámetro, repetido tantas veces como especifica el número del segundo parámetro ($lon) Por eso $lon tiene que ser un número y no un string.

En tucaso:

str_pad("1",$lon,"0") lo que hace es devolver "1" concatenado con $lon cantidad de "0"s.
Suponiendo que $lon=5, tu función str_pad devuelve 100000

En el segundo script ilustras como llamas a la función newIdTabla y pasa en el parámetro $lon un valor '8' Desde ahí ya estamos mal, debería ser 8 y no '8'. Encima de eso, ya dentro de la función, en la segunda línea sobreescribes el valor de $lon con $lon=""; asignándole un string vacío. Lógicamente al pasarlo a str_pad por donde debería entrar un némero, ahí viene el error.

Soluciones el valor de $lon tiene que ser numérico en todos los casos. Por tanto cuando llames a la función newIdTabla, no le pases '8' sino 8. Además elimina la linea $lon=""; que te está sobreescribiendo el valor que entra por parámetros.

Haz esa prueba y verás. Saludos.

Última edición por jorgelpadronb; 19/11/2011 a las 01:29