Строка header ("location:view_topic.php?id=$id"); выводит ошибку Warning: Cannot modify header information - headers already sent by Код (Text): $sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_email, a_answer, a_datetime)VALUES('$id', '$Max_id', '$a_name', '$a_email', '$a_answer', '$datetime')"; $result2=mysql_query($sql2); if($result2){ header ("location:view_topic.php?id=$id"); // If added new answer, add value +1 in reply column $tbl_name2="fquestions"; $sql3="UPDATE $tbl_name2 SET reply='$Max_id' WHERE id='$id'"; $result3=mysql_query($sql3); } --- Добавлено --- P.S до этого она нормально работала, сегодня зашел и не работает
Вы уже где то до этого кода отправили заголовок. Например PHP: echo "<body>"; или тупо пробел подключения почекайте если они есть PHP: include( "include.inc" );
Код (Text): <? $host="localhost"; // Host name $username="root"; // Mysql username $password=""; // Mysql password $db_name="myforum"; // Database name $tbl_name="fanswer"; // Table name // Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // Get value of id that sent from hidden field $id=$_POST['id']; // Find highest answer number. $sql="SELECT MAX(a_id) AS Maxa_id FROM $tbl_name WHERE question_id='$id'"; $result=mysql_query($sql); $rows=mysql_fetch_array($result); // add + 1 to highest answer number and keep it in variable name "$Max_id". if there no answer yet set it = 1 if ($rows) { $Max_id = $rows['Maxa_id']+1; } else { $Max_id = 1; } // get values that sent from form $a_name=$_POST['a_name']; $a_email=$_POST['a_email']; $a_answer=$_POST['a_answer']; $datetime=date("d/m/y H:i:s"); // create date and time // Insert answer $sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_email, a_answer, a_datetime)VALUES('$id', '$Max_id', '$a_name', '$a_email', '$a_answer', '$datetime')"; $result2=mysql_query($sql2); if($result2){ header ("location:view_topic.php?id=$id"); // If added new answer, add value +1 in reply column $tbl_name2="fquestions"; $sql3="UPDATE $tbl_name2 SET reply='$Max_id' WHERE id='$id'"; $result3=mysql_query($sql3); } else { echo "ERROR"; } // Close connection mysql_close(); ?> вот весь коД,вроде ничего такого нет --- Добавлено --- P.S .Исправил, проблема была в кодировке, нужно было ставить UTF-8, а у меня была UTF-8 with BOM
@Suyunoff, ну начнём с того, что назвав это кодом вы сильно преувеличили. Но если не принимать это во внимание, то каким редактором для написания "кода" вы пользуетесь? --- Добавлено --- дело не в устаревшем драйвере mysql , а в отсутствии логики
@Suyunoff, старайся по возможности не использовать else Например вот тут: PHP: if ($rows) { $Max_id = $rows['Maxa_id']+1; } else { $Max_id = 1; } лучше написать так: PHP: $Max_id = 1; if ($rows) { $Max_id = $rows['Maxa_id']+1; } Но это чисто для примера, потому как манипулировать id на стороне РНР опасное занятие. --- Добавлено --- а по твоему я здесь для мебели? если я не докопаюсь, то кто?
@miketomlin, else и elseif - это "слова" паразиты, совсем без них конечно нельзя, но если есть выбор использовать их или нет, то однозначно нет. Без них код выглядит более читабельно, ну и гораздо короче. Подозреваю, что их в РНР добавили по заказу индусов
Ну если elseif я встретил первый раз именно в php, то просто else есть во всех языках (ну, по крайней мере, в той или иной степени известных мне).
Ты забыл написать «для меня». В общем можно поспорить. Только не нужно приплетать сюда эффективность и т.п. Оптимизирующие компиляторы уже давно справляются с такими вещами. Хотя пых конечно не про это.
@miketomlin, я показал два логически одинаковых фрагмента кода. Если для тебя первый более читабельный, то я с удовольствием добавлю "для меня" к своим словам.
@Valick, мне больше нравится третий вариант PHP: $Max_id = $rows ? $rows['Maxa_id']+1 : 1; Или так (это от смысла зависит): PHP: $Max_id = $rows ? $rows['Maxa_id'] : 0; $Max_id += 1; --- Добавлено --- Но ТСу это в принципе не нужно. Там должен использоваться автоинкрементальный счетчик, насколько понимаю.