Foros del Web » Programando para Internet » PHP »

Por qué me falla esta consulta?

Estas en el tema de Por qué me falla esta consulta? en el foro de PHP en Foros del Web. Hola amigos! tengo la siguiente consulta que se basa en buscar fechas de torneos y mostrarlos en una tabla ordenados por meses, no se si ...
  #1 (permalink)  
Antiguo 03/08/2004, 09:01
 
Fecha de Ingreso: abril-2002
Ubicación: Argentina
Mensajes: 96
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta Por qué me falla esta consulta?

Hola amigos! tengo la siguiente consulta que se basa en buscar fechas de torneos y mostrarlos en una tabla ordenados por meses, no se si es lo mejor, son mis primeros pasos, pero se me ocurrió hacerlo así:
Código PHP:
// Imprimiendo los resultados
$ultimomes="";

while(
$array mysql_fetch_array($cad)) {
$el_torneo $array["Id_torneo"];
$la_cancha $array["cancha"];
$la_fecha $array["fecha"];
$la_fecha cambiaf_a_normal($la_fecha);
list( 
$dia$mes$anio ) = split'[/.-]'$la_fecha );

if (
$mes==01){
  
$el_mes "Enero";
} elseif (
$mes==02){
  
$el_mes "Febrero";
} elseif (
$mes==03){
  
$el_mes "Marzo";
} elseif (
$mes==04){
  
$el_mes "Abril";
} elseif (
$mes==05){
  
$el_mes "Mayo";
} elseif (
$mes==06){
  
$el_mes "Junio";
} elseif (
$mes==07){
  
$el_mes "Julio";
} elseif (
$mes==08){
  
$el_mes "Agosto";
} elseif (
$mes==09){
  
$el_mes "Septiembre";
} elseif (
$mes==10){
  
$el_mes "Octubre";
} elseif (
$mes==11){
  
$el_mes "Noviembre";
} elseif (
$mes==12){
  
$el_mes "Diciembre";
}
if (
$ultimomes != $mes ) {
  print (
"<tr>
            <td colspan='3' class='tbl_head1'>$el_mes</td>
          </tr>
          <tr>
            <td class='tbl_txt1'>$la_cancha</td>
            <td class='tbl_txt1'><div align='center'>$la_fecha</div></td>
            <td class='tbl_txt1'><div align='center'><a href='ver_torneo.php?torneo="
.$el_torneo."'>Resultados...</a></div></td>
          </tr>"
);
  
$ultimomes $mes;
} else {
print (
"<tr>
            <td class='tbl_txt1'>$la_cancha</td>
            <td class='tbl_txt1'><div align='center'>$la_fecha</div></td>
            <td class='tbl_txt1'><div align='center'><a href='ver_torneo.php?torneo="
.$el_torneo."'>Resultados...</a></div></td>
          </tr>"
);
}
}

// Cerramos la conexión a la base
$con=mysql_close($con); 
El campo "fecha" es del tipo date y loconvierto mediante una función de 2004-08-03 a 03/08/2004, el problema que tengo es que donde muestro el nombre del mes, cuando llego a Agosto, me muestra otra vez Julio
Alguien puede decirme donde está el error?
Gracias anticipadas
Saludos
__________________
Sergio
  #2 (permalink)  
Antiguo 03/08/2004, 09:27
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Haz un echo de $array["fecha"], de $la_fecha despues de llamar a la funcion, y de $mes, $dia y $anio, para ver si cojen los valores correctos.

Y el lugar del if para asignar el mes, yo usaria un array:
Código PHP:
$meses=array(1=>'Enero',2=>'Febrero', .... );

$el_mes=$meses[$mes]; 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 03/08/2004, 09:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Por qué no usas un array asocitavito tipo .. en lugar de todos esos "if .. else .. elseif ...":

Código PHP:
list( $dia$mes$anio ) = explode'/'$la_fecha ); // si la fecha es sólo fecha . .no con hora.
$meses=array("01"=>"Enero","02"=>"Febrero" .. etc);
$el_mes=$meses[$mes]; 
y .. en lugar de split() usando expresiones regulares .. usar un simple explode() ...

Un saludo,
  #4 (permalink)  
Antiguo 04/08/2004, 13:55
 
Fecha de Ingreso: abril-2002
Ubicación: Argentina
Mensajes: 96
Antigüedad: 15 años, 8 meses
Puntos: 0
Gracias Josemi y Cluster, lo voy a probar y luego les cuento
Saludos
__________________
Sergio
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 03:36.