Модераторы: 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   Вверх
Alone
Дата 21.8.2006, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

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



Ну почему же... Вот пример: maneken.kiev.ua 
Всё разумно-резиновое... И меню тоже...

Это сообщение отредактировал(а) Alone - 21.8.2006, 14:47


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

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


Новичок



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

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



Вот про это и говорю, что некрасиво - при больших разрешениях справа остаётся пустая полоса, своего рода инородное тело в меню-баре.
PM MAIL   Вверх
szz
Дата 21.8.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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

   Я обычно в таких случаях именно так и делаю. Если хорошенько все продумать (сделать тянущийся бэкграунд для той "возможно пустой" области, чтоб сочеталась с меню) - то все выглядит очень даже красиво.

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

   Поробуй, очень удобная, полновесная система. Главное приемущество - есть версии для Линукса и Мака.


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


Новичок



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

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



Видимо так и придётся, делать фиксированную ширину и маскировать бэкграундом smile
PM MAIL   Вверх
smartov
Дата 22.8.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Хулиган @  21.8.2006,  13:05 Найти цитируемый пост)
Чтобы эту всю орду построить в нужных местах, приходится использовать непосредственно пиксели

Зачем? Почему нельзы показывать меню там, где находится родитель от которого оно должно выпадать?

Не пойму что за пессимизм по поводу дороговизны стульев для трудящихся всех стран?
15 минут стараний и вот пример скрипта с прекрасным меню, которое тянется на всю ширину экрана с выпадающими Итемами (это конечно только пример, но остальное легко сделать по аналогии)
Код

<HTML>
<body style="margin:0">

<style>
.main td
{
    border:1px solid black;
}

.level1
{
    background: #FCFCFC;
    font-family: Tahoma;
    font-size:12px;
}
</style>
<h1>Welcome to Superpage!</h1>
<table class="main" cellpadding="2" cellspacing="2" width="100%">
<tr id="holder">
<td id="i1" class="level1">Item 1</td><td id="i2" class="level1">Item 2</td><td id="i3" class="level1">Item 3</td><td id="i4" class="level1">Item 4</td>
<tr>
</table>

<div>Lorem ipsum dolor sit amet. Coneru sonorim ur fa firus colorios ipsum dolor sit amet. Loneru fonorim ur fa firus colorios and many other text...</div>

<div id="i1s" style="display:none;position:absolute;background:white;border:1px solid black;">
<span><b>Submenu<b></span><br/>
SubItem1<br/>
SubItem2<br/>
SubItem3<br/>
</div>


<script>

function hideElement(element)
{
    element.style.display = 'none';
}

function attachEvents()
{
    var submenu = document.getElementById('i1s');
    var holder = document.getElementById('holder');
    
    for (var i = 0; i<holder.childNodes.length; i++)
    {
        holder.childNodes[i].onmouseover = function()
        {
            hideElement(submenu);
            submenu.style.left = this.offsetLeft + 'px';
            submenu.style.top = (this.offsetTop + this.offsetParent.offsetTop + this.clientHeight + 2) + 'px';
            submenu.style.display = 'block';
        }
        holder.childNodes[i].onmouseout = function()
        {
            hideElement(submenu);
        }
    }
}

window.onload = function()
{
    attachEvents();
}

</script>

</body>
</HTML> 

Checked in IE 6.0 SP2, Opera 9.01, Firefox 1.5.0.3
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0645 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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