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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема совместимости браузеров 
:(
    Опции темы
Ravanger
Дата 6.7.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



такая проблема, есть кусок скрипта

Код

                                    foreach ($_POST as $key => $val)
            {
                if (is_array($_POST[$key]))
                {
                    $_POST[$key] = implode(",", $_POST[$key]);
                    $_POST[$key] = str_replace(",-", "", $_POST[$key]);
                    //$_POST[$key] = str_replace(",,", ",", $_POST[$key]);
                }
            }

проблема такая, в IE обрабатывается нормально и выполняет то, что что от него требуется, а вот опера и фф не распознают $_POST[$key] как массив

подскажите что с этим делать, может сталкивался кто
PM MAIL   Вверх
SelenIT
Дата 6.7.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Ravanger, давайте так... Вы очень быстро прочитаете это и так же быстро исправите предыдущий пост на реальное описание проблемы: что у Вас за форма в HTML, как Вы ее отправляете из каждого браузера и какие данные в результате этого попадают в скрипт в каждом случае. И заодно попросите модераторов перенести этот вопрос в более подходящий раздел форума.

А этого вопроса мы будем считать, что не видели;).


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
vintyara
Дата 6.7.2007, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 24.3.2005
Где: Ode$$a

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



Ravanger, а у тя опера и фф каких верисй  smile ?
PM MAIL ICQ   Вверх
Ravanger
Дата 6.7.2007, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Вы очень быстро прочитаете это и так же быстро исправите предыдущий пост

"это"  я уже читал, обьясняю, есть форма состоящяя из много го кол-ва полей нас интересует несколько <select> с одним именем в котором n <option>, селесты добавляются яваскриптом по мере надобности, дальше, массив преобразовуется в строку и пишется в базу данных одним полем... так вот, это все прекрасно работает в IE, начал тестить на опере в условие, 
Код

if (is_array($_POST[$key]))
 
скрипт не попадает (проверял) поменял условие на 
Код

if (!is_array($_POST[$key]))

 
и получил ошибку 

Код

Warning: implode() [function.implode]: Bad arguments. 

внимание вопрос, почему?

да, кстати, в <select> есть дефолт <option value="-">-</option>, который в базу писатся не должен, отсюда и обработка функцией str_replace()
Цитата

а у тя опера и фф каких верисй

opera 9я, фф не помню

Это сообщение отредактировал(а) Ravanger - 6.7.2007, 21:28
PM MAIL   Вверх
teroni
Дата 6.7.2007, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

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



Что-то я не пойму, почему у Вас этот селект должен передаваться массивом?
Это что-то вроде
Код

<select multiple="multiple" name="sel[]">
?
PM MAIL   Вверх
Ravanger
Дата 6.7.2007, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



teroni, именно

только не мультиплай, а просто несколько селектов имеют одинаковые имена

Это сообщение отредактировал(а) Ravanger - 6.7.2007, 21:27
PM MAIL   Вверх
Alukard
Дата 6.7.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Впринципе, что вы вцепились в браузеры...конечно странно что IE выполняет а остальные нет, но PHP является серверным и поэтому не зависит от браузера....

Могу дать совет использовать массив $_REQUEST вместо $_POST , в нем все переменные есть!
И желательно посмотреть HTML код странички после выполнения PHP скрипта для определения проблемы...


Да, только что заметил...вы что используете массив $_POST как свой локальный напрямую записывая туда собственные переменные из select ? Если да, то это глупо, создайте собственный массив и оперируйте с ним!

Это сообщение отредактировал(а) Alukard - 6.7.2007, 21:46
--------------------
Блог блогу рознь: Алукардные РецептыPHP, Операционные системы, Россия & США...etc.
PM MAIL   Вверх
Ravanger
Дата 6.7.2007, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Да, только что заметил...вы что используете массив $_POST как свой локальный напрямую записывая туда собственные переменные из select ? Если да, то это глупо, создайте собственный массив и оперируйте с ним!


в силу определенных причин, это не глупо

Цитата

Впринципе, что вы вцепились в браузеры...конечно странно что IE выполняет а остальные нет, но PHP является серверным и поэтому не зависит от браузера....


это я знаю, но возвращают результаты обработки они по разному

просто почему то опера и фф говорят, ЧТО ЭТО НЕ МАССИВ!
PM MAIL   Вверх
teroni
Дата 6.7.2007, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

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



Код

<select name="sel[]">
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
</select>
<select name="sel[]">
<option value="d">d</option>
<option value="e">e</option>
<option value="f">f</option>
</select>
Так, что ли? Вы покажете хмтл этого селекта или продолжать угадывать?
З.Ы. И что мешает посмотреть
Код

print_r($_POST['sel']);

Если они в ИЕ, ФФ и Моззиле отличаются - значит какой-то кривой хтмл у отсылающей странички.
PM MAIL   Вверх
SelenIT
Дата 7.7.2007, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Цитата(Ravanger @  6.7.2007,  20:07 Найти цитируемый пост)
селесты добавляются яваскриптом по мере надобности, дальше, массив преобразовуется в строку и пишется в базу данных одним полем...

Что мешает формировать эту строку на клиенте яваскриптом же и одним полем посылать? Но вообще, как правило, сама идея записи массива "одним полем" говорит об ошибке в проектировании базы...

Цитата(Ravanger @  6.7.2007,  21:17 Найти цитируемый пост)
просто несколько селектов имеют одинаковые имена

С квадратными скобками, надеюсь?

Цитата(Alukard @  6.7.2007,  21:43 Найти цитируемый пост)
массив $_REQUEST вместо $_POST , в нем все переменные есть!

100% это ни при чем. А вот var_dump($_POST) сделать не помешает.

Цитата(Ravanger @  6.7.2007,  21:52 Найти цитируемый пост)
возвращают результаты обработки они по разному

Обработки чего и где?

Цитата(Ravanger @  6.7.2007,  21:52 Найти цитируемый пост)
почему то опера и фф говорят, ЧТО ЭТО НЕ МАССИВ!

Вообще-то, они дело говорят. Чем бы ЭТО ни было, массивом PHP оно может стать лишь в принимающем PHP-скрипте - если передать ЭТО данному скрипту в правильном формате. Очевидно, браузеры просто отправляют ЭТО в разном формате - а возможно, даже формируют ЭТО по-разному. И PHP тут, действительно, абсолютно ни при чем...

Цитата(Ravanger @  6.7.2007,  20:07 Найти цитируемый пост)
"это"  я уже читал

В том FAQе есть ссылки на плагины для просмотра HTTP-заголовков. Вы ставили их на свои браузеры и смотрели, что у Вас откуда и куда пересылается?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
-=Ustas=-
Дата 7.7.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

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



Цитата(Ravanger @  6.7.2007,  21:52 Найти цитируемый пост)
просто почему то опера и фф говорят, ЧТО ЭТО НЕ МАССИВ! 

Ravanger,  прекрати говорить о браузерах, когда говоришь о массивах в PHP!!!


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
ilyalyu
Дата 8.7.2007, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Очевидно, IE, обнаружив одинаковые имена у тэгов, автоматически добавляет к ним квадратрые скобочки "[]" (т.е. "name[]" вместо "name"), а FF и Opera этого не делают (можно послать форму с помощью метода GET, сделать var_dump переменной $_SERVER - там где-то должен быть текст запроса - и посмотреть так ли это). Что касается PHP, то, насколько я понимаю, он когда видит имя с квадратными скобками ("name[]=value1&amp;name[]=value2"), то создает масив "name" и добавляет в него элемент "value" (соответствующий код на PHP выглядел бы так "$_GET['name'][] = 'value1'; $_GET['name'][] = 'value2';"). Если же он встречает несколько одинаковых имен без скобок ("name=value1&amp;name=value2"), то он просто пишет новое значение поверх старого (код на PHP "$_GET['name'] = 'value1'; $_GET['name'] = 'value2';"). Мораль, думаю, такая: если в одной форме используются одинаковые имена, необходимо добавлять квадратные скобки самому и не надеятся на браузер.

Это сообщение отредактировал(а) ilyalyu - 8.7.2007, 11:02
PM MAIL   Вверх
Ravanger
Дата 8.7.2007, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Мораль, думаю, такая: если в одной форме используются одинаковые имена, необходимо добавлять квадратные скобки самому и не надеятся на браузер.


да они там стоят, вобщем пока рассмотрение этой темы откладываю, как прийду на работу кину исходник HTML и будем разбиратся, всем спасибо
PM MAIL   Вверх
WIPS
Дата 9.7.2007, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

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



Ravanger, я еще наблюдал одну интересныую багофичу FF, когда он не отправлял из формы данные инпутов, кот. были сгенерированы JS. Отправлял только то, что было в форме при загрузке страницы. 

Но... 
 было это давно, т.е. FF был наверное версии так 1.0.x.x.x, и сейчас дела могут обстоять по другому.

Однако...
 я до сих пор страхуюсь и все инпуты, кот. мне могут пригодиться генерирую заранее на сервере вместе со страницей, а JS их только прячет/показывает.

Кстати...
 как вела себя в этой ситуации Опера, к сожалению не помню...
--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
SelenIT
Дата 9.7.2007, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



WIPS, а эти инпуты, часом, не в таблицу добавлялись?  smile 


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
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.1335 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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