Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка undefined index при submit 
:(
    Опции темы
Хулиган
Дата 20.8.2006, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



Есть файл: permises.php. В нем форма
Код

<form name='frmaddnew' action='premises.php?add=1' method='post'>
  <input type='hidden' name='refer' value='<?print htmlspecialchars($_SERVER['HTTP_REFERER']);?>'>
  ....
  ....
</form>

По клику на кнопке проверяю поля формы на заполненость, и делаю сабмит формы. Сабмит перезагружает эту же страницу, но с параметром ?add=1 (см.action формы).
В начале файла permises.php стоит:
Код

<?
    if (isset($_GET['add']) && $_GET['add']=="1" ){        //add new;
        print $_POST['refer'];
    }
?>

на строку print $_POST['refer']; выдаёт ошибку: 'undefined index:refer'.
Точно также выдает ошибку при обращении к любому другому элементу формы.

Почему?

PM MAIL   Вверх
smartov
Дата 20.8.2006, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Misterious headers какие-то....
А какая версия PHP?
PM MAIL   Вверх
szz
Дата 20.8.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Да, у тебя все верно, тут какие-то глюки с серваком.

Что за сервер? Апач?


--------------------
PM   Вверх
Хулиган
Дата 20.8.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



Установлен Денвер с php5.1.2.

Что самое непонятное - в этом файле есть другая форма, которая также ссылается на этот же файл (она используется для предварительного определения разрешения экрана). Так эта форма работает без проблем:
Код

<?
    $ww=0;
    $fw=0;    // frame table width
    $fl=0;
    if (isset($_POST['scr_width']) && $_POST['scr_width']!=''){
        $ww = $_POST['scr_width'];
        $fw = (int)($ww*0.96);
    }
    else {
        print "<form name=frm_width action=".$_SERVER["REQUEST_URI"]." method='post'><input type=hidden name=scr_width id=scr_width value=''></form>";
        print "<script>document.getElementById('scr_width').value = screen.width;</script>";
        print "<script>document.forms['frm_width'].submit();</script>";
    }
?>


Трудно даже предположить, в какую сторону искать. Уже второй день буксую smile

PM MAIL   Вверх
szz
Дата 20.8.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Что вы все этот денвер ставите?  Что за мода пошла? smile

  Ставь ксамп: http://www.apachefriends.org/en/xampp.html

  Поставь хоть для проверки.


--------------------
PM   Вверх
smartov
Дата 20.8.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Хулиган, страничка в нете где-то есть? Или приведи сюда весь HTML странички. Поглядим что-такое...

Цитата(szz @  20.8.2006,  13:16 Найти цитируемый пост)
Что вы все этот денвер ставите?  Что за мода пошла? 

А почему бы и нет? Сделано нашими ребятами. Почему и не ставить. 
PM MAIL   Вверх
Хулиган
Дата 20.8.2006, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



Что-то не пойму, как аттач цеплять? Или здесь такого нет? А то файл в три сотни строк, весь его в тег code обернуть?
PM MAIL   Вверх
Хулиган
Дата 20.8.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



Решил убрать лишнее из файла, чтобы листинг был поменьше, и обнаружил такое: вторая приведенная мною форма (name=frm_width action=".$_SERVER["REQUEST_URI"].") влияет на работу первой: если убрать её, то первая (name='frmaddnew' action='premises.php?add=1') начинает работать исправно...
Вот такой прикол. Как они могут быть связаны?
PM MAIL   Вверх
szz
Дата 20.8.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



Цитата
Сделано нашими ребятами. 

   А ксамп - фрицами пагаными )))
Цитата
Как они могут быть связаны? 

А ты обе закрываешь корректно?
   И вообще, код показывай подробнее, где-то у тебя определенно ошибка.



--------------------
PM   Вверх
Хулиган
Дата 20.8.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



В общем урезал до самого минимума,  и локализовалась ошибка. Код:

Код

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
        <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
        <link href="/img/css.css" type=text/css rel=stylesheet>
        <title></title>
    </head>
<body>
<?
    if (isset($_GET['add']) && $_GET['add']=="1" ){        //add new;
        print $_POST['refer'];
    }

        /*   этот кусок если раскомментировать, то возникает ошибка на строке 11
        if (isset($_POST['scr_width']) && $_POST['scr_width']!=''){
            $ww = $_POST['scr_width'];
            $fw = (int)($ww*0.96);
        }
        else {
            print "<form name=frm_width action=".$_SERVER["REQUEST_URI"]." method='post'><input type=hidden name=scr_width id=scr_width value=''></form>";
            print "<script>document.getElementById('scr_width').value = screen.width;</script>";
            print "<script>document.forms['frm_width'].submit();</script>";
        }
        */
?>
        <form name='frmaddnew' action='premises.php?add=1' method='post'>
          <input type='hidden' name='refer' value='bla-bla-bla'>
          <input type=button class=butt_show style='width:150px;' value=Отправить onclick="addnew()">
        </form>


<script>
function addnew(){
    document.forms['frmaddnew'].submit();
}
</script>
</body>
</html>


Если раскомментировать часть кода с 14 по 24 строку, то ошибка появляется.
Для устранения ошибки надо либо закомментировать этот кусок, либо обернуть его в else {}.
Непонятно, какое отношение имеет наличие else к форме ссылающегося документа? Иначе говоря, разве наличие else влияет на наличие формы? Форма существовала, раз был клик на кнопке в этой форме...

PM MAIL   Вверх
Drkwv
Дата 20.8.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



имхо, проблема в 
Код

<script>document.forms['frm_width'].submit();</script>


Добавлено @ 18:35 
У тебя при отсылке второй формы $_POST['scr_width'] не установлен, а add=1 сохраняется, вот и всё.

Добавлено @ 18:42 
Короче, :
1. Отсылается форма frm_width
2. Отсылается форма frmaddnew и add=1
3. Т.к. не установлен $_POST['scr_width'] выводится форма frm_width и отсылается скриптом
4. $_GET['add']==1 и $_POST['refer'] не определен ибо выслана frmaddnew где $_POST['scr_width']
5. Выводится ерор.

P/S/ если че не так - прошу прощения, я нетрезв. P/s/s/ не юзайте скрипты smile



Это сообщение отредактировал(а) Drkwv - 20.8.2006, 18:30
PM MAIL   Вверх
Хулиган
Дата 20.8.2006, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



Блин, допёр, в чем дело: файл фактически открывается 4 раза, а я рассчитывал, что будет открываться три раза. Первый раз - при заходе с index.php, второй - после определения ширины экрана, третий - по клику(с установленым refer). Четвертый раз открывается несанкционировано в связи с отсутствием $_POST['scr_width'], и при этом теряется refer, который был заполнен на третьем открытии. Отсюда и ошибка.

Спасибо всем.

PM MAIL   Вверх
Хулиган
Дата 20.8.2006, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



Раз суть проблемы ясна, то что посоветуете, как правильней состыковать определение размеров экрана с отправкой форм и работой кода страницы в целом?
Ширина нужна обязательно, проценты не проходят, нужны абсолютные значения.
Делать как выше сделано - условия if-else будут нагромождаться друг на друга, при каждой новой форме надо будет переписывать всё smile Использовать для динамического определения размеров и создания элементов document.write - опять же загромождается код и становится нечитабельным. Обрабатывать каждое действие юзера в отдельном .php - файлов будет как у собаки блох...

Есть какое-нибудь правильное решение? Чтобы не делать несколько версий сайта под каждое разрешение экрана?
PM MAIL   Вверх
smartov
Дата 21.8.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Цитата(szz @  20.8.2006,  15:18 Найти цитируемый пост)
А ксамп - фрицами пагаными )))

Да хоть индусами smile Главна что написано не по-русски. Значит не нашими smile (но втихую конечно попробую его поставить)

Цитата(Хулиган @  20.8.2006,  22:05 Найти цитируемый пост)
Есть какое-нибудь правильное решение? Чтобы не делать несколько версий сайта под каждое разрешение экрана?

Ну вообще именно для этого и делают "тянущиеся" сайты. То бишь одна и та же HTML-верстка автоматом тянется под разные размеры окна а соответственно и разные разрешения экрана.
Открой тот же Рамблер и поизменяй размеры окна.
PM MAIL   Вверх
Хулиган
Дата 21.8.2006, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



на рамблере всё в процентах указано. Мне это не подходит, т.к.основная навигация осуществляется через горизонтальное меню с итемами, субитемами и суб-субитемами. Чтобы эту всю орду построить в нужных местах, приходится использовать непосредственно пиксели. Можно конечно задать фиксированый меню-бар в 800px для любого экрана, а остальное всё - в процентах, но кажется не очень красиво будет.

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.