Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    tabella con tutti giorni dell'anno

    salve a tutti,
    dovrei creare una tabella contenente tutti i giorni dell'anno in maniera che il giorno sia nella colonna "giorno" della tabella, il mese nella colonna "mese" è così via...
    in altre parole 365 insert sul database!
    qualche idea?
    grazie in anticipo

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Una soluzione al volo senza ragionare troppo su altre possibili soluzioni:
    12 cicli for del tipo:
    Codice PHP:
    for($i=1$i<=31$i++) {
        
    $query "INSERT INTO tabella (giorno, mese) VALUES (" $i ",'Gennaio')";
        
    mysql_query($query);
    }
    for(
    $i=1$i<=28$i++) { // o 29 se vuoi il bisestile
        
    $query "INSERT INTO tabella (giorno, mese) VALUES (" $i ",'Febbraio')";
        
    mysql_query($query);
    }
    for(
    $i=1$i<=31$i++) {
        
    $query "INSERT INTO tabella (giorno, mese) VALUES (" $i ",'Marzo')";
        
    mysql_query($query);
    }
    // e così via fino a dicembre 

  3. #3
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Che ne dici di questo
    Codice PHP:
    for($i,$i<365,++$i){
    $date date_create('2010-01-01');
    date_add($datedate_interval_create_from_date_string('1 day'));
    $mese=date_format($date'm');
    $giorno=date_format($date'd');
    mysql_query("INSERT INTO tabella (giorno, mese) VALUES (" $giorno ",".$mese.")");


  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Meglio, ma anche qui penso avrà il problema del bisestile, il for viene eseguito 365 volte, un anno bisestile di giorni ne ha 366.
    Io farei il controllo sull'anno, si cicla finché si resta all'interno dell'anno iniziale, se si sfora arrivando al successivo ci si ferma.

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    Re: tabella con tutti giorni dell'anno

    Originariamente inviato da Creepy-Eyes
    salve a tutti,
    dovrei creare una tabella contenente tutti i giorni dell'anno in maniera che il giorno sia nella colonna "giorno" della tabella, il mese nella colonna "mese" è così via...
    in altre parole 365 insert sul database!
    qualche idea?
    grazie in anticipo
    Si può fare anche col solo sql. Piuttosto non mi sembra una grande idea quella di separare le componenti di una data.

    Comunque:

    codice:
    create table giorni (
      id int not null auto_increment,
      giorno tinyint,
      mese tinyint,
      anno smallint,
      primary key  (Id)
    ) engine=myisam;
    
    delimiter $$
    create procedure calendario(in anno int)
    begin
      declare i,ultimo,giorno,mese int;  
      set i = 0;
      select dayofyear(concat(anno,'-12-31')) into ultimo;
      while i < ultimo do
        select day(concat(anno,'-01-01') + interval i day) into giorno;
        select month(concat(anno,'-01-01') + interval i day) into mese;
        insert into giorni (giorno,mese,anno) values (giorno,mese,anno);
        set i = i + 1;
      end while;
    end $$
    delimiter ;
    
    call calendario(2008);
    
    select * from giorni;
    Se passi alla stored procedure come parametro un anno bisestile ne terrà conto generando un record in più.

  6. #6
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Originariamente inviato da Alhazred
    Meglio, ma anche qui penso avrà il problema del bisestile, il for viene eseguito 365 volte, un anno bisestile di giorni ne ha 366.
    Io farei il controllo sull'anno, si cicla finché si resta all'interno dell'anno iniziale, se si sfora arrivando al successivo ci si ferma.
    Oppure puoi usare date('L') che restituisce 1 se l'anno è bisestile o 0 negli altri casi.
    In questo modo setti prima dell'inizio del ciclo il valore max e non devi calcolare l'anno ad ogni passo (velocizzando così l'esecuzione).

  7. #7

    Re: Re: tabella con tutti giorni dell'anno

    Originariamente inviato da nicola75ss
    Si può fare anche col solo sql. Piuttosto non mi sembra una grande idea quella di separare le componenti di una data.

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

  8. #8
    grazie per le numerose risposte!

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.