проверка !$result не корректна, т.к. даже если возвращено 0 записей, то $result все равно будет не пустой, следовательно, вернется true и будет продолжаться выполнение скрипта и тогда вот тут:
mysql_fetch_assoc($result)
будет ошибка.
корректнее будет так:
if (mysql_num_rows($result) > 0)
а в случае insert, update, delete
mysql_affected_rows($result) {оператор_сравнения} 0)
оператор будет разным в зависимости от запроса(учитывая и условие выборки), логики приложения(собвстенно что считать "неудачей").
подробнее в мане.
p.s. я не слишком нудный?