Foros del Web » Programando para Internet » PHP »

Cambiar orden de los dias en calendario

Estas en el tema de Cambiar orden de los dias en calendario en el foro de PHP en Foros del Web. Hola amigos como estais, Vereis estoy utilizando este calendario que he encontrado en el FAQ de php. http://www.forosdelweb.com/wiki/PHP:..._calendario%3F La cosa es que al imprimir los ...
  #1 (permalink)  
Antiguo 16/12/2010, 03:50
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Cambiar orden de los dias en calendario

Hola amigos como estais,

Vereis estoy utilizando este calendario que he encontrado en el FAQ de php.

http://www.forosdelweb.com/wiki/PHP:..._calendario%3F

La cosa es que al imprimir los dias empieza en el domingo, lunes y asi hasta terminar en el sabado, estoy intentado modificarlo para que empiece en el lunes y termine en domingo.

Si en la linea if($dia == "Sun"){ cambiamos "Sun" por "Mon" y cambio el td donde indica el domingo, funcionaria casi bien con el problema de que la 1º fila de dias en la tabla que va imprimiendo empieza una celda mas tarde de lo que deberia entonces en algunos meses da error.

A ver si alguien ha podido cambiar este calendario y tiene alguna idea.

Un saludo amigos.
  #2 (permalink)  
Antiguo 16/12/2010, 04:46
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Cambiar orden de los dias en calendario

Le hice unas modificaciones al codigo y no necesitas de un archivo extra.
Ojo: $pageN es el nombre del mismo archivo php
Código PHP:
<table>
<?php
$pageN 
"test2.php";
$arrMes = array("","Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
$mes $_GET['m'];
$ano $_GET['a'];
if(!isset(
$mes) || !isset($ano)){
    
$ano date("Y");
    
$mes date("n");
}
$ultimo intval(date("t",mktime(000$mes1$ano)));
if(
$mes == '12'){
    
$next 1;
    
$prev $mes-1;
    
$anon $ano+1;
    
$anop $ano;
}elseif(
$mes == '1'){
    
$next $mes+1;
    
$prev 12;
    
$anon $ano;
    
$anop $ano-1;        
}else{
    
$next $mes+1;
    
$prev $mes-1;    
    
$anop $ano;
    
$anon $ano;
}
echo 
'
    <tr>
        <th colspan="7">'
.$ano.'</th>
    </tr>
    <tr>
    <tr>
        <td><a href="'
.$pageN.'?m='.$prev.'&a='.$anop.'">&laquo;</a></td>
        <th colspan="5">'
.$arrMes[$mes].'</th>
        <td><a href="'
.$pageN.'?m='.$next.'&a='.$anon.'">&raquo;</td>
    </tr>
    <tr>
        <td>L</td><td>M</td><td>M</td><td>J</td><td>V</td><td>S</td><td>D</td>
    </tr>'
;
    
$diaa 1;
    
$flag true;
    while(
$diaa <= $ultimo){
        
$dia date("N",mktime(0,0,0,$mes,$diaa,$ano)); # retorna el día de la semana en numero... 1 lunes a 7 domingo
        
$fecha intval(date("d",mktime(0,0,0,$mes,$diaa,$ano))); #retorna el día del mes en 01/31
        
if($dia == 1){
            echo 
'
    </tr>
    <tr>'
;
        }
        if(
$dia && $flag){
            
$i 1;
            while(
$i $dia){
                echo 
'
        <td>&nbsp;</td>'
;
                
$i++;
            }
            
$flag false;
        }else{
            
$flag false;
        }
        echo 
'
        <td>'
.$fecha.'</td>';
        
$diaa++;
    }
    echo 
'
    </tr>'
;
?>
</table>
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 16/12/2010, 06:20
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Cambiar orden de los dias en calendario

Hola amigo Marvin como estas, gracias por tu respuesta,

Voi a probarlo, tambien he modificado el codigo un poco y parece que esta funcionando correctamente de este modo:


<?php
session_start();
include_once('conexion.php');
//include("funciones.php");
$mess = $_GET['mess'];
$anio = $_GET['anio'];

if($mess == "" || $anio == ""){
$anio = date("Y");
$mess = date("n");
}
$ultimo = date("t",mktime(0, 0, 0, $mess, 1, $anio));
if($mess == '12' || $mess == '1'){
if($mess == '12'){
$next = 1;
$prev = $mess -1;
$anion = $anio + 1;
$aniop = $anio;
}
if($mess == '1'){
$next = $mess + 1;
$prev = 12;
$anion = $anio;
$aniop = $anio -1;
}
}else{
$next = $mess + 1;
$prev = $mess - 1;
$aniop = $anio;
$anion = $anio;
}

if($mess == 1){
$Nombre_Mes = "Enero";
}elseif($mess == 2){
$Nombre_Mes = "Febrero";
}elseif($mess == 3){
$Nombre_Mes = "Marzo";
}elseif($mess == 4){
$Nombre_Mes = "Abril";
}elseif($mess == 5){
$Nombre_Mes = "Mayo";
}elseif($mess == 6){
$Nombre_Mes = "Junio";
}elseif($mess == 7){
$Nombre_Mes = "Julio";
}elseif($mess == 8){
$Nombre_Mes = "Agosto";
}elseif($mess == 9){
$Nombre_Mes = "Septiembre";
}elseif($mess == 10){
$Nombre_Mes = "Octubre";
}elseif($mess == 11){
$Nombre_Mes = "Nobiembre";
}elseif($mess == 12){
$Nombre_Mes = "Diciembre";
}

echo "<tr><th colspan=7>$anioo</th></tr><tr>";
echo "<tr><td><a href='c.php?mess=$prev&anio=$aniop'> << </a></td><th colspan=5>$mes[$mess] $mess $Nombre_Mes</th><td><a href='c.php?mess=$next&anio=$anion'> >> </a></td></tr>";
echo "<tr><td>Lunes</td><td>Martes</td><td>Miercoles</td><td>Jueves</td><td>Viernes</td><td>Sabado</td><td>Domingo</td></tr>";

$diaa = "1";
while($diaa <= $ultimo){
$consulta = "SELECT * FROM calendario WHERE Ncofradia =1";
$resultado = mysql_query($consulta,$conexion);


$dia = date("D",mktime(0,0,0,$mess,$diaa,$anio)); # retorna el día de la semana en letras...
$fecha = date("d",mktime(0,0,0,$mess,$diaa,$anio)); #retorna el día del mes en 01/31
$dia_semana = date("N",mktime(0,0,0,$mess,$diaa,$anio)); #retorna el día de la semana en número

if($dia == "Mon"){
echo "</tr><tr>";
}
//echo $dia_semana.' '.'<br />';
if($fecha == "01"){
$i=1;
while($i != $dia_semana){
echo "<td>&nbsp;</td>";
$i++;
}
}

$f = $anio.'-'.$mess.'-'.$diaa;


echo "<td style='height:50px;'>$fecha";
while ($array = mysql_fetch_array($resultado)){
if($array['fecha'] == $f)
{echo "buena";}
}
echo "</td>";
//echo "<td>$fecha</td>";

$diaa++;
}
echo "</tr>";
?>

He añadido los if para que en vez de mostrar el numero del mes muestre los nombres de los meses.

Un saludo amigo y gracias

Etiquetas: calendario, dias, orden
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 02:01.