Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    40

    Selezione data piu vicina a quella odierna

    Vorrei fare un query per far stampare una riga da una tabella in un database con la data piu vicina a quella odierna.
    Ho fatto cosi ma non funziona, HELP.



    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $query = "SELECT data, giornata, partita1, partita2, partita3, partita4, partita5, partita6, partita7, riposa, risultato1, risultato2, risultato3, risultato4, risultato5, risultato6, risultato7, ABS(DATEDIFF(NOW(), data)) as diff FROM calendario ORDER BY diff LIMIT 1";

    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);

    echo "<h2>Giornata </td><td>$row[giornata] - " . date("j/n/y", $row[data]) ." </h2>
    ";
    echo" <table border=1 cellpadding=2 cellspacing=2 bgcolor=#ff7f00>

    <tr><th width=400>Incontro</th><th width=80>Risultato</th></tr>
    <tr><td>$row[partita1]</td><td><div align=center>$row[risultato1]</div></td></tr>
    <tr><td>$row[partita2]</td><td><div align=center>$row[risultato2]</div></td></tr>
    <tr><td>$row[partita3]</td><td><div align=center>$row[risultato3]</div></td></tr>
    <tr><td>$row[partita4]</td><td><div align=center>$row[risultato4]</div></td></tr>
    <tr><td>$row[partita5]</td><td><div align=center>$row[risultato5]</div></td></tr>
    <tr><td>$row[partita6]</td><td><div align=center>$row[risultato6]</div></td></tr>
    <tr><td>$row[partita7]</td><td><div align=center>$row[risultato7]</div></td></tr>
    <tr><td colspan=2>$row[riposa] riposa</td></tr></table> ";

  2. #2
    bisognerebbe capire se ti serve la prossima oppure l'ultima. Sembrerebbe l'ultima dalla tua query.

    in questo caso basterebbe fare:

    codice:
    .....
    where data < CURDATE()
    order by data desc
    LIMIT 1

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    40
    mi serve la piu vicina che sia quella passata o quella che deve venire.
    Grazie

  4. #4
    Originariamente inviato da Snow82
    mi serve la piu vicina che sia quella passata o quella che deve venire.
    Grazie
    perche' non funziona quella tua? prova ad usare CURDATE() invece di NOW().

    ma sarebbe importante sapere "perche" non funziona.... cioe' che intendi dire.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    40
    ho provato a cambiare anche con curdate e non cambia il risultato.
    Lo script mio non funziona perche non mi visualizza la data piu vicina, ma un'altra data di cui non capisco il criterio.

    Ho provato anche il tuo script ma mi da prpprio un warning nel fetch array che sta dopo e non stampa nulla.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    40
    in realta ora che provo meglio mi visualizza la data corretta se non mi trovo nello stesso giorno. pero online (ho aruba) non mi funziona, stampa la prima data disponibile e basta.
    Mi "funziona" solo in locale...

  7. #7
    quale warning ricevi e sopratutto quali sono le versioni mysql utilizzate?

    quale il formato del campo data che utilizzi? ....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    40
    Scusami ilwarning l'ho risolto, dimenticavo una cosa.
    Ora sempre il tuo script mi visualizza una data inesistente :P
    mysql utilizzo la 5.
    Il campo della data dovrebbe essere Unix, quella visualizzata in secondi etc...

  9. #9
    Originariamente inviato da Snow82
    Scusami ilwarning l'ho risolto, dimenticavo una cosa.
    Ora sempre il tuo script mi visualizza una data inesistente :P
    mysql utilizzo la 5.
    Il campo della data dovrebbe essere Unix, quella visualizzata in secondi etc...
    beh! allora hai trovato l'inghippo.....

    now() e curdate() rappresentano la data come yyyy-mm-dd e quindi si comparano zucche con fagioli.

    potresti provare con ABS(unix_timestamp() - data)) as diff

    oppure con ABS(DATEDIFF(CURDATE(), from_unixtime(data, 'Y-m-d')) ) as diff

    tenendo pero' presente che la prima ragiona in termini di secondi e la seconda di giorni. Se vuoi evitare che venga estratta la data odierna si deve modificare la query mettendo la selezione della data nel where

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    40
    in locale funziona ora, a parte che non mi visualizza la giornata se coincide con la data odierna.
    Pero non capisco perchè online non funziona! mi visualizza la giornata del 30 settembre!! che poi è la prima giornata.



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 © 2024 vBulletin Solutions, Inc. All rights reserved.