Visualizzazione risultati 1 fino 9 di 9
Like Tree1Likes
  • 1 Post By GraphOGLRisorse

Discussione: convertire singolare in plurale

  1. #1
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito convertire singolare in plurale

    Rieccomi

    ho questa funzione che calcola quanti minuti, ore, giorni e anni sono trascorsi

    quello che vorrei ottenere e convertire il testo in plurale

    esempio:

    dopo 2 minuti visualizzare minuti

    dopo 2 ore visualizzare ore

    dopo 2 giorni visualizzare giorni

    dopo 2 annni visualizzare anni


    codice con una variabile inserita per prova

    Codice PHP:

    $var3
    = $fetch->dateup;

    $seconds_ago = (time() - strtotime($var3));

    if (
    $seconds_ago >= 31536000) {
    echo
    "aggiornato " . intval($seconds_ago / 31536000) . " anno fa";
    } elseif (
    $seconds_ago >= 2419200) {
    echo
    "aggiornato " . intval($seconds_ago / 2419200) . " mese fa";
    } elseif (
    $seconds_ago >= 86400) {
    echo
    "aggiornato " . intval($seconds_ago / 86400) . $a3;
    } elseif (
    $seconds_ago >= 3600) {
    echo
    "aggiornato " . intval($seconds_ago / 3600) . " ora fa";
    } elseif (
    $seconds_ago >= 60) {
    echo
    "aggiornato " . intval($seconds_ago / 60) . " minuto fa";
    } else {
    echo
    "aggiornato meno di un minuto fa";

    e questo e' il resto, che non funziona

    Codice PHP:
    <?php if($seconds_ago == 86400){echo $a3 . "giorno fa";}else{echo $a3 . "giorni fa";}?>
    Ultima modifica di blackskyisback : 23-03-2021 alle ore 14.03.06

  2. #2
    omgprova non è connesso Utente giovane
    Data registrazione
    03-02-2020
    Messaggi
    67

    Predefinito

    Citazione Originalmente inviato da blackskyisback Visualizza messaggio
    Rieccomi

    ho questa funzione che calcola quanti minuti, ore, giorni e anni sono trascorsi

    quello che vorrei ottenere e convertire il testo in plurale

    esempio:

    dopo 2 minuti visualizzare minuti

    dopo 2 ore visualizzare ore

    dopo 2 giorni visualizzare giorni

    dopo 2 annni visualizzare anni


    codice con una variabile inserita per prova

    Codice PHP:

    $var3
    = $fetch->dateup;

    $seconds_ago = (time() - strtotime($var3));

    if (
    $seconds_ago >= 31536000) {
    echo
    "aggiornato " . intval($seconds_ago / 31536000) . " anno fa";
    } elseif (
    $seconds_ago >= 2419200) {
    echo
    "aggiornato " . intval($seconds_ago / 2419200) . " mese fa";
    } elseif (
    $seconds_ago >= 86400) {
    echo
    "aggiornato " . intval($seconds_ago / 86400) . $a3;
    } elseif (
    $seconds_ago >= 3600) {
    echo
    "aggiornato " . intval($seconds_ago / 3600) . " ora fa";
    } elseif (
    $seconds_ago >= 60) {
    echo
    "aggiornato " . intval($seconds_ago / 60) . " minuto fa";
    } else {
    echo
    "aggiornato meno di un minuto fa";

    e questo e' il resto, che non funziona

    Codice PHP:
    <?php if($seconds_ago == 86400){echo $a3 . "giorno fa";}else{echo $a3 . "giorni fa";}?>
    Mi sa che devi mettere <(minore)
    Ultima modifica di omgprova : 23-03-2021 alle ore 14.40.36

  3. #3
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    niente, non va

  4. #4
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    3,980

    Predefinito

    Salve,
    dopo aver fatto qualche prova, cercando sull'argomento, ho trovato una fuzione che è meglio della mia che stavo sistemando.

    Questa è la funzione:
    Codice PHP:
    function quanto_tempo_fa($ptime) {
    $etime = time() - strtotime($ptime);
    if (
    $etime < 1) return '0 secondi';

    $a = array(
    31536000 => array('anno','anni'),
    2419200 => array('mese','mesi'),
    86400 => array('giorno','giorni'),
    3600 => array('ora','ore'),
    60 => array('minuto','minuti'),
    1 => array('secondo','secondi')
    );

    foreach (
    $a as $secs => $str) {
    $d = $etime / $secs;
    if (
    $d >= 1) {
    $r = round($d);
    return
    "aggiornato " . $r . ' ' . ($r > 1 ? $str[1] : $str[0]) . ' fa';
    }
    }
    }

    //test
    echo quanto_tempo_fa("2021-2-22 04:31:05");
    Fonte: https://www.mrw.it/php/php-time-ago_11438.html

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 23-03-2021 alle ore 17.25.44
    blackskyisback likes this.

  5. #5
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da GraphOGLRisorse Visualizza messaggio
    Salve,
    dopo aver fatto qualche prova, cercando sull'argomento, ho trovato una fuzione che è meglio della mia che stavo sistemando.
    Cordiali saluti.


    Ciao,

    e come la richiamo? mi da errore,

    il campo da cui prelevare i dati e' dateup




    Codice PHP:

    <?php

    function quanto_tempo_fa($ptime) {
    $etime = time() - strtotime($ptime);
    if (
    $etime < 1) return '0 secondi';

    $a = array(
    31536000 => array('anno','anni'),
    2419200 => array('mese','mesi'),
    86400 => array('giorno','giorni'),
    3600 => array('ora','ore'),
    60 => array('minuto','minuti'),
    1 => array('secondo','secondi')
    );

    foreach (
    $a as $secs => $str) {
    $d = $etime / $secs;
    if (
    $d >= 1) {
    $r = round($d);
    return
    "aggiornato " . $r . ' ' . ($r > 1 ? $str[1] : $str[0]) . ' fa';
    }
    }
    }



    $var1 = $fetch->dateup; // campo da dove prelevare i dati

    //test
    echo quanto_tempo_fa($var1);

    ?>

  6. #6
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    3,980

    Predefinito

    Io l'ho testato inserendo le date manualmente e a me funziona.

    Quale errore visualizza, può riportarlo?

    Che tipo di variabile sta usando?
    Cosa risulta visualizzando dateup direttamente?
    Codice PHP:
    echo $fetch->dateup;
    Cordiali saluti.

  7. #7
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    il primo dato viene restituito correttamente

    2021-03-23 13:46:19 aggiornato 5 ore fa

    il secondo visualizzo errore

    2021-03-22 14:27:53

    Fatal error: Cannot redeclare quanto_tempo_fa() (previously declared in

    il tutto si trova dentro un ciclo while
    Ultima modifica di blackskyisback : 23-03-2021 alle ore 18.43.12

  8. #8
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    3,980

    Predefinito

    Il problema è che si sta caricando la funzione all'interno del ciclo e non solo la sua chiamata. Dove spostare il codice della funzione prima dell'eseguzione del ciclo.

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 23-03-2021 alle ore 19.15.16

  9. #9
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da GraphOGLRisorse Visualizza messaggio
    Il problema è che si sta caricando la funzione all'interno del ciclo e non solo la sua chiamata. Dove spostare il codice della funzione prima dell'eseguzione del ciclo.

    Cordiali saluti.
    Ciao, ho risolto

    se sposto fuori dal ciclo non visualizzo i dati del timestamp

    quindi ho fatto cosi, la soluzione 3



    Codice PHP:
    <?php

    if (!function_exists('quanto_tempo_fa')) {

    function
    quanto_tempo_fa($ptime) {
    $etime = time() - strtotime($ptime);
    if (
    $etime < 1) return '0 secondi';

    $a = array(
    31536000 => array('anno','anni'),
    2419200 => array('mese','mesi'),
    86400 => array('giorno','giorni'),
    3600 => array('ora','ore'),
    60 => array('minuto','minuti'),
    1 => array('secondo','secondi')
    );

    foreach (
    $a as $secs => $str) {
    $d = $etime / $secs;
    if (
    $d >= 1) {
    $r = round($d);
    return
    "aggiornato " . $r . ' ' . ($r > 1 ? $str[1] : $str[0]) . ' fa';
    }
    }
    }

    }

    $var1 = $fetch->dateup;

    //test
    echo quanto_tempo_fa($var1);


    ?>




    source


    Solution 1

    Don't declare function inside a loop (like foreach, for, while...) ! Declare before them.

    Solution 2
    You should include that file (wherein that function exists) only once. So,
    instead of : include ("functions.php");
    use: include_once("functions.php");
    Solution 3

    If none of above helps, before function declaration, add a check to avoid re-declaration:

    if (!function_exists('your_function_name')) {
    function your_function_name() {
    ........
    }
    }
    grazie GraphOGLRisorse


    https://stackoverflow.com/questions/...clare-function
    Ultima modifica di blackskyisback : 23-03-2021 alle ore 19.23.08

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
  •