lo he revisado y tenia varios errores: pongo el codigo final que si que va por si alguien lo necesita.
Código PHP:
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
$sql = "SELECT id, nombre, provincia1, nuevoNombre1 FROM dr_anuncio WHERE act='1' ORDER BY id DESC LIMIT 15";
$result = mysql_query ($sql) or die (mysql_error());
$columnes = 3; # Número de columnas (variable)
if (mysql_num_rows($result)==0){echo "<tr><td colspan=$columnes>No hay resultados en la BD.</td></tr> ";}
for ($i=1; $row = mysql_fetch_row ($result); $i++) {
$resto = ($i % $columnes); # Número de celda del <tr> en que nos encontramos
if ($resto == 1) {echo "<tr>";}
echo "<td align='center' valign='top'>";
echo "<table width=\"\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<td background=\"media/nov_box_foto_1.gif\"><img src=\"media/nov_box_foto_1.gif\" alt=\"\" border=\"0\"></td>\n";
echo "<td background=\"media/nov_box_foto_1.gif\"></td>\n";
echo "<td background=\"media/nov_box_foto_2.gif\"><img src=\"media/nov_box_foto_2.gif\" alt=\"\" border=\"0\"></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td background=\"media/nov_box_foto_1.gif\"></td>\n";
echo "<td bgcolor=\"white\"><a href=\"anuncios.php?id=$row[0]\" ><img src=\"secciones/users/$row[3]\" alt=\"$row[1]\" height=\"77\" border=\"0\"></td>\n";
echo "<td background=\"media/nov_box_foto_2.gif\"></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td background=\"media/nov_box_foto_4.gif\"></td>\n";
echo "<td background=\"media/nov_box_foto_4.gif\"><img src=\"media/nov_box_foto_4.gif\" alt=\"\" border=\"0\"></td>\n";
echo "<td><img src=\"media/nov_box_foto_3.gif\" alt=\"\" border=\"0\"></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class=\"nom_nove_portada\" colspan=\"3\" align=\"center\">$row[2]</td>\n";
echo "</tr>";
echo "</table>";
if ($resto == 0) {echo "</tr>";} # Si es la última celda, cerramos </tr>
}
if ($resto <> 0) { # Si el resultado no es múltiple de $columnes acabamos de rellenar los huecos
$ajust = $columnes - $resto; # Número de huecos necesarios
for ($j = 0; $j < $ajust; $j++) {echo "<td> </td>";}
echo "</tr>"; # Cerramos la última línea </tr>
}
echo "</tr>";
echo "</table>";