Чтобы постоянно не выводилась ошибка SQL, нужно проверить был ли передан параметр del.
Про JS:
$.post("delete.php", { del: "$row["id"]" } );
location.reload();
/*Стоит переписать это так:
$.post("delete.php", { del: "<?=$row["id"];?>" },function(){window.location.reload(false);});
Если оставить скрипт в таком виде, в котором он сейчас, то скрипт будет писать, что указана неизвестная переменная id, а даже если скрипт попытается выполнить post ему просто не хватит времени на это, так как сразу после следует перезагрузка страницы.
*/