So why do you want to assign these values? Do you want smarty to loop through and display like body here, title here, ect... duplicating for each entry you have?
If so, here are a few tips. You are using mysql_fetch_array(). Using this returns your result in an array with numeric index. So if your database is setup so title is first, then body, you would access these by $result[0] and $result[1], respectively.
However, you can also have your results returned in an associate array, using mysql_fetch_assoc(). Instead of accessing $result[0], you could do $result['title'] (provided title is the name of your column in your table). So basically, it really doesn't matter which one you use, as passing to smarty is the same.
However, with your code, you are only returning one row. Why? Because you did:
$row= mysql_fetch_array($result)
However, mysql_fetch_array returns all of the rows, and I believe with your code you only get the last one. So modify that that last line to be:
while ($row= mysql_fetch_assoc($result)) $data[]= $row;
$smarty->assign('data',$data); //send this
Then in your Smarty file, all you have to do is:
{section name=show loop=$data}
body: {$data[show].body}
title: {$data[show].title}
{/section}
And that should do it. Let me know if you have any problems.