Estás cerrando la conexión en cada vuelta del foreach y eso no tiene sentido porque la seguis necesitando.
Con un solo registro no falla porque hace lo que tiene que hacer y cierra.
Y en el otro caso me imagino que cambiará los que pueda en lo que tarda en cerrarse la conexión.
Pone el mysql_close() por fuera del foreach y seguramente te va a andar bien.
Código PHP:
<?php
foreach($chk as $posicion => $valor){
$producto=buscaProducto($valor);
$estado=$producto["proEstado"];
if($estado=="Activo")
{
$estado="Inactivo";
//modificar estadoa inactivo
}
else
{
$estado="Activo";
///modificar estado a activo
}
//echo " id: ".$valor." estado: ".$estado;
$sql="UPDATE productos SET proEstado='$estado' WHERE proId='$valor'";
mysql_query($sql,$conID)or die(mysql_error());
}
mysql_close();
?>