Страница 1 из 2
Проблемы с передачей данных методом Post
Добавлено: 22 янв 2007, 15:24
Voron3
Здравствуйте все,
Помогите решить возникшую проблемку.
Проблема в том, что при передаче данных методом POST данные, передаються но не все. К примеру у меня создано на страничке 100 шт. следующим образом:
В цикле:
print "<select name='prior".$n."'>";
print "<OPTION value='".$y."' $str><font>$y</font>";
затем передаю данные и принимаю их следующим образом:
for ($y=0; $y++<$n

{
echo ($_POST['prior'.$y.'']);
print "
";
}
для проверки. Но что странно, он передает данные только начиная при y=6 и до конца. А начальные 5 переменных prior1-5 равны значениям которые установлены по умолчанию.
Такая же фигня происходит, когда я передаю данные через checkbox. Но там он вообще не передает ни какие данные
Что удивительно этого не наблюдалось, когда я поставил только Apache Apache/2.2.3 (Unix) PHP/4.4.4. Мне кажется, что такой глюк возник после установки mod_perl-2.0.3.
Подскажите что делать, как исправить глюк?
Re: Проблемы с передачей данных методом Post
Добавлено: 23 янв 2007, 16:11
Xaljava
для отладки используй print_r($_POST) обрамленный тегами <pre></pre>
Код: Выделить всё
print '<pre>';
print_r($_POST);
print '</pre>';
И попробуй закрывать теги <select><option></option></select>, тогда проблем не должно быть
Re: Проблемы с передачей данных методом Post
Добавлено: 23 янв 2007, 20:04
Duncon
Покажи форму
Re: Проблемы с передачей данных методом Post
Добавлено: 25 янв 2007, 13:56
Voron3
Вот форма
Код: Выделить всё
Цикл открывается
print "<form action='scr_prior.php' method='POST'>";
... Вывод данных из бд
print "<select name='prior".$n."'>";
for ($y=0; $y++<$xx ;)
{
if ($y==$line[prior]) -/*$line[prior] - запись из бд*/
$str='selected';
else
$str='';
print "<OPTION value='".$y."'$str><font>$y</font></OPTION>";
}
print "</select></td>";
Цикл закрывается
$HTML="
<input name='u' type='hidden' value='$u'>
<input name='p' type='hidden' value='$p'>
<input name='m' type='hidden' value='$m'>
<input name='id' type='hidden' value='$id'>
<input type=submit value='Сохранить'>
</td>
</TR>
</TABLE>
</form>
</CENTER>
</body>
</html>
";
print $HTML;
Re: Проблемы с передачей данных методом Post
Добавлено: 25 янв 2007, 14:02
Voron3
Xaljava писал(а):для отладки используй print_r($_POST) обрамленный тегами <pre></pre>
Код: Выделить всё
print '<pre>';
print_r($_POST);
print '</pre>';
И попробуй закрывать теги <select><option></option></select>, тогда проблем не должно быть
Спасибо, класный совет, по поводу отладки
Re: Проблемы с передачей данных методом Post
Добавлено: 25 янв 2007, 17:24
Duncon
Ну первое что в глаза бросается цикл for, имеет следующую конструкцию
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
Далее от куда у тебя береться величина $xx
Re: Проблемы с передачей данных методом Post
Добавлено: 26 янв 2007, 06:01
Voron3
Переменная $xx - это количество записей в бд
Re: Проблемы с передачей данных методом Post
Добавлено: 26 янв 2007, 09:58
Duncon
for ($y=0; $y<=$xx; $y++)
Re: Проблемы с передачей данных методом Post
Добавлено: 26 янв 2007, 15:12
Voron3
Нет тут не в цикле проблема, отличие в том, что ты указал следующее
for ($y=0; $y<=$xx; $y++) - с начала идет проверка, а потом идет наращивание на единицу, т.е. первый шаг y=0, второй шаг y=1, третий y=3 и т.д.
В моем случае чуть чуть наоборот for ($y=0; $y++<$xx

- с начала идет наращивание y, а потом сравнение, т.е. первый шаг y=1, второй y=2, третий y=3 и т.д.
Но в любом случае спасибо, я об этом не знал до этого.
Тут решил проверить как же работает передача данных в отдельной страничке, т.е. не обрабатываю мои данные из бд, что-то типа теста. Код следующий
Файл 1.php
Код: Выделить всё
<?
print "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
<html>
<Title>My Admin for telephon&email</title>
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=windows-1251'>
<LINK HREF='styles.css' REL='stylesheet' TYPE='text/css'>
<body bgcolor='#C4C1BD' TOPMARGIN='0' LEFTMARGIN='0' BOTTOMMARGIN='0'>
<CENTER>
<TABLE ALIGN='TOP' WIDTH='100%' HEIGHT='100%' valign='center' CELLPADDING='0' CELLSPACING='0' BORDER='0'>
<TR height='50'>
<TD colspan='2' valign='center' align='center'>
<p><U>Настройка приоритета среди департаментов и филиалов</U></p>
</TD>
</TR>
<TR height='50'>
<TD colspan='2' valign='center' align='center'>
</TD>
</TR>
<TR>
<TD width='10'> </TD>
<TD valign='top' align='center'>
<form action='2.php' method='POST'>
";
for ($j=1; $j<=35; $j++)
{
print "
<select name='prior".$j."'>";
for ($y=1; $y<=35; $y++)
{
print "<OPTION value='".$y."' $str><font>$y</font></OPTION>";
}
print "</select>";
}
print "<input type=submit value='Сохранить'>
</td>
</TR>
</TABLE>
</form>
</CENTER>
</body>
</html>
";
?>
Файл 2.php
Код: Выделить всё
<?
print "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
<html>
<Title>My Admin for telephon&email</title>
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=windows-1251'>
<LINK HREF='styles.css' REL='stylesheet' TYPE='text/css'>
<body bgcolor='#C4C1BD' TOPMARGIN='0' LEFTMARGIN='0' BOTTOMMARGIN='0'>
<CENTER>
<TABLE ALIGN='TOP' WIDTH='100%' HEIGHT='100%' valign='center' CELLPADDING='0' CELLSPACING='0' BORDER='0'>
<TR height='50'>
<TD valign='center' align='center'>
<p><U>Редактировать $str</U></p>
</TD>
</TR>
<TR>
<TD valign='center' align='center'>
";
print '<pre>';
print_r($_POST);
print '</pre>';
print "
";
$HTML=" </td>
</TR>
</TABLE>
</CENTER>
</body>
</html>
";
print $HTML;
Что характерно, все данные передаются замечательно, значить я допустил ошибку в самом коде, но какую сам понять не могу.
Re: Проблемы с передачей данных методом Post
Добавлено: 26 янв 2007, 15:14
Voron3
Нет тут не в цикле проблема, отличие в том, что ты указал следующее
for ($y=0; $y<=$xx; $y++) - с начала идет проверка, а потом идет наращивание на единицу, т.е. первый шаг y=0, второй шаг y=1, третий y=3 и т.д.
В моем случае чуть чуть наоборот for ($y=0; $y++<$xx

- с начала идет наращивание y, а потом сравнение, т.е. первый шаг y=1, второй y=2, третий y=3 и т.д.
Но в любом случае спасибо, я об этом не знал до этого.
Тут решил проверить как же работает передача данных в отдельной страничке, т.е. не обрабатываю мои данные из бд, что-то типа теста. Код следующий
Файл 1.php
Код: Выделить всё
<?
print "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
<html>
<Title>My Admin for telephon&email</title>
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=windows-1251'>
<LINK HREF='styles.css' REL='stylesheet' TYPE='text/css'>
<body bgcolor='#C4C1BD' TOPMARGIN='0' LEFTMARGIN='0' BOTTOMMARGIN='0'>
<CENTER>
<TABLE ALIGN='TOP' WIDTH='100%' HEIGHT='100%' valign='center' CELLPADDING='0' CELLSPACING='0' BORDER='0'>
<TR height='50'>
<TD colspan='2' valign='center' align='center'>
<p><U>Настройка приоритета среди департаментов и филиалов</U></p>
</TD>
</TR>
<TR height='50'>
<TD colspan='2' valign='center' align='center'>
</TD>
</TR>
<TR>
<TD width='10'> </TD>
<TD valign='top' align='center'>
<form action='2.php' method='POST'>
";
for ($j=1; $j<=35; $j++)
{
print "
<select name='prior".$j."'>";
for ($y=1; $y<=35; $y++)
{
print "<OPTION value='".$y."' $str><font>$y</font></OPTION>";
}
print "</select>";
}
print "<input type=submit value='Сохранить'>
</td>
</TR>
</TABLE>
</form>
</CENTER>
</body>
</html>
";
?>
Файл 2.php
Код: Выделить всё
<?
print "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
<html>
<Title>My Admin for telephon&email</title>
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=windows-1251'>
<LINK HREF='styles.css' REL='stylesheet' TYPE='text/css'>
<body bgcolor='#C4C1BD' TOPMARGIN='0' LEFTMARGIN='0' BOTTOMMARGIN='0'>
<CENTER>
<TABLE ALIGN='TOP' WIDTH='100%' HEIGHT='100%' valign='center' CELLPADDING='0' CELLSPACING='0' BORDER='0'>
<TR height='50'>
<TD valign='center' align='center'>
<p><U>Редактировать $str</U></p>
</TD>
</TR>
<TR>
<TD valign='center' align='center'>
";
print '<pre>';
print_r($_POST);
print '</pre>';
print "
";
$HTML=" </td>
</TR>
</TABLE>
</CENTER>
</body>
</html>
";
print $HTML;
Что характерно, все данные передаются замечательно, значить я допустил ошибку в самом коде, но какую сам понять не могу. В понедельник 29.01.2007 выложу весь изначальный код, двух файлов, а то сейчас домой уже пора все таки пятница.