Забавненько... $msg=0. В ноле маловероятно, что найдется даже двоеточие. Я так полагаю это очепятка при вставке кода в топик? Попробуйте непосредственно, для теста, вывести после цикла содержимое $msg, а в самом цикле повыводите значения массива $smile_array по ключам code и source. Т.е. так:
PHP код:
$sql2="SELECT * FROM smiles";
$smile_query=mysql_query($sql2);
$msg=$_POST['msg']; //если поле формы по отправке сообщения имеет именно такое name
while($smile_array=mysql_fetch_array($smile_query))
{
$msg=str_replace($smile_array['code'],"<img src='".$smile_array['source']."'>",$msg);
echo $smile_array['code'].'->'.$smile_array['source'].'<br>';
}
echo $msg;
Что получается в исходном коде странички? Может какие-то несоотвествия между предполагаемыми значениями того ЧТО меняем и теми, что лежат в БД?