Solo unas observaciones:
echo $vcheck[$k][2]."<input name='".$vcheck[$k][1]. bla bla bla
Todos los radio de un mismo bloque deben tener el mismo nombre:
<... name="rad1" value="1" /> Opcion 1
<... name="rad1" value="2" /> Opcion 2
<... name="rad1" value="3" /> Opcion 3
<... name="rad1" value="4" /> Opcion 4
Entonces
$vcheck[#][1] debe tener el mismo valor en todos los elementos.
Tu funcion se puede optimizar:
Código PHP:
function ControlChechAoD($botonSubmit,$cant,&$vcheck,&$sql,&$cadenasql) {
for($k=0;$k<cant;$k++)
{
echo $vcheck[$k][2]."<input name='".$vcheck[$k][1]."' type='radio' value='".$vcheck[$k][3]."' id='".$vcheck[$k][3]."'";
if(($k==0 && empty($botonSubmit)) || $vcheck[$k][2]==$vcheck[$k][3] && $k != 2)
{
echo ' checked="checked"';
ControlcheckAct_Desact($sql,$cadenasql,$vcheck[$k][4]);
}
else if($vcheck[$k][2]==$vcheck[$k][3] && $k==2)
{
echo ' checked="checked"';
$cadenasql="";
}
echo "/>";
}
}
$vcheck[$k][2] Es el texto de la opcion
$vcheck[$k][3] Es el valor de la opcion
Si lo tienes como creo, entonces en cada comparacion SIEMPRE lo pondra como "checked", por lo que debes comparar en base al valor actual del boton y no a elementos en la misma matriz.