Visualizzazione risultati 1 fino 9 di 9

Discussione: Aiuto matematico!

  1. #1
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Unhappy Aiuto matematico!

    Ciao a tutti!
    Nel mio sito ho una classifica e ogni canzone può essere votata soltanto una volta ogni 24 ore.
    Vorrei che per ogni canzone spuntasse dopo quanto tempo l'utente potrà votare nuovamente.
    Ogni volta che un utente vota registro quando ha votato (con time).
    Ecco cosa ho creato.
    Codice PHP:
    $tempo_rigo = mysql_fetch_array(QUERY);
    $tempo_residuo1 = $tempo_rigo['time']-time(); //facendo al contrario i minuti aumentano
    $tempo_residuo2 = $tempo_rigo['time']*time()/2400; //24 ore equivalgono a 2400?
    $tempo_residuo_h = 24-(date("G", $tempo_residuo2));
    $tempo_residuo_m = date("i", $tempo_residuo1);
    if(
    $tempo_residuo_h=="1"){
    $t_r_h = "1 ora";
    }else{
    $t_r_h = $tempo_residuo_h." ore";
    }
    Il tempo scorre, ma è errato: dove sbaglio?
    Nel cambio del giorno?
    Mi sono scervellato molto ma mi stavo prolungando un po' troppo e sono sicuro che sarei giunto a codici infiniti che penso si possano sintetizzare in qualche riga...
    Grazie mille.

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Nella variabile $tempo_rigo['time'] c'è il risultato della chiamata alla funzione time durante l'ultimo voto?
    Se è così l'espressione time()-$tempo_rigo['time'] ha come valore il numero di secondi passati dall'ultimo voto.
    Se questo valore è maggiore di 86400 (1d = 24h = 24*30m = 24*60*60s), allora l'ultimo voto è stato più di ventiquattro ore fa.
    Ultima modifica di karl94 : 21-01-2012 alle ore 15.44.24

  3. #3
    Guest

    Predefinito

    Prova questo:
    Codice PHP:
    $timestamp = &$tempo_rigo['time'];
    $periods = array('Second', 'Minut');
    $lengths = array('60', '60',);

    $difference = time() - $timestamp;
    $tense = 'da ora';

    for (
    $j = 0, $count = count($lengths) - 1; ($difference >= $lengths[$j]) && ($j < $count); ++$j)
    {
    $difference /= $lengths[$j];
    }

    $difference = round($difference);

    $periods[$j] .= ($difference != 1) ? 'i' : 'o';

    $t_r_h = $difference . ' ' . $periods[$j] . ' da ora';
    Ho usato il nome delle tue variabili per farti capire come adattare lo script.


  4. #4
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Unhappy

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Nella variabile $tempo_rigo['time'] c'è il risultato della chiamata alla funzione time durante l'ultimo voto?
    Sì.

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Se questo valore è maggiore di 86400 (1d = 24h = 24*30m = 24*60*60s), allora l'ultimo voto è stato più di ventiquattro ore fa.
    OK, a me però serviva stampare tra quanto tempo l'utente avrebbe potuto votare nuovamente.

    @biccheddu: ancora non funziona, nemmeno i minuti sono esatti...

  5. #5
    Guest

    Predefinito

    Hai cercato un countdown in php? Alla fine è quello che devi fare. L'unica differenza è che al posto di avere un timestamp in base ai giorni, basta che estrai la data dell'ultimo voto e ci aggiungi 86400 secondi, cioè 24 ore.


  6. #6
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    un countdown in php [...] è quello che devi fare
    Beh, un countdown è proprio quello che sto cercando di creare io...
    Vi sto chiedendo come mai quello che ho scritto non funziona.
    Ciao!

  7. #7
    Guest

    Predefinito

    L'ho riscritto da zero e funziona perfettamente:
    Codice PHP:
    $number = false;
    $last = 1327275119;
    $now = &$tempo_rigo['time'];
    $vote = $last + 86400;
    $hours = round((($vote - $now) / 60) / 60);
    $minutes = (($hours == 0) && (($vote - $now) > 59)) ? round(($vote - $now) / 60) : 0;
    $seconds = ($minutes < 1) ? ($vote - $now) : 0;

    if (
    $hours)
    {
    $number = $hours;
    $lang = ($number > 1) ? 'ore' : 'ora';
    }
    else if (
    $minutes)
    {
    $number = $minutes;
    $lang = ($number > 1) ? 'minuti' : 'minuto';
    }
    else if (
    $seconds)
    {
    $number = $seconds;
    $lang = ($number > 1) ? 'secondi' : 'secondo';
    }

    echo (
    $number) ? 'Potrai votare tra ' . $number . ' ' . $lang : 'Puoi votare';
    Ultima modifica di biccheddu : 24-01-2012 alle ore 01.41.30

  8. #8
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Grazie mille, funziona perfettamente.
    Puoi spiegarmi (o linkarmi una guida su) come funzionano punti interrogativi per il minuto o i minuti?
    Ciao!
    Ultima modifica di radiodelmomento : 24-01-2012 alle ore 21.54.46

  9. #9
    Guest

Regole di scrittura

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