Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    30

    [PHP] Problema stampa giorni

    Buonasera a tutti, ho il seguente codice php per realizzare il campo data di una form.
    Codice PHP:
    $Odierna explode'-'date'n-j-Y' ) );
    $Mese $Odierna[0];
    $Giorno $Odierna[1];
    $Anno $Odierna[2];
    $PrimoAnno $Anno;
    $UltimoAnno $Anno 2
    // Stampa Giorno
    echo "<select name='giorno' id='giorno'>\n";
    for( 
    $i 1$i <= 31$i++ ) {
        echo 
    "<option value='" date"d"mktime000$Mese$i$Anno ) ) . "'";
          if ( 
    $i == $Giorno ) echo " selected";
            echo 
    ">" date"d"mktime000$Mese$i$Anno ) )  . "</option>\n";
    }
    echo 
    "</select>\n";
                    
    // Stampa Mese
    echo "<select name='mese' id='mese'>\n";
    for( 
    $i 1$i <= 12$i++ ) {
        echo 
    "<option value='" date"m"mktime000$i$Giorno$Anno ) ) . "'";
          if ( 
    $i == $Mese ) echo " selected";
              echo 
    ">" date"m"mktime000$i$Giorno$Anno ) ) . "</option>\n";
    }
    echo 
    "</select>\n";

    // Stampa Anno
    echo "<select name='anno' id='anno'>\n";
    for( 
    $i $PrimoAnno$i <= $UltimoAnno$i++ ) {
        echo 
    "<option value='" $i "'";
          if ( 
    $i == $Year ) echo " selected";
            echo 
    ">" $i "</option>\n";
    }
    echo 
    "</select>\n</p>"
    Questo è quanto esce per il giorno:

    codice:
    <select name='giorno' id='giorno'>
    <option value='01'>01</option>
    <option value='02'>02</option>
    <option value='03'>03</option>
    <option value='04'>04</option>
    <option value='05'>05</option>
    
    <option value='06'>06</option>
    <option value='07'>07</option>
    <option value='08'>08</option>
    <option value='09'>09</option>
    <option value='10'>10</option>
    <option value='11'>11</option>
    <option value='12'>12</option>
    <option value='13'>13</option>
    <option value='14'>14</option>
    
    <option value='15'>15</option>
    <option value='16'>16</option>
    <option value='17'>17</option>
    <option value='18'>18</option>
    <option value='19'>19</option>
    <option value='20'>20</option>
    <option value='21'>21</option>
    <option value='22'>22</option>
    <option value='23'>23</option>
    
    <option value='24'>24</option>
    <option value='25'>25</option>
    <option value='26' selected>26</option>
    <option value='27'>27</option>
    <option value='28'>28</option>
    <option value='29'>29</option>
    <option value='30'>30</option>
    <option value='01'>01</option>
    </select>
    Mi funziona tutto, solo che al posto di 31 mi scrive 01.
    Non capisco il motivo.
    Grazie

  2. #2
    se lo fai il mese di settembre che di giorni ne ha 30 e' ovvio che il 31 non esiste e siccome usi mktime ti calcola il 1 ottobre. Pensa che anche a febbraio....

    controlla prima quanti giorni ha disponibile il mese corrente:

    Codice PHP:

    $n_giorni 
    date('t');

    for( 
    $i 1$i <= $n_giorni$i++ ) { 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    30
    Intanto grazie per la risposta, però mi sa che mi si crea un altro problemino.
    Aggiungendo la variabile n_giorni e sostituendo a
    Codice PHP:
    for( $i 1$i <= 31$i++ ) { 
    for( 
    $i 1$i <= $n_giorni$i++ ) { 
    mi stampa sempre 30 per ogni mese.

  4. #4
    Come hai ottenuto la variabile $n_giorni?

  5. #5
    Originariamente inviato da Blocco
    Intanto grazie per la risposta, però mi sa che mi si crea un altro problemino.
    Aggiungendo la variabile n_giorni e sostituendo a
    Codice PHP:
    for( $i 1$i <= 31$i++ ) { 
    for( 
    $i 1$i <= $n_giorni$i++ ) { 
    mi stampa sempre 30 per ogni mese.
    $n_giorni ti dice quanti giorni ci sono nel mese corrente. Se vuoi anche altri mesi agisci di conseguenza.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    30
    Il motivo per cui mi stampasse sempre 30 l'avevo capito, è come fare a non farglielo stampare che non so .

    Qualche spunto ulteriore?

  7. #7
    Originariamente inviato da Blocco
    Il motivo per cui mi stampasse sempre 30 l'avevo capito, è come fare a non farglielo stampare che non so .

    Qualche spunto ulteriore?
    se stampi un calendario completo inutile disgiungere i giorni dal mese/anno. se stampi tre select: giorni, mesi, anni allora non devi usare mktime.

    i giorni saranno (tutti) 1-31, i mesi 1-12, anni quel che sono.

    Presenti uno script ma non indichi qual'e' lo scopo ed il risultato che vorresti ottenere. Hai presentato un problema (01 dopo il 30) e ti e' stato spiegato il perche'.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    30
    Hai ragione scusa... Spiego meglio.
    Mi serve in un campo ricerca, dove si indica un titolo e la data di proiezione del film.
    Questa è la parte per stampare le opzioni della data, mettendo la selezione sulla data odierna.

    Volevo realizzare una roba tipo questa http://javascript.internet.com/forms...tion-form.html in php senza la scelta del numero di anni, ma già impostato a 3 e con i mesi in numeri.

    PS. nel caso volessi prendere questo script, è possibile aggiungere nel tag body più onload?
    Il mio tag body in header.php ha già associato un onload
    <body onload="slider('slider',0)">

    Grazie

  9. #9
    in quello script i giorni sono tutti e sempre a prescindere dal mese 1 - 31

    basta fare il ciclo for lasciando perdere il mktime. Lo stesso vale per i mesi. per l'anno puoi fare un range oppure la scelta precisa come il campione che hai presentato.

    E' inutile presentare il giorno odierno come predefinito quando la ricerca sara' sicuramente precedente alla data odierna

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    30
    Beh, no, la data dovrebbe essere sempre successiva alla data odierna.
    Non ha senso cercare se c'erano film in spettacolo nei giorni scorsi.

    Dopo pranzo guardo meglio.

    Per caso sai rispondermi anche al ps?

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.