POST будет содержать только отмеченные флажки, поэтому ваш цикл foreach, вероятно, просто повторяется один раз.
Используйте переключатель с таким именем, как top_cat
, значение будет содержать $cat['cat_id']
. Теперь, когда вы отправляете сообщение, прочитайте выбранный переключатель с чем-то вроде $_POST['top_cat']
или $data['top_cat']
Используйте переключатель как:
<input name="top_cat" type="radio" class="featured" value="<?php echo $cat['cat_id'] ?>" />
и удалите цикл и используйте php как:
$selected = (int)$data['top_cat'];
$this->db->query("UPDATE " . DB_PREFIX . "cat SET featured='1' WHERE cat_id = $selected ");
// set all others to non-featured
$this->db->query("UPDATE " . DB_PREFIX . "cat SET featured='0' WHERE cat_id != $selected ");
Я не уверен, как настроена ваша база данных, но я думаю, что это должно сработать