Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    153

    [php/mySQL] controllare un anno intero

    Allora, questa è un pochino tosta...

    Ho un db mySQL con una tabella nella quale inserisco dei periodi (DAL .... AL ...), io devo fare in modo che all'ingresso di una pagina php, questa mi recuperi tutti i periodi e faccia LA DIFFERENZA tra quelli inseriti nel db e quelli rimasti nel resto dell'anno...


    ad esempio :


    nel db ho una riga DAL 01/01/2007 al 01/03/2007


    voglio che la pagina mi evidenzi che dal 02/03/2007 al 31/12/2007 non ci sono PERIODI INSERITI...


    ovviamente la faccenda diventa piu complicata visto che ci saranno altri periodi oltre al primo...come potrei fare ? potreste consigliarmi una bozza di procedimento ? grazieeee

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    153
    uppino

  3. #3
    hai provato con BETWEEN? guardi su google "mysql between date".
    buona fortuna
    ..:: GSFLASH ::..
    HTTP://WWW.GSFLASH.IT
    MCTS - ACP - OCP - ECDL
    Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
    My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    153
    Ottima risorsa ! grazie !

    purtroppo l'unica cosa che mi viene in mente ora è partire dal primo gennaio, incrementare ogni volta di un giorno e controllare se quel giorno è presente negli intervalli delle righe (col between)...se non lo è esco dal ciclo e segnalo ERRORE, altrimenti continuo fino al 31/12...


    il problema è che cosi ci potrebbero essere fino a 365 (!) query....un pò dispendioso ? non vorrei che ci volessero 5 minuti per aprire la pagina...

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Dai un'occhiata a questo tutorial, dovrebbe esserci qualcosa che fa per te

    http://database.html.it/guide/lezion...ioni-alberghi/

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    153
    purtroppo nulla di nuovo ma grazie lo stesso

  7. #7
    posta qui lo script e l'errore.
    ..:: GSFLASH ::..
    HTTP://WWW.GSFLASH.IT
    MCTS - ACP - OCP - ECDL
    Ubuntu 7.10/OpenSuse 10.3/Vista Premium/MacOSX Leopard
    My authentic japanese name is 薗田Sonoda (garden field) 大河 Taiga (big river)

  8. #8
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    L'errore è che non sa come fare.

    Non vedo molte soluzioni: ti devi fare un controllo per ciascuno dei 365 giorni dell'anno, per vedere se ci sono periodi inseriti che lo coinvolgono. Quando li trovi elimini quel giorno. Alla fine hai i giorni rimasti

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    153
    Risolto ! alla fine ho fatto tutti i controlli nei 365 giorni, e anche alle bruttissime (364 query) lo script è velocissimo ! posto qui il codice, non si sa mai che serva a qualcuno
    Codice PHP:
    $stamp_START mktime(0,0,0,0101$_POST['anno']);
            

    $stamp_END mktime(0,0,0,1231$_POST['anno']);
    $flag=0;
    $check_time=$stamp_dal;
    $giorno60 60 24 1;
    for(
    $t=0;$check_time_full!=$stamp_END;$t++){

    $check_time_full=$stamp_START+($giorno*$t);
    //$query_check_time="SELECT * FROM PERIODO WHERE data_da <= $check_time AND data_a >= $check_time";
    //print($query_check_time);
    $query_check_time="SELECT * FROM PERIODO WHERE $check_time_full BETWEEN data_da AND data_a ";

    $result_check_time=mysql_query($query_check_time);
    $num=mysql_num_rows($result_check_time);
    if(
    $num==0){ $flag=1; break; }

    Grazie a tutti per l'aiuto !!

  10. #10
    ti segnalo un possibile bug nel tuo script.

    $stamp_END = mktime(0,0,0,12, 31, $_POST['anno']);

    cosi' non ti prendera' in considerazione tutto il giorno 31-12. Considera anche le ore del giorno di fine.

    $stamp_END = mktime(23,59,59,12, 31, $_POST['anno']);


    questo a prescindere dal resto dello script.

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

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.