X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Работа с формами (<form></form>)
FeDeRaL_mw
FeDeRaL_mw
Topic Starter сообщение 13.10.2013, 12:58; Ответить: FeDeRaL_mw
Сообщение #1


Здравствуйте!!! Прошу помощи. Вроде не такая и сложная тема, до этого всё получалось, но вот в этот раз случилась проблема. Никак не могу разобраться.


Имеется форма на странице:
<form class="form-search" style="margin-top:15px;" method="post" action="assets/included/stud-add.php" accept-charset="UTF-8">
        <div class="input-append">
         <input type="text" name="familiya" placeholder="Фамилия">
                                    <input type="text" name="imya" placeholder="Имя" style="margin-left:50px;">
                                    <input type="text" name="otchestvo" placeholder="Отчество" style="margin-left:50px;">
                                    <select name="forma-obuch" class="span2" style="margin-left:50px;">
                                        <option>очная</option>
                                        <option>заочная</option>
                                        <option>вечерняя</option>
                                    </select>
                                    <select name="pol" class="span2" style="margin-left:50px;">
                                        <option>муж.</option>
                                        <option>жен.</option>
                                        <option>не определено</option>
                                    </select>
        </div>
                                <button class="btn btn-primary" style="margin: 0 0 0 140px;">Добавить</button>
       </form>


Файл-обработчик формы:
<?php
//Подключаемся к БД
require_once("db_connect.php");
// Формируем строку для запроса к нашей базе данных
$sql = "INSERT INTO `". PHP_DBPREFIX."students` (
   `id_student` ,
   `familiya` ,
   `imya` ,
   `otchestvo` ,
   `forma_obucheniya` ,
   `pol`
  )
  VALUES (
   NULL ,  '".$_POST['familiya']."',  '".$_POST['imya']."',  '".$_POST['otchestvo']."',  '".$_POST['forma-obuch']."',  '".$_POST['pol']."'
  )";
// Отправляем наш запрос MySQL
$result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);
//Перенаправляем на страницу добавления
header("Location: http://laba.loc/students-add.php");
?>


Т.е. сперва пользователь заполняет форму, затем кликает кнопку "Добавить". Данные добавляются в табличку MySQL, затем хочу перенаправить пользователя на ту же страницу, где происходит добавление (http://laba.loc/students-add.php). Для этого написал строку header("Location: http://laba.loc/students-add.php");. Но вот при нажатии на кнопку "Добавить", добавляются данные, но редиректа не происходит, выскакивает сообщение вида:

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\laba.loc\www\assets\included\stud-add.php:1) in Z:\home\laba.loc\www\assets\included\stud-add.php on line 22

Подскажите люди добрые в чём дело? Чего делаю не так? Заранее благодарен.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
FeDeRaL_mw
FeDeRaL_mw
Topic Starter сообщение 13.10.2013, 20:08; Ответить: FeDeRaL_mw
Сообщение #2


Ошибка понята. Решение найдено - редирект средствами JavaScript.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ssabbass
ssabbass
сообщение 13.10.2013, 21:10; Ответить: ssabbass
Сообщение #3


Java Вам в помощь. Вот пример простенького скрипта редиректа для Вашего случая:
<script language="javascript" type="text/javascript">
location.replace("http://laba.loc/students-add.php");
</script>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
c0ns0l3
c0ns0l3
сообщение 16.10.2013, 21:12; Ответить: c0ns0l3
Сообщение #4


[member=FeDeRaL], проблема заключается в том, что РНР запрещает посылать Header'ы после того, как они уже отосланы. Собственно о чем и говорит вам данная ошибка.

Хедеры автоматически отправляются сразу после того, как был произведен какой-либо вывод на экран пользователю (echp, print, ... и даже сообщение об ошибке парсера).
Следовательно, судя по вашей "ошибке" - первый вывод на экран проивзодится в stud-add.php на строке 22.

Исходя из кода "обработчика" который вы предоставили, вывод может быть только в or die(mysql_error() ."<br/>". $sql) - что означает или у вас там ошибка, или же выводится где-то раньше еще.

Обойти данный вариант можно, как выше сказали через JS или же "запретить" вывод данных. При помощи ob_start().
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
k1on
k1on
сообщение 17.10.2013, 0:58; Ответить: k1on
Сообщение #5


советую еще обращать внимание на кодировку. по-хорошему должна быть UTF-8 without BOM
если UTF-8 with BOM, то тогда надо ее заменить.
так же перед PHP надо удалять все, если это чистый код файла обработчика указан в топике.
закрывать тег <?php тоже не советую, воизбежании лишних символов после него.

кстати, к теме не относится, но пора давно уже смотреть в сторону mysqli
в этом примере вставить данные из любой другой таблицы можно за 5 секунд. а данные эти могут быть критичные... поэтому сразу начинайте делать правильно.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
fedornabilkin
fedornabilkin
сообщение 18.10.2013, 11:46; Ответить: fedornabilkin
Сообщение #6


кстати, к теме не относится, но пора давно уже смотреть в сторону mysqli
Есть какие-то аргументы?
Года три-четыре назад кричали, что надо смотреть в сторону utf-8, но тем не менее до сих пор еще есть сайты с cp1251 и ничего страшного не происходит.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Нужна работа
0 filatd 741 12.1.2024, 17:08
автор: filatd
Открытая тема (нет новых ответов) Работа: Разная рутина
Работа, разные рутинные задачи: постинг / переговоры / поиск
1 ivanshargin 964 31.10.2023, 17:55
автор: ServersExpert
Открытая тема (нет новых ответов) Нужна удаленная работа
Нужна удаленная работа
0 filatd 1014 12.9.2023, 11:40
автор: filatd
Открытая тема (нет новых ответов) Нужны тексты для сайта, работа на постоянку
6 danilchuk88 1632 19.3.2023, 0:53
автор: malamut
Открытая тема (нет новых ответов) Работа по размещению ссылок
1 masterstraff 2099 17.12.2022, 2:43
автор: aspi


 



RSS Текстовая версия Сейчас: 24.4.2024, 8:28
Дизайн