Foros del Web » Programando para Internet » PHP »

meses dinamicos

Estas en el tema de meses dinamicos en el foro de PHP en Foros del Web. hola a todos, tengo una duda que he buscado y no encuentro. necesito saber cuantos dias tiene cada mes de forma dinamica y sin BD. ...
  #1 (permalink)  
Antiguo 07/02/2006, 14:12
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 20 años, 1 mes
Puntos: 0
meses dinamicos

hola a todos, tengo una duda que he buscado y no encuentro.

necesito saber cuantos dias tiene cada mes de forma dinamica y sin BD.

se que
1, 3, 5, 7, 8, 10 y 12 tienen 31dias
4, 6, 9, 11, tienen 30 y que
2 tiene 28 o 29 dias dependiendo del año.

ahora como púedo hacer en php que de acuerdo al mes me diga que son 30, 31 o 28 dias

saludos y gracias

P.D. es para llenar unos select :p
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #2 (permalink)  
Antiguo 07/02/2006, 14:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si es para llenar unos select .. genera tu contador de 1 a 31 .. y compruebas que sea válida (por "calendario") con checkdate(). Si te devuelve "false" ya sabes que no es válida y hasta ahí el mes tiene esos días.

http://www.php.net/checkdate

Un saludo,
  #3 (permalink)  
Antiguo 07/02/2006, 14:27
Avatar de maralbust  
Fecha de Ingreso: febrero-2004
Ubicación: Santiago
Mensajes: 578
Antigüedad: 20 años, 1 mes
Puntos: 0
jejej sorry la pregunta me puse a pensar y lo hice rapidito jejejeje


le dejo el codigo por si a alguien le sirve.

Código PHP:
$mes date("n");
$anio date("y");

if (
$mes == || $mes == || $mes == || $mes == || $mes == || $mes == 10 || $mes == 12)
    {
        
$dia "31";
    }
elseif (
$mes == || $mes == || $mes == || $mes == 10 )
    {
        
$dia == "30";
    }
elseif (
$mes == 2)
    {
        if (
$anio == 08)
        {
            
$dia "29";
        }
        else
        {
            
$dia "28";
        }
    }
    
echo 
"<select name='ano' style='font-family: arial; font-size: 11px;'>";
echo 
" <option value='0' selected>año</option>";
for (
$i 1$i <= $dia$i++)
    {
        echo 
"<option value='".$i."'>".$i."</option>";
    }
echo 
"</select>"
si alguien lo puede optimizar grande

saludos
__________________
..:: NADA SE PIERDE SOLO SE TRANSFORMA ::..
  #4 (permalink)  
Antiguo 07/02/2006, 14:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Te iva hacer ese comentario .. no usar "checkdate()" y un proceso constante para unas "constantes" que no son muchas y conocemos (los días que tienen los 12 meses del año).

Un saludo,
  #5 (permalink)  
Antiguo 07/02/2006, 15:04
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
a ver .... si he aprendido bien ... esto debe de funcionar ..

Código PHP:
<?php
$mes 
2;
$mess 1;
while(
$mes 14){
$ultimo date("j",mktime(000$mes02006));
echo 
"El ultimo dia del mes $mess es $ultimo<br>";
$mes++;
$mess++;
}
aqui esta funcionando ....
http://www.mrad.com.ar/pp/ultimodia.php

de hecho .. estaba viendo como hacer un calendario dinamico ...

pero me esta dando error ..

www.mrad.com.ar/pp/mes.php ahi lo pueden ver si quieren, si quieren el codigo me lo piden y lo posteo ..
espero que te sirva ... saludos
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!

Última edición por turco_7; 07/02/2006 a las 15:12
  #6 (permalink)  
Antiguo 07/02/2006, 15:26
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Aquí hay una pequeña función para generar un calendario. Es muy rudimentaria y básica, pero para dar una idea de como puede ser sirve:

Código PHP:
<?
function Calendario($mes$anio) {

$Dia_inicial date("w"mktime(0,0,0,$mes,1,$anio));
    if (
$Dia_inicial == 0) {
        
$Dia_inicial 7;
    }

    
?>
    <table>

        <tr><td colspan="7"><?echo($mes.' de '.$anio);?></td></tr>
            <tr>
            <td>Lu</td>
            <td>Ma</td>
            <td>Mi</td>
            <td>Ju</td>
            <td>Vi</td>
            <td>Sa</td>
            <td>Do</td>
        </tr>
        <tr> <?

    
for ($i=1$i$Dia_inicial$i++) {
        
?>

            <td>&nbsp;</td>
            <?
    
}
    
    
$Dias_totales date("t"mktime(0,0,0,$mes,1,$anio));
    for (
$i=1$i <= $Dias_totales$i++) {    
        if (
$Dia_inicial == 8) {
            
?>

        </tr>
        <tr>
            <?
            $Dia_inicial 
1;
        }
        
$Dia_inicial++;


            echo(
'<td>'.$i.'</td>');
         
?>

            <?
    
}

    echo(
'
        </tr>
    <table>'
);

}
?>
Por supuesto es mejorable, pero espero que sirva.

Un saludo.
  #7 (permalink)  
Antiguo 07/02/2006, 15:31
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Porcierto, para ltu bucle no hacen falta las dos variables, el motivo por el que te coge el mes anterior es por el cero que pones al llamar a date() en el argumento donde va el día. Para que coja el mes bien, simplemente pon un "1":

date("j",mktime(0, 0, 0, $mes, 1, 2006))

y esa "j" no me suena, es la "t" la que da el número de días totales.

Así mirandolo rápido te podría quedar algo parecido a esto:

Código PHP:
<?php
$mes 
1;
while(
$mes 13){
$ultimo date("t",mktime(000$mes02006));
echo 
"El ultimo dia del mes $mes es $ultimo<br>";
$mes++;
}
  #8 (permalink)  
Antiguo 07/02/2006, 16:09
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
jeje .. bueno voy progresando por lo menos .. ante ni siquiera miraba las funciones como date o mktime ... saludos
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #9 (permalink)  
Antiguo 07/02/2006, 16:21
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
claro .. la variable t ya por defecto te muestra la cantidad de dias en el mes dado .. cuando la variable j te muestra el dia del mes .. osea dia 1 2 3 4 y asi...
ese fue mi error ... ahora si cambio la variuable t por la j .. funciona de 10 osea que el codigo queria asi ..
Código PHP:
<?php
$mes 
1;
while(
$mes 13){
$ultimo date("t",mktime(000$mes,12006));
echo 
"El ultimo dia del mes $mes es $ultimo<br>";
$mes++;
}
link www.mrad.com.ar/pp/ultimodia2.php
saludos y gracias ...
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #10 (permalink)  
Antiguo 07/02/2006, 16:26
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Ups, eso, al copiar el código me colé el "0" ese....

Como lo has puesto tú está bien.
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 15:33.