Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1

    parametro ricavato che varia ogni ora

    Ciao a tutti.... Ho una richiesta un po particolare e non garantisco di riuscire a spiegarmi bene ma intanto ci provo.... Io ho una variabile $dobloni che aumenta o diminuisce ogni ora in base a una formula

    codice:
    $dobloni=($guadagno_allora*$n_ore_iscritto)-$robacomprata
    La mia domanda e: La variabile $n_ore_iscritto, che dovra avere il numero di ore passate dal momento di iscrizione del utente, ovviamente nel mio DB dovro inserire un campo con la data e ora di iscrizione di ogni utente... Ma come faccio calcolare quanto tempo e passato da quella data e ora? (So che devo usare delle funzioni time o qlksa di simile, ma non so bene cosa)


    Grazie

  2. #2
    ah si e anche.... In che formato devo memorizzare data e ora sul mio DB?

  3. #3
    Nel tuo DB data ed ora devono essere impostati secondo lo standard americano cioé

    DATETIME 'AAAA-MM-GG HH:MM:SS'

    anche perché se devi fare delle select ordinando il campo data così non avrai alcun problema.


    Per vedere quante ore sono passate dall'iscrizione ad ora, puoi fare in questo modo:

    $data_di_oggi = today(date("Y-m-d H:i:s");

    e, poi, puoi fare questa select

    SELECT TIME_FORMAT(TIMEDIFF('$data_di_oggi', '$data_iscrizione'), '%H') as ore

    ti spiego: TIMEDIFF fa la differenza tra 2 date (devono essere dello stesso formato, cioé solo DATE oppure DATETIME oppure TIME) in termini di ore, nel formato "HH:MM:SS"

    TIME_FORMAT, invece, ha come input un campo di tipo TIME e ne restituisce il formato secondo il parametro che gli dati. Nel nostro caso abbiamo usato %H che prende solo le ore, senza alcun arrotondamento.

    Faccio un esempio:

    se la data di oggi è
    2007-03-05 22:00:00

    e l'utente si è iscritto il giorno
    2007-03-03 23:15:00

    la select su esposta ritorna un campo ore che ha come valore 46 che sono, appunto, le ore intercorse tra la data di iscrizione dell'utente e quella odierna.

    Ciao.

  4. #4
    ringrazio infinitamente domani provero e ti faccio sapere grazie mille nuovamente

  5. #5
    non funziona... Quando eseguo la query mi dice che non e un valore valido per una query.. in effetti penso sia perche per fare la query non uso il db perche ho una variabile $data_di_oggi e una variabile $_SESSION[data_isc] quindi non vado ad usare il db ma semplicemente voglio fare la differenza tra le due date... C'e una funzione PHP senza andare a usare le query?

  6. #6
    Innanzitutto devi aprire la connessione al DB:

    $connessione = @mysql_connect("localhost","USER","PASSWORD")
    or die("Impossibile stabilire una connessione.");

    $db = @mysql_select_db($db_nome, $connessione) or die("Impossibile selezionare il database.");


    Adesso prendi la data di oggi:

    $data_di_oggi = today(date("Y-m-d H:i:s");

    Ora puoi eseguire la query:

    $sql_ora = "SELECT TIME_FORMAT(TIMEDIFF('$data_di_oggi', CAMPO_DATA_TABELLA), '%H')
    as ore
    FROM TUA_TABELLA
    WHERE id_utente = ......";

    $esegui = @mysql_query($sql_ora, $connessione) or die("Impossibile prendere le ore");

    if ($riga_ore = @mysql_fetch_assoc)
    {
    //Prendi le ore intercorse tra l'iscrizione ed oggi
    $ore = $riga_ore['ore'];
    }
    else
    {
    //Non c'è alcun utente con quell'id
    }

    Prova così

  7. #7
    questo e il mio codice:
    codice:
    $connessione=mysql_connect('localhost','root','') or die("no connect". mysql_error());
    mysql_select_db('dominator') or die("no db");
    session_name('Dominatorsession');
    session_start();
    
    $data_di_oggi=date("Y-m-d H:i:s");
    
    $sql=mysql_fetch_array(mysql_query("SELECT TIME_FORMAT(TIME_DIFF(".$data_di_oggi.",utenti.Data_Iscrizione),%H) AS ore FROM utenti WHERE utenti.UserName='".$_SESSION['username']."'")) or die("Impossibile prendere le ore".mysql_error());
    
    echo "ore trascorse ".$sql[ore];
    mysql_close($connessione);
    e questo e l'output:

    codice:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\appserv\www\tesina\pop-up\universo\home.php on line 13
    Impossibile prendere le ore You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(2007-03-23 14:44:25,utenti.Data_Iscrizione),%H) AS ore FROM ut
    Puo essere che i commandi time_format e time_diff siano di php5 (perche mi sono dimenticato di dire che uso php 4 per motivi al di fuori della mia portata che non sto qui a spiegare)

  8. #8
    mysql_query("SELECT TIME_FORMAT(TIME_DIFF(\"".$data_di_oggi."\",utenti .Data_Iscrizione),%H) AS ore FROM utenti WHERE utenti.UserName='".$_SESSION['username']."'")

    La variabile $data_di_oggi deve essere compresa o tra apici singoli o tra doppi apici

    prova così

  9. #9
    Non va ne anche con gli appici o doppi appici

  10. #10
    Ho aperto MySQL e ho dato il seguente comando SQL sulla tablella accessi che contiene il campo data_inizio come datetime:

    SELECT TIME_FORMAT(TIMEDIFF("2007-04-05 22:00:00", data_inizio), '%H') as ore
    FROM accessi

    e tutto va bene

    Prova anke tu ad aprire mysql-gui o phpMyAdmin o altro tools che usi per gestire il DB e prova ad eseguire la query:

    SELECT TIME_FORMAT(TIME_DIFF(".$data_di_oggi.",utenti.Dat a_Iscrizione),%H) AS ore FROM utenti WHERE utenti.UserName='".$_SESSION['username']."'")) or die("Impossibile prendere le ore".mysql_error());

    SELECT TIME_FORMAT(TIMEDIFF("2007-04-05 22:00:00", Data_Iscrizione), '%H') as ore
    FROM utenti WHERE UserName="TUO_USERNAME")

    Se non ti da errore allora hai sbagliato qualcosa nell'impostare la query con il php.
    Fammi sapere

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.