Обрезание данных, при передаче через форму.

Вадим

Guest
Обрезание данных, при передаче через форму.

Есть скрипт который генерит такую форму.
<form action='action.php' method='post'>
<table>
<?
i = 0;
while ( $i != $am_cols )
{
print "\n<td><input type='text' Name='col_name[$i]' value=''></td>";
$i++;
}
?>
</table>
<input type='submit' value='Далее'>
</form>

// am_cols - количество этих самых ячеек
Вот вроде и все. ( в оригинале там только еще подсказки добавлены.

Проблема заключается в том, что в исполняемый скрипт данные передаются с обрубленными первыми 4-мя знаками.
(в остальных скриптах на первый взгляд точно таких же все нормально. Может кто сталкивался? Подскажите в чем может быть проблема.)
 

Stefix

Guest
проверь наличие пробелов в value у input. Некоторые браузеры с ними не дружат.
 

Stefix

Guest
firefox

-~{}~ 24.08.04 08:42:

и его мозильный друг, если интересно, попробуй в firefox
PHP:
<html><body>
<form action="script.php" id="frmMain">
Ввводи! <input type="text" id="txtInput" value="t
e
s
t
s">
</form>
</body></html>
 

neko

tеam neko
с каких пор перенос строки и пробел это одно и то же?
да и кстати -- так никто не делает в здравом уме, ты в курсе?
 

Stefix

Guest
описался, не пробелов, а переносов, что-то глючу я - день независимости все-таки:-(

-~{}~ 24.08.04 09:11:

при чем два раза описался, вот блина :-(
 

neko

tеam neko
да не расстраивайся, в детстве почти все писаются

лучше объясни
на кой черт там могут быть нужны переносы?
 

impossible

Новичок
в свое время я тоже пытался в формах использовать в качестве имени массив, но после того как получил такую же ошибку перестал ;)
если не изменяет память, здесь прабла в том что Апач 1 не понимает етой хрени с массивом, на Апаче 2 у меня все работало!...не уверен, может наоборот было!
 

Stefix

Guest
Автор оригинала: neko
да не расстраивайся, в детстве почти все писаются
:p Ха-ха
лучше объясни на кой черт там могут быть нужны переносы?
Не должны, но если в таблице, например, хранится поле с переходом строки и оно вставляется в input, то могут быть проблемы в firefox (потеряется информация при изменении). В, приниципе, в спецификации w3c написано что так быть не должно (поэтому мозилла не права).
 

neko

tеam neko
по твоему апач обрабатывает формы?

-~{}~ 24.08.04 10:33:

Stefix
мне если честно лень сейчас пробовать качать эти фаерфоксы из-за вас
более чем уверен что все решается заменой символов
ну а если нет -- не надо этого делать тогда
для многострочных есть текстареа
 

Stefix

Guest
апач тут явно не причем, потому что при передаче все поля формы, не зависимо от их типа, преобразуются к виду fieldname=value&fieldname2=value2 (кроме того values еще проходит специальное кодирование (см. [m]urlencode[/m]). Проблема в том, что браузер может нормально не передать get/post запрос апачу (или другому веб-серверу).

-~{}~ 24.08.04 09:35:

Stefix
мне если честно лень сейчас пробовать качать эти фаерфоксы из-за вас
более чем уверен что все решается заменой символов
ну а если нет -- не надо этого делать тогда
для многострочных есть текстареа
Могу выложить скрин, если интересно..
 

Фанат

oncle terrible
Команда форума
Был такой топик на икспойнте. у мужика тоже пропадало, кажется 4 даже первых символа.
Не помню, чем там дело кончилось
 

Cblpok

Новичок
Возможно, в том скрипте написано:
PHP:
substr("Переменная","обрезпть до .... знаков");
 

Вадим

Guest
Спасибо народ, но все мимо.

1. Скрипт глючит только если name='value[$i]'. Т.е. заполнение массива и передача его скрипту. Если имя поля name='value', то все прекрасно передается. Поля заполнябтся в ручную и сохраняются в массиве. В исполняемом скрипте выводится массив.
2. Apache у меня 2-ой версии.
3. НИКАКИХ действий с данными в исполняемом скрипте не выполняется, простой вывод в браузер и все.

Вот такие пироги. Я сталкивался однажды год назад с такой проблемой, и не помню как решил, но это точно не ошибка РНР кода, скорее какой-то скрытый глюк или ограничение Apache или РНР-интерпретатора. В общем бред какой-то. ПОМОЖИТЕ КТО ЗНАЕТ. ПЛИИИИИИЗ.
 

Вадим

Guest
УРА! УРА! И еще раз УРА товарищи!
Господи ну какой баг отвратительный.
Решение простое до нельзя, нужно высечь на гранитной доске.

К делу. Лечится вся фигня так:

PHP:
<form action='action' Method=Post enctype='multipart/form-data'>

<?
$i = 0; 
    while ( $i != count ( $col ) ) 
    { 
        print "<Input Type='text' Name=col_name[] Value=''><br>
        \n"; 
        $i++; 
    }

?>
</form>
enctype='multipart/form-data' - форма должна быть с этим параметром.

Кому нить авось и пригодится.

И еще народ, кому не в падлу разъясните дураку в чем тут фишка-то могла быть. Интересно все-же, а то сутки убил.
 
Сверху