With the query:
$job_cat_update="UPDATE " . $Table . " SET job_cat='" . $_POST['job_cat'] . "'" . "WHERE job_cat='" . $_POST['job_cat'] . "'";
You're checking the new value typed in against itself, so the old version in the datbase isn't been referenced. You could put a hidden field with the old value of the field in the query and do
]$job_cat_update="UPDATE " . $Table . " SET job_cat='" . $_POST['job_cat'] . "'" . "WHERE job_cat='" . $_POST['job_cat_old'] . "'";
But if there's a numerical primary key for each field it would be much simpler to use that.
Plus by the look of your script you're nameing ALL the input fields the same name - if doing that you need to add [] to the name and then deal with the return results as an array so
echo "<tr><td><input name='job_cat[]' type='text' value='" .$row['job_cat'] . "'></tr></td>";
is what you need to do, then deal with the submission in a while or foreach loop like:
foreach( $_REQUEST['job_cat'] as $job)
{
$query="Update ... blah blah WHERE id=..."
}