Visualizzazione risultati 1 fino 11 di 11

Discussione: [PHP]Messaggio personalizzato in base al mese corrente

  1. #1
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    173

    Predefinito [PHP]Messaggio personalizzato in base al mese corrente

    Ciao,
    Vorrei restituire al visitatore sottoforma di testo il mesa corrente e in base ad esso riportare un testo ad hoc.
    Es.
    Caro visitatore il mese corrente è settembre.
    Questo è anche il mese che segna il passaggio dalla stagione estiva a quella autunnale: l'equinozio avviene infatti tra il 22º e il 23º giorno del mese.

    o

    Caro visitatore il mese corrente è luglio.
    È generalmente il mese più caldo dell'anno nell'emisfero boreale e quello più freddo in quello australe.

    Grazie a chi riponderà

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Oltre a ciò che intendi fare, dovresti indicare anche quali approcci hai provato e quali problemi hai riscontrato.

    In generale, quando ci sono di mezzo date e simili, il punto di riferimento è la funzione date. Puoi usarla per ottenere il numero del mese e, sulla base di quello, stampare il messaggio che preferisci.

  3. #3
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    173

    Predefinito

    queste sono le mie prove

    Codice:
    <?php
    // set the default timezone to use. Available since PHP 5.1
     date_default_timezone_set("Europe/Rome");
    // Prints something like: August
    echo "Il mese corrente &egrave;  " . date('F');
    ?>
    
    <br><br>
    
    <?php
    // set the default timezone to use. Available since PHP 5.1
     date_default_timezone_set("Europe/Rome");
    // Prints: July 1, 2000 is on a Saturday
    echo "questa scritta appare solo perch&egrave; ogg&igrave; &egrave; l'01/09/16  " . date("", mktime(0, 0, 0, 9, 1, 2016));
      /* date("l", mktime(0, 0, 0, 9, 1, 2016)) */
    ?>
    
    <br><br>
    
    <?php
    // set the default timezone to use. Available since PHP 5.1
     date_default_timezone_set("Europe/Rome");
    // settembre
    echo "September is the ninth month of the year in the Julian and Gregorian Calendars" . date("", mktime(0, 0, 0, 9, 0, 0));
      /* date("l", mktime(0, 0, 0, 9, 0, 0)) */
    ?>
    che mi restituiscono il seguente output:



    Come faccio ad avere il mese corrente in italiano anziché inglese?

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Io userei un vettore di lookup:
    Codice PHP:
    $mesi = array(null, "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre");

    $mese = $date('n');
    echo
    "Il mese corrente è " . $mesi[$mese];
    Inoltre, non capisco l'uso di mktime nel secondo e terzo "blocco": stai impostando una data per usarla nella funzione date, ma poi non usi quest'ultima (non specifichi un formato). Di fatto il codice è equivalente alla stampa della sola stringa, senza la data.

  5. #5
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    173

    Predefinito

    ho fatto
    Codice:
    <?php
    // set the default timezone to use. Available since PHP 5.1
     date_default_timezone_set("Europe/Rome");
    $mesi = array(null, "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre");
    $mese = $date('n');
    echo "Il mese corrente è " . $mesi[$mese];  
    ?>
    ma mi da errore

    per l'altra cosa che dicevi, cioè mktime, tu cosa mi suggeriresti ti fare, voglio solo promptare un testo specifico per ogni mese dell'anno

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    ma mi da errore
    C'era un dollaro di troppo prima della funzione date, corretto diventa così:
    Codice PHP:
    <?php
    date_default_timezone_set
    ("Europe/Rome");
    $mesi = array(null, "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre");

    $mese = date('n');
    echo
    "Il mese corrente è " . $mesi[$mese];
    mktime serve per "impostare" una data, se vuoi mostrare un messaggio in base alla data corrente basta usare la funzione date. Tutto dipende da cosa vuoi stampare. Per il primo blocco direi qualcosa del genere:
    Codice PHP:
    echo "questa scritta appare solo perch&eacute; oggi &egrave; il " . date("d/m/Y");
    Per il secondo puoi usare un altro vettore di lookup con i nomi dei numeri ordinali:
    Codice PHP:
    $ordinali = array(null, "primo", "secondo", "terzo", "quarto", "quinto", "sesto", "settimo", "ottavo", "nono", "decimo", "undicesimo", "dodicesimo");

    echo
    $mesi[$mese] . " &egrave; il " . $ordinali[$mese] . " mese ecc. ecc.";
    Non c'è bisogno di richiamare ogni volta date_default_timezone_set, una è sufficiente.

  7. #7
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    173

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    Per il primo blocco direi qualcosa del genere:
    Codice PHP:
    echo "questa scritta appare solo perch&eacute; oggi &egrave; il " . date("d/m/Y");
    in effetti non ho colto la funzione di mktime, pensavo che potessi utilizzarla come "filtro" per fare in modo che apparisse un determinato messaggio solo per un determinato mese, come faccio a fare in modo:

    es.
    settembre:
    echo il mese corrente è settembre, è il primo mese d'autunno, nell'emisfero sud è il primo della primavere

    ottobre:
    echo il mese corrente è ottobre, è il secondo mese d'autunno, nell'emisfero sud è il secondo della primavere

    come faccio?

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Probabilmente uno switch è la scelta più naturale:
    Codice PHP:
    $mese = date('n');

    switch (
    $mese) {
    case
    1:
    echo
    "il mese corrente è gennaio, ecc ecc";
    break;
    case
    2:
    echo
    "il mese corrente è febbraio, ecc ecc";
    break;
    case
    3:
    echo
    "il mese corrente è marzo, ecc ecc";
    break;
    }

  9. #9
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    173

    Predefinito

    intanto ancora grazie per il prezioso supporto, ma tieni pazienza non ho certo la tua dimestichezza, detto ciò come diventerebbe il testo completo compreso questo tuo ultimo consiglio e il discorso degli ordinali?
    in sostanza vorrei che alla fine della fiera mi mostrasse:

    (ipotesi incui siamo in settembre):
    Il mese corrente è settembre.
    Settembre è il primo mese d'autunno e il primo della primavera nell'emisfero sud

    (ipotesi incui siamo in ottobre):
    Il mese corrente è ottobre.
    ottobre è il secondo mese d'autunno e il secondo della primavera nell'emisfero sud

    (ipotesi incui siamo in novembre):
    Il mese corrente è novembre.
    novembre è il terzo e ultimo mese d'autunno e il terzo della primavera nell'emisfero sud

    (ipotesi incui siamo in dicembre):
    Il mese corrente è dicembre.
    dicembre è l'ultimo mese dell'anno, il primo d'inverno nell'emisfero nord e il primo d'estate in quello del sud

    così via per il resto dei mesi dell'anno

  10. #10
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Se non ti servono le scritte "questa scritta appare solo perché oggi è il..." e "settembre è il 9 mese nel calendario...", diventa più comodo fare tutto con uno switch:

    Codice PHP:
    date_default_timezone_set("Europe/Rome");
    $mese = date('n');

    switch (
    $mese) {
    case
    9:
    echo
    "Il mese corrente è settembre.";
    echo
    "Settembre è il primo mese d'autunno e il primo della primavera nell'emisfero sud";
    break;

    case
    10:
    echo
    "Il mese corrente è novembre.";
    echo
    "ottobre è il secondo mese d'autunno e il secondo della primavera nell'emisfero sud";
    break;

    case
    11:
    echo
    "Il mese corrente è ottobre.";
    echo
    "novembre è il terzo e ultimo mese d'autunno e il terzo della primavera nell'emisfero sud";
    break;

    case
    12:
    echo
    "Il mese corrente è ottobre.";
    echo
    "dicembre è l'ultimo mese dell'anno, il primo d'inverno nell'emisfero nord e il primo d'estate in quello del sud";
    break;
    }

  11. #11
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    173

    Predefinito

    funziona alla perfezione, per cui ti ringrazio tanto

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •