Is this a way of doing it?
Why would you set the $activated value from the $_POST['0'] if it is always going to be zero? In that case just do $activated = 0;
If the value can alternate between 0 and 1 in the user form, then just grab the value in PHP like this (assuming you need the value to be of type integer and that you've named the input field "enum"): $activated = intval($_POST['enum'])
.
Can post($_POST) allow '0' or will it give an error?
Depends on what you mean by that. The $_POST value can certainly be zero, but remember the data is always sent as strings. If what you mean to ask is if you can access $_POST values in PHP by numerical index, then the answer is no, because $_POST is an associative array. Set a name on the input field (e.g. name="enum") instead and access the value that way, as shown above.
See
Is there is a better way of setting a value?
Again, not sure exactly what you mean, you need to be more specific, but if you're sending 14 form element values to the server at once, you might want to take a look at the serialize function, assuming you're using jQuery.