That is because you're already assigning it at the top of your script and using those variables later on. So the next time you pass the while it doesn't use the freshly fetched data, but simply the data from your previously set code.
Simply get rid of this part
$post = mysql_fetch_array($sql_query); $job = $post['job']; $category = $post['category']; $title = $post['title']; $inside = $post['imageinside']; $outside = $post['imageoutside']; $body = $post['body']; $description = $post['description'];
Change your do-while to a 'normal' while loop, and change your variables inside the html bit to the post ones.
<?php echo "$category" ?> with
<?php echo "$post['category']" ?> etc.
With that said, you'll need this to get this part working. But it would be better to use a while loop, not a do, while. The difference between them being that a while loop will only execute when the data passed to the loop is actually holding something. Do-while will always execute ., and after that check for valid stuff inside your while. So when the database has no results the html block is still printed once.
You would also make a good choice to look into mysqli or pdo for database connections. mysql is no longer the preferred way (deprecated since 5.5 and removed in php 7)
Lastly, you could do with
mysql_fetch_assoc if you're going to use the associative keys only.