Esto deberia solucionar tu problema, modifique un poco el código, para que no imprimas html desde php, no es muy buena practica.
Saludos!
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
$hostname = "*";
$user = "*";
$password = "*";
$database = "*";
$link = mysqli_connect($hostname, $user, $password, $database);
mysqli_query($link, 'SET NAMES "utf8" ');
if(isset($_POST['nombre']) && !empty($_POST['nombre'])){
mysqli_query("UPDATE SET disponible_categoria='".$_GET['categoria']."' WHERE nom_categoria='".$_GET['nombre']."'");
}
$query_disponible_categoria = "SELECT * FROM categories";
$result_disponible_categoria = mysqli_query($link, $query_disponible_categoria);
?>
<form action="disponibilidad.php" method="post">
<table border="1">
<tr>
<td>Categoria</td>
<td>Disponible</td>
<td>Estado</td>
</tr>
<?php
while ($row_disponible_categoria = mysqli_fetch_array($result_disponible_categoria, MYSQLI_ASSOC)) {
$disponible = ($row_disponible_categoria['disponible_categoria'] == 'si');
?>
<tr>
<td><?=$row_disponible_categoria['nombre_categoria']?></td>
<td><?=$row_disponible_categoria['disponible_categoria']?></td>
<td>
Si<input type="radio" name="categoria" value="si"
<?=($disponible)?' checked="checked"':null?> />
No<input type="radio" name="categoria" value="no"
<?=(!$disponible)?' checked="checked"':null?> />
<input type="hidden" name="nombre" value="<?=$row_disponible_categoria['disponible_categoria']?>"/>
</td></tr>
<?
}
?>
</table>
<input type="submit" name="submit" value="submit"/>
</form>
</body>
</html>