Foros del Web » Programando para Internet » PHP »

NUMBER_FORMAT (separador de miles)

Estas en el tema de NUMBER_FORMAT (separador de miles) en el foro de PHP en Foros del Web. Buen día. Necesito mostar mis datos numéricos con separador de miles y decimales. Tengo esto: Código PHP: <?php  include( 'sqlconfig.php' );  $inicio  =  $HTTP_POST_VARS [ ...
  #1 (permalink)  
Antiguo 29/05/2005, 06:55
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
NUMBER_FORMAT (separador de miles)

Buen día.

Necesito mostar mis datos numéricos con separador de miles y decimales.
Tengo esto:
Código PHP:
<?php 
include('sqlconfig.php'); 
$inicio $HTTP_POST_VARS["fechain"]; 
$final $HTTP_POST_VARS["fechafin"]; 
$tabla "searn"
?> 
<HTML> 
<TITLE><?=$title?> - Pagos por período</TITLE> 
<body> 
</body> 
</HTML> 
<?php 
$sql
=("SELECT id, points, TRUNCATE(SUM(amm1/10000),3), TRUNCATE(SUM(amm2/10000),3), TRUNCATE(SUM(amm1/10000-amm2/10000),3) FROM $tabla WHERE time>='$inicio' AND time<='$final' GROUP BY id"); 
$result mysql_query($sql$con) or die("Error al leer base de datos: ".mysql_error); 

/* Impresion de resultados en HTML */ 
   
echo "<strong><font color=red><br>Período $inicio - $final</strong></font>"
   echo 
"<TABLE BORDER='1'>\n"
   echo 
"<TR><TD><small><small>ID NR</small></small></TD><TD><small><small>PUNTOS</small></small></TD><TD><small><small>TOTAL</small></small></TD><TD><small><small>A PAGAR</small></small></TD><TD><small><small>RESTO</small></small></TD></TR>"
while (
$linea mysql_fetch_array($resultMYSQL_ASSOC)) { 
    echo 
"\t<tr>\n"
    foreach (
$linea as $valor_col) { 
        echo 
"\t\t<td><small><small>$valor_col</small></small></td>\n"
    } 
    echo 
"\t</tr>\n"

echo 
"</table>\n"

/* Liberar conjunto de resultados */ 
mysql_free_result($result); 

/* Cerrar la conexion */ 
mysql_close($con); 
?>
Todo bien, funciona y sé que el NUMBER_FORMAT de PHP me permite formatear como quiera los números pero no puedo aplicarlo a mi script.
Alguien sabe cómo ? Por favor
  #2 (permalink)  
Antiguo 29/05/2005, 07:29
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 19 años, 11 meses
Puntos: 2
Pero por qué dices que no puedes aplicarlo?. Para que muestre dos decimales y el caracter , como separador decimal y el caracter . como separador de miles sería así:

echo "\t\t<td><small><small>".number_format($valor_col, 2,",",".")."</small></small></td>\n";
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #3 (permalink)  
Antiguo 29/05/2005, 12:03
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
De acuerdo Ahora sí !

Ahora lo veo, tenía mal la sintaxis.

Muchísimas gracias living

  #4 (permalink)  
Antiguo 29/05/2005, 16:42
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Otro problema

Uhhhh
Tengo el problema de que algunos campos son valores enteros (no tiene sentido que aparezcan decimales ahí) pero si aplico el number_format me muestra:
125,00 en lugar de 125

Qué estoy haciendo mal ?

Muchas gracias
  #5 (permalink)  
Antiguo 29/05/2005, 19:24
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Si le pones cero como parámetro para decimales???...
www.php.net/number_format
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 29/05/2005, 19:36
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1


pero en ese caso me muestra todos como enteros... lo que no sé es como formatear algunos de una forma y otros de otra (según corresponda)... porque mi salida es en base a $valor_col entonces el number_format se aplica a todos los registros.
Y uso $valor_col porque no sé referenciar campos del tipo tabla1.campo1 y si referencio por los alias tampoco sale.
Es decir, intento esto:
$nro=number_format($row[tabla1.campo1]);
$nro2=$row[TOTAL]; ---> TOTAL es un alias en mi SELECT
para no aplicar el number_format a $valor_col y poder aplicarlo según corresponda pero no me sale nada
  #7 (permalink)  
Antiguo 29/05/2005, 19:42
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... www.php.net/is_int , www.php.net/is_float , www.php.net/gettype ??? ...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 29/05/2005, 20:02
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
jam1138:
No es tan sencillo como lo que planteas. Cuando lees valores desde la base de datos, los recibes como tipo STRING. Por eso no te va a servir ninguna de las funciones que citas.

Suyta:
En realidad por el tipo de números que manejas yo no veo inconveniente en que se agreguen los dos ceros en los decimales. Sobre lo que dices del alias, debería funcionar lo que pones:
Código PHP:
$nro2 $row['TOTAL']; 
Saludos
  #9 (permalink)  
Antiguo 29/05/2005, 20:08
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Tal vez te pueda servir algo como esto:
Código PHP:
if(substr($numero, -3) == ',00'){
    
$numero substr($numero0, -3);

Saludos
  #10 (permalink)  
Antiguo 29/05/2005, 20:23
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por jpinedo
jam1138:
No es tan sencillo como lo que planteas. Cuando lees valores desde la base de datos, los recibes como tipo STRING. Por eso no te va a servir ninguna de las funciones que citas.
Ooooooh!, no lo sabía (creo es evidente :-p) . Anotado está...

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 29/05/2005, 21:00
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
jejeje... yo tampoco lo sabía con seguridad. Pero sí lo sospeché. Tuve que hacer una pequeña prueba antes de escribir ese post.

Saludos
  #12 (permalink)  
Antiguo 29/05/2005, 21:05
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
jejejeje en eso estoy yo ... y no es porque dude de tí... .
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #13 (permalink)  
Antiguo 29/05/2005, 21:14
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Muchísimas gracias chicos

Estoy intentando

Cariños
---Susana
  #14 (permalink)  
Antiguo 29/05/2005, 21:55
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Haciendo una funcioncita más genérica:
Código PHP:
function quitar_ceros($numero$num_decimales$separador_decimales){
    
    
$final_ceros ',';
    for(
$i=0$i<$num_decimales$i++) $final_ceros .= '0';
    
    if(
substr($numero, -($num_decimales 1)) == $final_ceros){
        
$numero substr($numero0, -($num_decimales 1));
    }
    return 
$numero;
}

echo 
quitar_ceros('295,001'3','); // Devuelve '295,001'
echo quitar_ceros('295,000'3','); // Devuelve '295' 
Saludos
  #15 (permalink)  
Antiguo 29/05/2005, 23:24
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por jam1138
jejejeje en eso estoy yo ... y no es porque dude de tí... .
... confirmado, todos los datos recuperados son tipo STRING... probé con diferentes tipos de campos y el resultado fué el mismo...

Creía en la posibilidad que según el tipo de campo según el dato recibido... ahora veo que entonces la defibnición del campo solo es aplicable a procesos internos de la BD... no debería de ser así .

... más que anotado. Gracias Jpinedo, aprendí algo nuevo . Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #16 (permalink)  
Antiguo 30/05/2005, 05:57
(Desactivado)
 
Fecha de Ingreso: septiembre-2004
Mensajes: 360
Antigüedad: 19 años, 7 meses
Puntos: 1
Sos GRANDE jpinedo !!!

Muchas pero muchas muchísimas gracias
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 05:10.