1. вы в цикле каждому комменту добавляете один и тот же id
<?php foreach($comments as $item):?>
<div id="messages"><?php echo $item['text'];?></div>
<?php endforeach;?>
2. затем пытаетесь получить список комментов, после добавления, при этом добавляя этот список в id сообщения(в данном случае в каждый) :)
$.ajax({
type: 'POST',
url:"show.php",
success:function(html){
$('#messages').html(html);
}
});
да и есть ли смысл после добавления получать весь список? если да то, сделайте контейнер для сообщений с id и добавляйте в него, если нет, то добавление коммента может вернуть сам коммент и через append можно добавить в контейнер
p.s код конечно грустный, но для обучения пойдет :)
p.p.s id - на странице должен быть УНИКАЛЕН, class - нет