Вообще, у тебя много проблем в скрипте.
в-нулевых:
http://phpfaq.ru/slashesво-первых, для понимания логики программы была придумана такая удобнейшая штука, как отступы. Не стоит ими пренебрегать.
Во-вторых, ты ОЧЕНЬ затрудняешь себе задачу, расставляя в коде собак. Если ты это делаешь из правильных побуждений - чтобы юзер не видел системных сообщений об ошибках, то это надо делать правильно - в ОДНОМ месте написать error_reporting(0);
а не распихивать собак по всему коду. Если у тебя что-то не будет работать, ты не узнаешь - почему. Сообщения об ошибках ты ведь задавал собаками!
В-третьих, вместо трех строчек
$num_results = mysql_num_rows($result);
for ($i=0; $i<$num_results; $i++) {
$row = mysql_fetch_array($result);
используется одна:
while($row = mysql_fetch_array($result)) {
В-четвертых,
if (!$header || !$stuff || !$author) {
echo "Что-то забыл?";
exit;
}
это, конечно, садизм.
Надо бы форму выводить снова, в которой заполнены незабытые поля. проще ведь ввести одно забытое, чем заново набивать по-новой.
в-пятых, вместо
@ $db = mysql_connect("localhost", "news");
if (!$db) {
echo "Не могу соединиться с базой!";
exit;
}
для пользователя правильнее писать
mysql_connect("localhost", "news") or die("ошибка базы данных");
- зачем юзеру зать, в чем конкретно ошибка - в коннекте ил в чем-то еще?
А для себя надо писать
mysql_connect("localhost", "news") or die(mysql_error()."
".$query);
чтобы иметь РЕАЛЬНОЕ сообщение об ошибке.
И в любом случае - делать это гораздо короче.