Codice PHP:
	
echo "<table><tr><td id='centro'>";
  echo "<table style='width: 100%;'><caption>IL CAMPIONATO</caption>";
  if (isset($campionato)) {
    $andata=0;
    $ritorno=1;
    ksort($campionato); # necessario, almeno x ins_campionato.php
    # divide il campionato nei due gironi andata e ritorno mantenendo come chiave la giornata
    $giorn_gir=array_chunk($campionato,count($campionato)/2,true);
    foreach ($giorn_gir[$andata] as $giorn_and_n => $giorn_and) {
      list(,$giorn_rit)=each($giorn_gir[$ritorno]);
      echo "<tr><td class='quadro'>";
  echo "<table class='giornata'>";
  foreach ($giorn_and as $gara_and_n => $gara_and) {
    list(,$gara_rit)=each($giorn_rit);
    if ($gara_and_n=='data') {
      echo "<caption>[i](A: ".$gara_and.")[/i] ";
      echo $giorn_and_n."ª Giornata [i](R: ";
      echo $gara_rit.")[/i]</caption>";
    } else {
      $i_sqinc=$gara_and['i_sqinc'];
      $i_sqint=$gara_and['i_sqint'];
      echo "<tr><td class='ris_and'>".risultato_visualizzabile($gara_and['risultato'],FALSE)."</td>";
      echo "<td class='sq_prima_in_casa'".color_mia_sq($squadre[$i_sqinc],$mia_squadra).">";
      echo squadra_visualizzabile($squadre[$i_sqinc])."</td>";
      echo "<td class='trattino'>-</td>";
      echo "<td class='sq_prima_in_trasf'".color_mia_sq($squadre[$i_sqint],$mia_squadra).">";
      echo squadra_visualizzabile($squadre[$i_sqint])."</td>";
      echo "<td class='ris_rit'>".risultato_visualizzabile($gara_rit['risultato'],TRUE)."</td></tr>";
    }
  }
echo "</table>";
      echo "</td></tr>";
    }
  } else
    echo "<tr><td>Il calendario del campionato non è ancora disponibile!</td></tr>";
  echo "</table>";
echo "</td></tr></table>"; 
 
$giorn_and è un array con indici da 1 a 8 per le gare e 'data' che indica la data della giornata (ovviamente $giorn_rit si riferisce alle gare del girone di ritorno);
la funzione risultato_visualizzabile capovolge il risultato per il ritorno, mentre squadra_visualizzabile sceglie e visualizza le parti dell'array da visualizzare;
per quanto riguarda invece la formattazione css ho questo file allegato (ho messo solo la parte interessata)
	codice:
	body { font-family: tahoma, verdana, arial; text-align: center; }
caption {
          padding-top: 18px;
          color: #003366;
          font-size: 16px;
          font-weight: bold;
          text-decoration: underline;
        }
td { vertical-align: top; }
i {
    font-style: normal;
    font-size: 11px;
    font-weight: normal;
  }
#centro {
          width: 526px;
          height: 751px;
          background-image: url(index_file/rilievo_serie_a.jpg);
          background-repeat: repeat;
          color: #003366;
          font-size: 11px;
        }
.quadro { border: thin solid #003366; width: 100%; }
.quadro table caption { padding-top: 0px; text-decoration: none; }
.giornata { width: 100%; }
td.ris_and { width: 16px; text-align: left; color: white; }
td.sq_prima_in_casa { width: 44%; text-align: right; font-size: 9px; }
td.trattino { width: 0px; }
td.sq_prima_in_trasf { width: 44%; text-align: left; font-size: 9px; }
td.ris_rit { width: 16px; text-align: right; color: white; }
 
nel sito che ho costruito ho fatto uso massiccio di table, tr, td;
pochissimo le liste, e niente <div> e 
; il fatto è che le tabelle mi danno l'impressione di essere sempre la soluzione più adatta, e non so mai in quali casi invece è più indicata un'altra soluzione!