Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Mostrar mes en texto

Estas en el tema de Mostrar mes en texto en el foro de PHP en Foros del Web. Hola espero me puedan ayudar con esto ya le he dado varias vueltas y no encuentro como resolverlo... bien resulta que tengo lo siguiente una ...
  #1 (permalink)  
Antiguo 12/03/2014, 11:44
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Mostrar mes en texto

Hola espero me puedan ayudar con esto ya le he dado varias vueltas y no encuentro como resolverlo...
bien resulta que tengo lo siguiente una consulta que agrupa por periodo... y los meses de cada periodo son concatenados y ordenados por mes...
con esto no tengo problema pero resulta que mis meses son numeros... (01 igual a Enero...02 igual Febrero...etc) y quiero mostrarlos en texto segun lo que equivalen....
por ejemplo tendria esto:
Periodo----- Meses
Periodo1----01,02,03

y necesito que se muestre asi:
Periodo----- Meses
Periodo1----Enero,Febrero,Marzo

Hice un if para comparar el mes numérico y asignarle su valor en texto... pero no me muestra nada en texto ...
Desde Gracias


Código PHP:
<?php
"SELECT periodo,Mes ,GROUP_CONCAT(Mes Order by Mes) Mes From pagos  group by periodo" ;?>


<?php do { ?>
    <tbody>
      <tr>

<td><?php echo $row_consulta['periodo']; ?></div></td>
   
<td>
             
//ACA NO ME MUESTRA NADA            

<?php

if ($row_consulta['Mes']==01) {
    echo 
"Enero";

elseif (
$row_consulta['Mes']==02) {
    echo 
"Febrero";

elseif (
$row_consulta['Mes']==03) {
    echo 
"Marzo";

...
elseif(
$row_consulta['Mes']==12){
    echo 
"Diciembre";
}
?>
</td>
<td>
//ACA SI ME MUESTRA MIS MESES EN NÚMEROS
<?php echo $row_consulta['Mes']?>
</td>

  <?php } while ($row_consultamysql_fetch_assoc($consulta)); ?>
  #2 (permalink)  
Antiguo 12/03/2014, 12:13
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Mostrar mes en texto

No puedes comparar así:

if ($row_consulta['Mes']==01) {

por que 01 es una cadena, debería ser así

if ($row_consulta['Mes']=='01') {

sin embargo, sería mejor en vez de usar tantos if, un arreglo.

$meses=array('01'=>'Enero','02'=>Febrero'......... );

y para colocar (traducir) el mes es más simple

$mes='03';

echo $meses[$mes];
  #3 (permalink)  
Antiguo 12/03/2014, 12:22
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Mostrar mes en texto

Cita:
Iniciado por ocp001a Ver Mensaje
No puedes comparar así:

if ($row_consulta['Mes']==01) {

por que 01 es una cadena, debería ser así

if ($row_consulta['Mes']=='01') {

sin embargo, sería mejor en vez de usar tantos if, un arreglo.

$meses=array('01'=>'Enero','02'=>Febrero'......... );

y para colocar (traducir) el mes es más simple

$mes='03';

echo $meses[$mes];
Gracias amigo cheque lo de las comillas simples y nada... cheque el arreglo y tampoco :( he leido y como mis meses aparecen como $row_consulta['Mes']=01,02,03 debo trabajarlos como un arreglo pero no sé como
  #4 (permalink)  
Antiguo 12/03/2014, 12:26
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Mostrar mes en texto

Suele ocurrir que php hace una conversión a la hora de usar un índice en un arreglo, esto se soluciona forzando el string, o bien tratando todo como números.

$mes='03';
echo $meses["$mes"];

o bien

$meses=array('','enero','febrero',etc);
$mes=(int)$row_consulta['Mes'];
echo $meses[$mes];
  #5 (permalink)  
Antiguo 12/03/2014, 12:55
Avatar de xpapachox  
Fecha de Ingreso: junio-2011
Mensajes: 77
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Mostrar mes en texto

En el mismo SQL.

Código PHP:
SELECT fecha,
    CASE 
MONTH(fecha)
     
WHEN 1 THEN 'Enero'
     
WHEN 2 THEN 'Febrero'
     
WHEN 3 THEN 'Marzo'
     
WHEN 4 THEN 'Abril'
     
WHEN 5 THEN 'Mayo'
     
WHEN 6 THEN 'Junio'
     
WHEN 7 THEN 'Julio'
     
WHEN 8 THEN 'Agosto'
     
WHEN 9 THEN 'Septiembre'
     
WHEN 10 THEN 'Octubre'
     
WHEN 11 THEN 'Noviembre'
     
WHEN 12 THEN 'Diciembre'
     
END nombre_mes
     FROM tabla

  #6 (permalink)  
Antiguo 12/03/2014, 13:07
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Mostrar mes en texto

Cita:
Iniciado por ocp001a Ver Mensaje
Suele ocurrir que php hace una conversión a la hora de usar un índice en un arreglo, esto se soluciona forzando el string, o bien tratando todo como números.

$mes='03';
echo $meses["$mes"];

o bien

$meses=array('','enero','febrero',etc);
$mes=(int)$row_consulta['Mes'];
echo $meses[$mes];
Probe con los dos pero nada hice esto y al parecer va bien
Código PHP:
$mesc=$row_conculta['Mes'];
$Mexplode(" "$mesc);

if (
$M[0]=='01') {
  echo  
$mestexto="Enero".",";

if (
$M[1]=='02') {
  echo  
$mestexto="Febrero".",";

if (
$M[2]=='03') {
  echo  
$mestexto="Marzo".","
Pero el detalle es que tendria que hacer demasiadas comparaciones por cada posicion 12 ... como podria simplificar esto?????
  #7 (permalink)  
Antiguo 12/03/2014, 13:08
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Mostrar mes en texto

Cita:
Iniciado por xpapachox Ver Mensaje
En el mismo SQL.

Código PHP:
SELECT fecha,
    CASE 
MONTH(fecha)
     
WHEN 1 THEN 'Enero'
     
WHEN 2 THEN 'Febrero'
     
WHEN 3 THEN 'Marzo'
     
WHEN 4 THEN 'Abril'
     
WHEN 5 THEN 'Mayo'
     
WHEN 6 THEN 'Junio'
     
WHEN 7 THEN 'Julio'
     
WHEN 8 THEN 'Agosto'
     
WHEN 9 THEN 'Septiembre'
     
WHEN 10 THEN 'Octubre'
     
WHEN 11 THEN 'Noviembre'
     
WHEN 12 THEN 'Diciembre'
     
END nombre_mes
     FROM tabla

Gracias pero mi consulta esta asi
"SELECT periodo,Mes ,GROUP_CONCAT(Mes Order by Mes) Mes From pagos group by periodo"
  #8 (permalink)  
Antiguo 12/03/2014, 13:10
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Mostrar mes en texto

Cita:
como podria simplificar esto?????
Ya te lo indiqué, con un array, pero no muestras el código que usaste ni si tuviste algún mensaje de error al hacerlo.
  #9 (permalink)  
Antiguo 12/03/2014, 13:25
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Mostrar mes en texto

Cita:
Iniciado por ocp001a Ver Mensaje
Ya te lo indiqué, con un array, pero no muestras el código que usaste ni si tuviste algún mensaje de error al hacerlo.
No amigo no muestra nada... ni error ni nada por esto...
$meses=array('01'=>'Enero',etc...

en realidad nunca tengo como valor '01'... asi que no le puede asignar texto

este seria mi valor $mesc=$row_consulta['Mes']; ($mesc=01 02 03)
$meses=array('01 02 03'=>'Enero',etc...
(porque estan concatenados en mi consulta les quite la coma para poder trabajarlos como array)

asi funciona
$mesc=$row_alumnos['Mes'];
$M= explode(" ", $mesc);
if ($M[0]=='01') {
echo $mestexto="Enero".",";
}
if ($M[1]=='02') {
echo $mestexto="Febrero".",";
}
if ($M[2]=='03') {
echo $mestexto="Marzo".",";
}
porque toma cada mes por separado en lugar de tomar 01 02 03... toma 01
despues 02 y finalmente 03

pero si lo dejo asi tendria que hacer muchas comparaciones para cada elemento del array
  #10 (permalink)  
Antiguo 12/03/2014, 13:53
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Mostrar mes en texto

Trata de adaptar los ejemplos que se te dan a lo que tienes, no es tan difícil.

$meses=array('01'=>'Enero','02'=>Febrero'......... '12'=>'diciembre');

$mesc=$row_alumnos['Mes'];//mesc='01 02 03'
$M= explode(" ", $mesc);

echo $meses["$m[0]"];//$meses['01'];
echo $meses["$m[1]"];//$meses['02'];
echo $meses["$m[2]"];//$meses['03'];
  #11 (permalink)  
Antiguo 12/03/2014, 16:27
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Mostrar mes en texto

Gracias habia adecuado pero el detalle es que manejaba los if... y no eran necesarios

Gracias :)

Etiquetas: mysql, select
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 11:45.