When posting PHP code, please use the board's
bbcode tags as they make your code much easier to read and analyze. You should go back and edit your post now to add these tags.
@: There is no variable "$i" defined in the script at this point, so $i++ would at least cause coding errors. Plus, you wouldn't want it after the while() loop but rather inside it.
@: What do you mean the "lastes" in one place? Are you talking about taking 4 items returned from MySQL and showing them at different places on the page? If so, I would say loop through the result set and store the data into a PHP variable (array). That way, you could go through that array at your own pace:
// let's pretend $data is the array of rows returned by MySQL
echo '<ul><h3><li>' . $data[0]['achievement'] . '</h3></ul>';
// more HTML... blah blah...
for($i=1; isset($data[$i]); $i++) {
// starting at i=1 since we've already displayed the 1st row
echo '<ul><h3><li>' . $data[0]['achievement'] . '</h3></ul>';
}