Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2012, 16:44   #1
flyfire
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 11
По умолчанию PHP. Не срабатывает header , гляньте скрипт, нужно подправить

Добрый день. После выполнения скрипта удаления Не срабатывает переадресация на страничку, где собственно размещена таблица и кнопки "удалить"
Хотя само удаление происходит, если вернуться вручную и глянуть таблицу.
используется header( 'Location: '.$_SERVER['PHP_SELF'] );

ошибка: Cannot modify header information - headers already sent by

я знаю, что она означает... причина не с кодировкой (лишних "невидимых" символов нет), а в том, что отправляются заголовки раньше header, но как иначе реализовать...

скрипт:

PHP код:
<html>
<head>
<link type="text/css" rel="stylesheet" href="style.css" />
</head>
<?php
$HOST 
"localhost";
$USER "root";
$PASS "";
$DB "magazin";


if(!
mysql_connect("$HOST""$USER""$PASS")) exit(mysql_error());
else {echo 
"";}

mysql_select_db("magazin") or die(mysql_error());
    
$mysql mysql_connect("$HOST","$USER","$PASS");

    if(!
$mysql) {
        die(
'Could not connect: ' mysql_error());
    }

switch ( 
$_GET["action"] )
{
   case 
"showlist":    // Список всех записей в таблице БД
     
show_list(); break;
   case 
"delete":      // Удалить запись в таблице БД
     
delete_magazin(); break;
   default:
     
show_list();
}

function 
show_list()
{
   
$query 'SELECT id, name, family, gorod, adres, telefon, tovar FROM klient WHERE 1';
   
$res mysql_query$query );
   echo 
'<h2>Список клиентов</h2>';
   echo 
'<table border="1" cellpadding="2" cellspacing="0">';
   echo 
'<tr><th>ID</th><th>Имя</th><th>Фамилия</th><th>Регион</th><th>Адрес</th><th>Телефон</th><th>Название товара</th><th>Удл.</th></tr>';
   while ( 
$magazin mysql_fetch_array$res ) )
   {
     echo 
'<tr>';
     echo 
'<td>'.$magazin['id'].'</td>';
     echo 
'<td>'.$magazin['name'].'</td>';
     echo 
'<td>'.$magazin['family'].'</td>';
     echo 
'<td>'.$magazin['gorod'].'</td>';
     echo 
'<td>'.$magazin['adres'].'</td>';
     echo 
'<td>'.$magazin['telefon'].'</td>';
     echo 
'<td>'.$magazin['tovar'].'</td>';
     echo 
'<td><a href="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$magazin['id'].'">Удл.</a></td>';
     echo 
'</tr>';
   }
   echo 
'</table>';

}
function 
delete_magazin()
{
   
$query "DELETE FROM klient WHERE id=".$_GET['id'];
   
mysql_query $query );
   
header'Location: '.$_SERVER['PHP_SELF'] );
   die();
}

Последний раз редактировалось ACE Valery; 24.05.2012 в 17:57.
flyfire вне форума Ответить с цитированием
Старый 24.05.2012, 17:26   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Цитата:
Сообщение от flyfire Посмотреть сообщение
я знаю, что она означает... причина не с кодировкой (лишних "невидимых" символов нет), а в том, что отправляются заголовки раньше header, но как иначе реализовать...
Да у Вас и видимых полно
Код:
<html>
<head>
<link type="text/css" rel="stylesheet" href="style.css" />
</head>
Как решать:
1) Перенести вывод этого куска в функцию show_list
2) Реорганизовать код полностью, отделить представление от логики
3) Использовать буферизацию вывода http://www.php.su/functions/?ob_start
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 24.05.2012, 19:47   #3
flyfire
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Greblin Посмотреть сообщение
Да у Вас и видимых полно
Код:
<html>
<head>
<link type="text/css" rel="stylesheet" href="style.css" />
</head>
Как решать:
1) Перенести вывод этого куска в функцию show_list
2) Реорганизовать код полностью, отделить представление от логики
3) Использовать буферизацию вывода http://www.php.su/functions/?ob_start
Cпасибо за помощь.

1) Ссылку на стиль убирал - не работает и без нее (а хотя она там помеха 100%, ибо у меня есть др похожие скрипты, где эти стили мешали корректной работе)
2) вообще "нивсосал" , я новичек и нуб в сфере программирования, да и честно говоря, мутит уже от этого всего, переделывать заново не охота. Тем более, что оно у меня работало. Просто накосячил, обновил этот файл старым нерабочим вариантом (
3) почитаю, попробую. спасибо.
flyfire вне форума Ответить с цитированием
Старый 24.05.2012, 20:18   #4
9i.
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 103
По умолчанию

убрать нужно не только ссылку на стили, но и все остальное выделенное в цитате
9i. вне форума Ответить с цитированием
Старый 24.05.2012, 21:22   #5
flyfire
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 11
По умолчанию

Цитата:
Сообщение от 9i. Посмотреть сообщение
убрать нужно не только ссылку на стили, но и все остальное выделенное в цитате
это само собой, я ж не совсем дуб.

назвал ссылкой, ибо эти строки в моем файле нужны только чтобы представить стиль

все-таки, кому не лень, гляньте скрипт, что там не так... мож куда переместить эту строку с header? пробовал - не получается, но я не шарю =/
flyfire вне форума Ответить с цитированием
Старый 24.05.2012, 21:25   #6
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Цитата:
Сообщение от flyfire Посмотреть сообщение
это само собой, я ж не совсем дуб.

назвал ссылкой, ибо эти строки в моем файле нужны только чтобы представить стиль

все-таки, кому не лень, гляньте скрипт, что там не так... мож куда переместить эту строку с header? пробовал - не получается, но я не шарю =/
Да не убрать, а перенести надо весь HTML из начала в show_list
Код:
function show_list()
{
   echo '<html><head><link type="text/css" rel="stylesheet" href="style.css" /></head>';
   $query = 'SELECT id, name, family, gorod, adres, telefon, tovar FROM klient WHERE 1';
   $res = mysql_query( $query );
   echo '<h2>Список клиентов</h2>';
   echo '<table border="1" cellpadding="2" cellspacing="0">';
   echo '<tr><th>ID</th><th>Имя</th><th>Фамилия</th><th>Регион</th><th>Адрес</th><th>Телефон</th><th>Название товара</th><th>Удл.</th></tr>';
   while ( $magazin = mysql_fetch_array( $res ) )
   {
     echo '<tr>';
     echo '<td>'.$magazin['id'].'</td>';
     echo '<td>'.$magazin['name'].'</td>';
     echo '<td>'.$magazin['family'].'</td>';
     echo '<td>'.$magazin['gorod'].'</td>';
     echo '<td>'.$magazin['adres'].'</td>';
     echo '<td>'.$magazin['telefon'].'</td>';
     echo '<td>'.$magazin['tovar'].'</td>';
     echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$magazin['id'].'">Удл.</a></td>';
     echo '</tr>';
   }
   echo '</table>';

}
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 24.05.2012, 22:16   #7
flyfire
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 11
По умолчанию

перенес - эффекта 0.

Я же говорю, что хтмл там роли (главной) не играет ввиду того, что если его убрать полностью - ошибка все равно есть.
Он помешает в случае правильного написания скрипа, коли будет торчать вверху. Но это я уже понял сам, уберу.
flyfire вне форума Ответить с цитированием
Старый 24.05.2012, 23:18   #8
flyfire
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 11
По умолчанию

Всем спасибо, разобрался. Это я с кучей файлов накосячил
flyfire вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт срабатывает при нажатии в любом месте экрана A67809R JavaScript, Ajax 1 13.02.2012 13:12
Php! JSON_ECODE, Не срабатывает на хостинге след. скрипт: AlienNation PHP 2 09.10.2011 18:31
Скрипт срабатывает один раз, а далее ошибка BloodA JavaScript, Ajax 8 20.07.2011 16:02