Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema con Anno Bisestile

    Buonasera a tutti!
    Ho uno script che permette all'utente di scegliere
    Anno ($a)
    Mese ($a)
    Giorgio ($g)
    in un form, un input per volta.
    Il problema è che per gli anni bisestili Febbraio ha 29 giorni.
    Ho pensato di risolvere nel seguente modo.

    codice:
    <?php
    switch ($m) { // NUM GIORNI A SECONDA DEL MESE
        case 2:
    if ($a == "2004") {
    		$ngiorni = 30;
    } else {
    		$ngiorni = 29;
    };
            break;
        case 11: 
    	case 4:
    	case 6:
    	case 9:
            $ngiorni = 31;
            break;
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            $ngiorni = 32;
            break;
    }  
     for($i=01;$i<$ngiorni;$i++){ 
     echo "<option value=\"?g=$i\">" . $i . "</option>\n";
     }
    ?>
    E con l'anno 2004 funziona. Il problema è che ho due parametri (Anno minimo e Anno massimo) di nascita e sono rispettivamente 1910 e 2010. Come posso inserire questi due parametri al posto dell'if anno=2004 ?

    Grazie a tutti!

  2. #2
    Controlla la funzione DATE() sul manuale ufficiale.
    Con la lettera t dovresti risolvere senza particolari archibugi!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Grazie!
    Ho risolto con
    codice:
    if ($a % 4 == 0 && ($a % 100 != 0 || $a % 400 == 0)) {
    	$ngiorni = 30;
    } else {
    	$ngiorni = 29;
    };

  4. #4
    Originariamente inviato da WebmasterRR
    Grazie!
    Ho risolto con
    codice:
    if ($a % 4 == 0 && ($a % 100 != 0 || $a % 400 == 0)) {
    	$ngiorni = 30;
    } else {
    	$ngiorni = 29;
    };

    Ciao, ti faccio notare solo due cose:
    1) la funzione DATE che ti è giustamente stata suggerita da alcio74 è assai più efficiente di quello switch incredibile, perché ti basta scrivere UNA SOLA riga di codice al posto di TUTTO lo switch



    2) se invece per qualche strana ragione proprio vuoi scrivere 25-30 righe di codice - compreso l'esempio trovato su wikipedia - al posto di una sola, almeno fai così:
    Codice PHP:
    if ($a == && ($a 100 != || $a 400 == 0)) {
        
    $ngiorni 28;//<---------se non è bisestile ne ha 28 non 30!!!!
    } else {
        
    $ngiorni 29

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Esiste una funzione che controlla la correttezza di una data: checkdate()

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.