Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    calendario che 'sballa'

    Sto creando un calendario, in cui poi andrò ad inserire degli eventi, però sto incontrando dei problemi.
    Cominciamo col codice, questo:
    Codice PHP:
    <?
    echo  "<table width=\"623\" align=\"center\" border=\"0\" bordercolor=\"#0279d1\" bgcolor=\"#cccccc\" cellpadding=\"0\" cellspacing=\"0\">";
    echo 
    "<tr height=\"30\" bgcolor=\"#0279d1\">";
    $conta 0;
    for (
    $i=0;$i<7;$i++){
    $conta $conta+1;
    if (
    $conta == 7) {
    echo 
    "<td width=\"89\" bgcolor=\"#cc66cc\" align=\"center\"><font color=\"#ffffff\">[b]".$giorno[$i]."[/b]</font></td>";
    } else
    echo 
    "<td width=\"89\" align=\"center\"><font color=\"#ffffff\">[b]".$giorno[$i]."[/b]</font></td>";
    }
    echo 
    "</tr>";

    $primo=mktime(0,0,0,$mm,1,$aa); 
    $delta=date("w",$primo)-1;
    echo 
    "<tr bgcolor=\"#ffffff\" height=\"89\" align=\"center\" valign=\"top\">\n";
    for (
    $i=0;$i<$delta;$i++){
    echo 
    "<td bgcolor=\"#cccccc\"></td>";
    }
    for (
    $i=1;$i<=date("t",$primo);$i++){ 

      if ((
    $i+$delta)%7==1) echo "<tr bgcolor=\"#ffffff\" height=\"89\" align=\"center\" valign=\"top\">"
     
        if ((
    $i==date("d"))&&($mm==date("n"))&&($aa==date("Y"))) {
    echo 
    "<td style='border:1px solid #0279d1; background:#D9EFFF;'>[b]<font color=\"#0279d1\">".$i."</font>[/b]</td>";
        } else 
    echo 
    "<td style='border:1px solid #0279d1;'>".$i."</td>";
     
      if ((
    $i+$delta)%7==0) echo "</tr>"
    }
    echo  
    "</table>\n";
    ?>
    Lo cosa strana è che:
    - se il primo del mese cade di domenica, invece di mettere la casella del giorno 1 nell'ultima colonna a destra della tabella, la mette nella prima (equivalente a lunedi); questo succede per i mesi di aprile e luglio 2007, ad es.
    - se il primo del mese cade di lunedì (gennaio ed ottobre 2007), mette correttamente la casella del giorno 1 nella prima colonna, però mi crea una prima riga di sette caselle vuote.
    Dove è l'errore, che io (mannaggia ai fahreneit!...) non riesco a vederlo?

    E già che ci siamo, poichè alcuni mesi (ad es. aprile e luglio 2007) sono spalmati su sei settimane, mentre gli altri soltanto su cinque, come posso far aggiungere (solo in questi casi) una riga vuota alla tabella, in modo che sia sempre della stessa dimensione?

    Thanx_in_advance
    metatad
    graphic & web design

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo. E' da migliorare ma secondo me è già un buono spunto.

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    <style type="text/css">
    <!--
    .nomese  {background-color:gray}
    .feriale {background-color:yellow}
    .festivo {background-color:green}
    -->
    </style>
    
    </head>
    <body>
    <?php 
    //------ Esempio con il mese di Giugno 2007
    $day   = 01;
    $month = 07;
    $year  = 2007;
    //------ Primo giorno del mese
    $firstDay = mktime(0,0,0,$month,$day,$year);
    $annoData = date("Y",$firstDay);
    $meseData = date("F",$firstDay);
    //------ Mi posiziono sul primo lunedi
    while (date("w",$firstDay) != 1) {
     $firstDay = mktime(0,0,0,date("m",$firstDay),date("d",$firstDay) - 1,date("Y",$firstDay));
    } // while (date("w",$firsDay) == 1) 
    ?>
    
    <div align="center">
     <div align="center">Mese :<?php print "$meseData $annoData" ?></div>
     <table summary="" cellpadding="1" cellspacing="0" border="1">
     <th>Lunedi</th><th>Martedi</th><th>Mercoledi</th><th>Giovedi</th><th>Venerdi</th><th>Sabato</th><th>Domenica</th>
     <?php 
      //------- Ho fino a 6 settimane x 7 gioni = 42
      for ($set=1;$set<=6;$set++) {?>
       <tr><?php
       for ($gio=1;$gio<=7;$gio++) {
    	  //------- Se la data corrente non è del mese allora sfondo grigio
    		//        Se la data corrente è del mese e non si tratta di una domenica allora sfondo giallo
    		//        Se la data corrente è del mese e  si tratta di una domenica allora sfondo verde
    	  $classGior = date("m",$firstDay) != $month ? "nomese" : (date("w",$firstDay) == 0 ? "festivo" : "feriale");?>
    	  <td class="<?php print $classGior  ?>"><?php print date("d",$firstDay) ?></td><?php
    	  //------- Giorno successivo
    	  $firstDay  = mktime(0,0,0,date("m",$firstDay),date("d",$firstDay) + 1,date("Y",$firstDay));
    	 } // for ($gio=1;$gio<=7;$gio++) ?>
      </tr><?php
      } // for ($set=1;$set<=6;$set++) ?> 
     </table>
    </div>
    </body>
    </html>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.