Foros del Web » Programando para Internet » PHP »

Borrado de los ceros de delante al recoger campo ZEROFILL

Estas en el tema de Borrado de los ceros de delante al recoger campo ZEROFILL en el foro de PHP en Foros del Web. Hola buenas, resulta que en una bd mysql tengo un campo de nombre PCOD que es un: int(4) UNSIGNED ZEROFILL con valor por defecto de ...
  #1 (permalink)  
Antiguo 16/05/2008, 15:07
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
Borrado de los ceros de delante al recoger campo ZEROFILL

Hola buenas, resulta que en una bd mysql tengo un campo de nombre PCOD que es un: int(4) UNSIGNED ZEROFILL con valor por defecto de 0000 y al recogerlo en php con mysql_fetch_array y asignándolo a una variable, me quita los ceros de delante y me usa sólo el número sin los ceros.

Lo extraño es que en el anterior hosting que tenía funcionaba bien, aunque creo que era una versión de php más antigua, al igual que de mysql.

El script es algo así como:

$result = mysql_query($sql,$con);
if($prod = mysql_fetch_array($result)){
$productocod[$i] = $prod["PCOD"];
...
...


y esa variable $productocod[$i] si la uso, si hago un "echo" por ejemplo, me muestra los valores de la bd pero sin los ceros de delante. O sea si es un 0001 me muestra un 1.

¿Me podriáis decir el por qué?
Muchas gracias.
  #2 (permalink)  
Antiguo 16/05/2008, 15:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Borrado de los ceros de delante al recoger campo ZEROFILL

Prueba hacer un var_dump( $prod ); para que veas si MySQL te esta regresando el valor con los ceros.

Saludos.
  #3 (permalink)  
Antiguo 17/05/2008, 07:48
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
Respuesta: Borrado de los ceros de delante al recoger campo ZEROFILL

Pues parece que me viene mal ya desde MYSQL porque el var_dump me da los valores sin ceros delante... ¿qué pasa entonces? Los valores guardados en mysql son con los ceros delante...

array(37) { [0]=> string(3) "556" ["PID"]=> string(3) "556" [1]=> string(2) "50" ["PCOD"]=> string(2) "50"....
(PCOD debería de ser 0050 en vez de 50)
  #4 (permalink)  
Antiguo 17/05/2008, 11:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Borrado de los ceros de delante al recoger campo ZEROFILL

Haz verificado que tu tabla en MySQL tenga el Zero Fill, puede ser que este desactivado para tu tabla.

Saludos.
  #5 (permalink)  
Antiguo 18/05/2008, 06:18
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
Respuesta: Borrado de los ceros de delante al recoger campo ZEROFILL

¿Desactivado para mi tabla? ¿Dónde miro eso? El campo está definido tal que:

Campo Tipo Atributos Nulo Predeterminado
PCOD int(4) UNSIGNED ZEROFILL No 0000

El atributo UNSIGNED ZEROFILL está puesto en el campo.
  #6 (permalink)  
Antiguo 18/05/2008, 09:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Borrado de los ceros de delante al recoger campo ZEROFILL

¿En PHPMyAdmin o en cualquier otro gestor de bases de datos ves los campos con los 0s?

Saludos.
  #7 (permalink)  
Antiguo 18/05/2008, 10:28
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
Respuesta: Borrado de los ceros de delante al recoger campo ZEROFILL

Claro claro, salen con los ceros. Y se añaden bien con los ceros delante. Eso es lo extraño, que al recogerlos se los quita...

Antes me funcionaba bien en un server linux con php 4 pero cambié de hospedaje a un server windows con php 5 y con el mismo programa y la antigua bd importada, pasa esto, que me quita los ceros delante cuando antes no lo hacía. Tiene que ser alguna opción extraña por ahí porque la bd y el programa php es el mismo...
  #8 (permalink)  
Antiguo 19/05/2008, 07:07
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 20 años
Puntos: 0
Respuesta: Borrado de los ceros de delante al recoger campo ZEROFILL

Es la consulta MYSQL que creo que por el UNION me borra los ceros, porque sin él sí salen correctamente. Creo que puede deberse al cambio a Mysql 5. La consulta es la siguiente:

$sql = "(select * FROM productos join cosas ON productos.PID=cosas.PID WHERE cosas.E_TIPO='$scid' AND productos.PSTOCK<>0 ORDER BY cosas." . $sort . " " . $type ." LIMIT ". $inicial ."," .$cantreg. ") UNION (select * FROM productos join cosas ON productos.PID=cosas.PID WHERE cosas.E_TIPO='$scid' AND productos.PSTOCK=0 ORDER BY cosas." . $sort . " " . $type ." LIMIT ". $inicial ."," .$cantreg. ")";

¿Alguna solución para que no me quite los ceros y la consulta sea la misma?
La idea de la consulta es que me coja todos los productos de el tipo determinado que tengan Stock mayor de 0 (productos.PSTOCK<>0) y que justo después me añada los productos de stock cero (productos.PSTOCK=0) para que así luego los tenga ordenados de esa forma en el array de recogida.

Graciasss
  #9 (permalink)  
Antiguo 19/05/2008, 08:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Borrado de los ceros de delante al recoger campo ZEROFILL

Te recomiendo pongas tu duda con tu SQL en el foro de Bases de Datos.

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 01:11.