Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Cannot add header information - headers already sent by
 
 автор: Front   (27.08.2007 в 11:04)   письмо автору
 
 

Всем добрго времени суток!
Пожалуйста помогите подправить скрипт!

Есть скрипт записывающий в БД данные из формы:


require_once("header.php");
require_once("function_adm/func.php");
require_once("config.php");

function disp_modeltype ()
{
    echo "<FIELDSET style='width:100%; padding:5px; font-family:Arial; font-size:11px;'><LEGEND>Типы комплектующих:</LEGEND>";
        echo "<table cellpadding='0' style='margin-top:10px;' cellspacing='0' border='0'>";
            echo "<tr>";
                echo "<td>";
                    echo "<form method='post' action='index.php?nb=add_type'>";
                        echo "<table class='add' cellpadding='0' cellspacing='0' border='0'>";
                            echo "<tr>";
                                echo "<td colspan='2'><u>Добавление нового типа комплектующего:</u></td>";
                            echo "</tr>";
                            echo "<tr>";
                                echo "<td>Тип комплектующего:</td>";
                                echo "<td><input type='text' size='60' class='form' name='hardtype'></td>";
                            echo "</tr>";
                            echo "<tr>";
                                echo "<td valign='top'>Примечание:</td>";
                                echo "<td><textarea name='remark' class='form' cols='60' rows='3'></textarea></td>";
                            echo "</tr>";
                            echo "<tr>";
                                echo "<td colspan='2'>";
echo "<input type='submit'>";
                            
                                echo "</td>";
                            echo "</tr>";
                        echo "</table>";
                    echo "</form>";
                echo "</td>";
            echo "</tr>";
        echo "</table>";
    echo "</fieldset>";
}

function add_modeltype()
{
    $hardtype = $_POST['hardtype'];
    $remark = $_POST['remark'];
    
    $sql="INSERT INTO comp_modeltype (id,hardtype,remark) VALUES ('0','$hardtype','$remark')";
    if (!mysql_query ($sql)) echo 'Ошибка записи в базу данных';
}



switch($nb)
{        
            
        case "form":
        disp_modeltype();
        break;
        
        case "add_type":
        add_modeltype();
        header( "Location: index.php?nb=form" );
        break;
    
    default:
        display();
        break;
}

?>


header.php:


echo "<head>";
    echo "<title>Типы комплектующих</title>";
        echo "<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />";
    echo "<link rel='stylesheet' type='text/css' href='css/style.css'>";
echo "</head>";


Хочу чтобы после операции INSERT пользователь автоматом переходил к функции disp_modeltype (), соответственно перенаправляю его header( "Location: index.php?nb=form" );, но в результате получаю ошибку:

Cannot add header information - headers already sent by (output started at c:\apache\htdocs\comps\header.php:2)

Подсобите, пож-та!

   
 
 автор: bronenos   (27.08.2007 в 11:07)   письмо автору
 
   для: Front   (27.08.2007 в 11:04)
 

поставьте первой строчкой
ob_start();
и последней
ob_flush();

думаю, будет меньше затрат на исправление

   
 
 автор: Front   (27.08.2007 в 11:24)   письмо автору
 
   для: bronenos   (27.08.2007 в 11:07)
 

Поставил только ob_start(); - все заработало. Когда в конец ставлю ob_flush(); выдает ошибку - Call to undefined function. Если без ob_flush(); все нормально. Я так понял, что ob_flush() - очищает буфер вывода. Если не ставить ничего страшного не случится?

   
 
 автор: ddhvvn   (27.08.2007 в 11:08)   письмо автору
 
   для: Front   (27.08.2007 в 11:04)
 

http://www.softtime.ru/forum/srchform.php?id_forum=1&name=headers+already&numberthemes=30&srchwhere=1&id_forum=1&logic=0&send=%CD%E0%E9%F2%E8

   
 
 автор: Faraon   (27.08.2007 в 11:09)   письмо автору
 
   для: Front   (27.08.2007 в 11:04)
 

До header не должно быть никакого вывода в браузер
Перед <?php не должно быть пробелов или пустых строк

   
 
 автор: Front   (27.08.2007 в 11:24)   письмо автору
 
   для: Faraon   (27.08.2007 в 11:09)
 

Поставил только ob_start(); - все заработало. Когда в конец ставлю ob_flush(); выдает ошибку - Call to undefined function. Если без ob_flush(); все нормально. Я так понял, что ob_flush() - очищает буфер вывода. Если не ставить ничего страшного не случится?

   
 
 автор: bronenos   (27.08.2007 в 11:37)   письмо автору
 
   для: Front   (27.08.2007 в 11:24)
 

ob_end_flush();
, эт я ошибся

   
 
 автор: Front   (27.08.2007 в 11:57)   письмо автору
 
   для: bronenos   (27.08.2007 в 11:37)
 

Большое спасибо....! Тема закрыта!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования