Ya lo he conseguido. Aquí dejo el código por si alguien lo quiere.
Código PHP:
[HIGHLIGHT="PHP"]<?php
session_start();
if(!isset($_SESSION['f']) && !isset($_SESSION['c']))
{
$_SESSION['f']=0;
$_SESSION['c']=0;
}
if(!isset($_SESSION['tb']))
{
$_SESSION['tb']=array();
}
if(!isset($_SESSION['color_actual']))
{
$_SESSION['color_actual']="white";
}
if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='POST')
{
$_SESSION['f']=$_POST['filas'];
$_SESSION['c']=$_POST['columnas'];
}
if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD']=='GET')
{
if(isset($_GET['color']))
{
$_SESSION['color_actual']=$_GET['color'];
}
if(isset($_GET['fila']) && isset($_GET['columna']))
{
$f= $_GET['fila'];
$c= $_GET['columna'];
$_SESSION['tb'][$f][$c] = "background-color: ".$_SESSION['color_actual'];
}
}
?>
<html>
<head></head>
<body>
<form method="post" action="">
<p>Filas: <input type="number" name="filas" /></p>
<p>Columnas: <input type="number" name="columnas" /></p>
<p>Enviar <input type="submit" name="submit" /></p>
<p>Limpiar <input type="submit" name="limpiar" /></p>
</form>
<table border="1">
<?php for($i=0;$i<$_SESSION['f'];$i++): ?>
<tr>
<?php for($x=0;$x<$_SESSION['c'];$x++): ?>
<td style="<?php echo $_SESSION['tb'][$i][$x] ?>"><a href="?fila=<?php echo$i ?>&columna=<?php echo$x ?>"> <?php echo"$i-$x"; ?></a></td>
<?php endfor; ?>
</tr>
<?php endfor; ?>
</table>
<?php if($_SESSION['f']>0 || $_SESSION['c']>0)
{
echo $enlaces;
}
?>
<ul>
<li><a href="?color=red">Rojo</a></li>
<li><a href="?color=green">Verde</a></li>
<li><a href="?color=blue">Azul</a></li>
</ul>
</body>
</html>[/HIGHLIGHT]