Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    identificare giorno in un ciclo for

    Ho una select popolata dinamicamente, con una serie di date.
    Il codice usato è:
    Codice PHP:
    for($i strtotime($today); $i<=strtotime($finale); $i strtotime('+1 day',$i))
      echo 
    "<option value=\"" date('d-m-Y',$i) . "\">" giorno(date('d-m-Y',$i)) . ' 'date('j',strtotime(date('d-m-Y',$i))) . ' 'mese(date('d-m-Y',$i)) .' 'date('Y',strtotime(date('d-m-Y',$i))) . "</option>"
    che mi restituisce una serie di valori tipo:
    venerdi 24 luglio 2009
    sabato 25 luglio 2009
    domenica 26 luglio 2009
    lunedi 27 luglio 2009

    Mi servirebbe poter evidenziare le domeniche, utilizzando i CSS. Per cui, vorrei che la stringa echo, nel caso delle domeniche, fosse così:
    Codice PHP:
    echo "<option value=\"" date('d-m-Y',$i) . "\"  style=\"background-color:#00CC66;\">" giorno(date('d-m-Y',$i)) . ' 'date('j',strtotime(date('d-m-Y',$i))) . ' 'mese(date('d-m-Y',$i)) .' 'date('Y',strtotime(date('d-m-Y',$i))) . "</option>"
    Come posso fare per capire quando è domenica, e quindi fare un echo differente?

    Thanx_in_advance
    metatad
    graphic & web design

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    http://it.php.net/manual/en/function.date.php

    Se date('w',timestamp) è uguale a 0, allora è domenica.

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Ok, però mi sfugge ancora qualcosa...
    se all'interno del mio ciclo for
    Codice PHP:
    for($i strtotime($today); $i<=strtotime($finale); $i strtotime('+1 day',$i)) 
    io devo identificare, riga dopo riga, se
    Codice PHP:
    date('w',timestamp) = 0
    non posso utilizzare - sic et simpliciter - l'espressione date('w',timestamp), perchè non mi restituirà il giorno relativo a quella riga... quindi, devo utilizzare un'altra espressione. Ho provato ad utilizzare
    Codice PHP:
    date('w',$i
    ma si impalla e non mi restituisce alcun valore... e allora, che espressione devo utilizzare?
    Mi sto impallando anch'io...
    metatad
    graphic & web design

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Codice PHP:
    for($i strtotime('2009-07-01'); $i<=strtotime('2009-07-31'); $i strtotime('+1 day',$i)) 
      echo 
    date('w',$i) == 'domenica '.date('d-m-Y',$i).'
    date('d-m-Y',$i).'
    '


  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    No, forse non riesco a spiegarmi...
    il ciclo for mi serve per costruire dinamicamente le varie option di una select; all'interno di questo ciclo, devo verificare quali sono le domeniche, per far in modo che quella option abbia uno style css particolare (un colore di background).
    Quindi, per essere più chiari / completi, il mio codice è:
    Codice PHP:
    <select name="inzio1" id="inzio1">
                  <option>selezionare</option><?PHP
    for($i strtotime($today); $i<=strtotime($finale); $i strtotime('+1 day',$i))
      echo 
    "<option value=\"" date('d-m-Y',$i) . "\">" giorno(date('d-m-Y',$i)) . ' 'date('j',strtotime(date('d-m-Y',$i))) . ' 'mese(date('d-m-Y',$i)) .' 'date('Y',strtotime(date('d-m-Y',$i))) . "</option>";
    ?></select>
    In questo modo, costruisco la select.
    Per far si che soltanto le domeniche abbiano uno stile particolare, devo - all'interno del ciclo for - creare una condizione, del tipo:
    se questo giorno è domenica
    l'option ha uno stile

    Basandomi su quanto scrivi tu - che poi mi è sembrato molto simile a quello che avevo già provato a fare io, senza esito - ho modificato il codice così:
    Codice PHP:
    <select name="inzio1" id="inzio1">
                  <option>selezionare</option><?PHP
    for($i strtotime($today); $i<=strtotime($finale); $i strtotime('+1 day',$i))
      echo 
    "<option value=\"" date('d-m-Y',$i) . "\"";
      if (
    date('w',$i) == 0) {
        echo 
    " style=\"background-color:#a8daf9;\""
         }
     echo 
    ">" giorno(date('d-m-Y',$i)) . ' 'date('j',strtotime(date('d-m-Y',$i))) . ' 'mese(date('d-m-Y',$i)) .' 'date('Y',strtotime(date('d-m-Y',$i))) . "</option>";
    ?></select>
    Ma, come dicevo, qualcosa non funzia, perchè la select appare come se avesse effettivamente centinaia di opzioni, ma nessuna risulta visibile (come se fosse tutta bianca)!
    Quindi, delle due l'una:
    - o ci va qualcosa al posto della stringa date('w',$i) == 0, come condizione if
    - oppure è proprio l'inserimento della condizione, nel ciclo for, ad incasinare tutto, nel qual caso mi chiedo come poter risolvere...
    metatad
    graphic & web design

  7. #7
    Guarda che il codice che hai postato NON funziona correttamente perchè, ad esempio, nel ciclo for() NON utilizzi le graffe per cui esegue SOLO la prima riga successiva.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Esatto!!! Ecco dove facevo la str....!
    Grazie...
    metatad
    graphic & web design

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.