E' un problema di html e non php. Comunque sia dovrebbe bastare togliere il tag <tr> e mettere un
in piu'. ti posto un aggiustamento sul tuo script poi devi vedertela tu per il layout.

Codice PHP:
while ($result mysql_fetch_array($esegui))
{    
//apertura while
echo"<table border='1' width='25%'>
  <tr>
    <td width='10%'>Giorno</br>
    Disponibilita</td>
  "
;
$color = array ("Completo" => "red""Disponibile" => "green""0" => "black");
for ( 
$contatore=1$contatore <= 31$contatore++)
{
 
$var 'g' $contatore;
 
$bgcolor 'bgcolor="' $color[$result[$var]] . '"';
echo 
"

    <td width='10%'>
$contatore</br>
    
$bgcolor></td>

"
;
}    
//chiusura ciclo for
echo "     </tr>" ;
}    
//chiusura ciclo while