Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Данные не передаются
 
 автор: matrix   (18.11.2004 в 20:34)
 
 

Одним словом. При передачи переменой из формы
<FORM ACTION="mult.php" METHOD="post"> например.
То почему-то переменные находящиеся в форме $second и
$first уже непосредственно mult.php запускается а кроме
умножить на получится0 нет ничего
<?
Header("Content-type: text/html");
echo "$first умножить на $second получится ", $first*$second; echo "<br>\n";
?>
Вчем может быть прикол

   
 
 автор: cheops   (18.11.2004 в 20:40)   письмо автору
 
   для: matrix   (18.11.2004 в 20:34)
 

Дело в отключённой директиве register_globals, подробности по ссылке...

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=805

   
 
 автор: matrix   (18.11.2004 в 21:39)
 
   для: cheops   (18.11.2004 в 20:40)
 

К сожелению не помогло. Включил разницы ни какой. Уже и через глобальные переменные Тишина. Может еще есть какие нибудь варианты у кого?

   
 
 автор: cheops   (18.11.2004 в 21:41)   письмо автору
 
   для: matrix   (18.11.2004 в 21:39)
 

Сервер перегружали после включения?

   
 
 автор: matrix   (18.11.2004 в 21:43)
 
   для: cheops   (18.11.2004 в 21:41)
 

Да перегружал

   
 
 автор: cheops   (18.11.2004 в 21:53)   письмо автору
 
   для: matrix   (18.11.2004 в 21:43)
 

Хм... а не могли бы вы форму полностью привести?

   
 
 автор: matrix   (18.11.2004 в 22:18)
 
   для: cheops   (18.11.2004 в 21:53)
 

Простой пример
<FORM ACTION="mult.php3" METHOD="GET">
<INPUT TYPE="text" NAME="first" SIZE="4" MAXLENGTH="4">
<INPUT TYPE="text" NAME="second" SIZE="4" MAXLENGTH="4">
<INPUT TYPE="Submit" VALUE="Умножить">
</FORM>

Скрипт, содержащийся в файле mult.php может выглядеть следующим образом:
<?php
Header("Content-type: text/html");
echo "$first умножить на $second получится ", $first*$second;
?>
В одном и том же файле echo $i все работает.

   
 
 автор: cheops   (18.11.2004 в 22:47)   письмо автору
 
   для: matrix   (18.11.2004 в 22:18)
 

После "$first умножить на $second получится " стоит запятая, а нужна точка - может дело в этом? Или в исходном скрипте точка стоит?

   
 
 автор: glsv (Дизайнер)   (19.11.2004 в 00:44)   письмо автору
 
   для: matrix   (18.11.2004 в 22:18)
 

Да, странно//. Все должно работать.
Говорите что и через глобальные переменные тоже не идет?


<?
$_GET
['first']
$_GET['second']
?>


Проверьте в php.ini есть вот такая строка?

variables_order = "EGPCS"

   
 
 автор: matrix   (19.11.2004 в 05:21)
 
   для: glsv (Дизайнер)   (19.11.2004 в 00:44)
 

Да вот это я попал. Не передается. Не просто у меня работало а потом перестало.И блин не помню после какого момента.Че мог натворить?

   
 
 автор: coloboc66   (19.11.2004 в 11:24)   письмо автору
 
   для: matrix   (19.11.2004 в 05:21)
 

А так не пробовал? $HTTP_GET_VARS[ ' value ' ]

   
 
 автор: Jet   (19.11.2004 в 15:49)   письмо автору
 
   для: coloboc66   (19.11.2004 в 11:24)
 

Интересно, а у меня практически тот же глюк!!!
фишка такая:

- в settings.inc (это у меня include с предопределёнными значениями на сайте) прописан массив, в котором ключ соответствует строке (типа buy=>"Покупка "... и т.д.)

- есть 2 странички, одна из которых - форма обратной связи, а вторая (третья... пятая...) её вызывает с методом GET (вроде href="feedback.php?type=buy"). Естественно, разные услуги - разные ключи...

- Сама форма - POST и по сабмиту пишет строку в лог-файл фидбэка и шлёт мыло мне. Строка в логе должна содержать этот самый элемент массива из settings.inc, взятый по ключу из адресной строки (то-бишь $_GET['type']).
-------------------------
Так вот, глюк в том, что сам алгоритм генерирования, записи и отсылки на мыло инклудится и в нём этот type не видно. (пустая строка), хотя в начале инклуда я написал эхо этого значения и оно ЕСТЬ!, а вот в логах - пустая строка.
---------------------------
Есть подозрения, что при нажатии на сабмит переменная из GET просто обнуляется... помогите разобраться пожалста...
или хотя бы подскажите, где можно почитать о методах GET, POST и о SUBMIT подробнее.

   
 
 автор: cheops   (19.11.2004 в 23:46)   письмо автору
 
   для: Jet   (19.11.2004 в 15:49)
 

>Есть подозрения, что при нажатии на сабмит переменная из GET просто
> обнуляется... помогите разобраться пожалста...
Да она обнуляется, её следует засунуть в форму в скрытое поле
<input type=hidden type=<?php echo $_GET['type']; ?>>

а в обработчике, если везде код ждёт эту переменную именно по методу GET написать:
<?php
  $_GET
['type'] = $_POST['type'];
?>

   
 
 автор: Jet   (23.11.2004 в 15:37)   письмо автору
 
   для: cheops   (19.11.2004 в 23:46)
 

>а в обработчике, если везде код ждёт эту переменную именно по методу GET написать...

Снова обнуляется, но я догадываюсь в чём проблема. Обработчик-то у меня:
<form action=<? echo $_SERVER['PHP_SELF']?>>

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

   
 
 автор: cheops   (23.11.2004 в 15:52)   письмо автору
 
   для: Jet   (23.11.2004 в 15:37)
 

Вообще, в последнее время существует явная тенденция разделения формы и обработчика. Например, в .NET - на каждом шагу об этом твердят как о наивысшем достижении Microsoft :))). Суть метода проста. Все данные из формы отправляются тому файлу, кторый указан в action. Пусть имеется форма с единственным текстовым полем и кнопкой index.php
<form action=handler.php method=post>
<input type=text name=name>
<input class=button type=submit value=Отправить>
</form>

Тогда создав обработчик handler.php мы можем получить данные обращаясь к соответствующему элементу суперглобального массива
<?php
  
echo $_POST['name'];
  
// Полученные данные можно обрабатывать,
  // заносить в базу данных и т.п.
?>

Если необходимо после обработки вернуться к исходной форме или перейти на другую страницу в конце обработчика можно поместить редирект на другую страницу
<?php
  
// Полученные данные можно обрабатывать,
  // заносить в базу данных и т.п.
  
echo $_POST['name'];
  
// Автоматически осуществляем переход на исходную страницу
  
echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
          </HEAD>"
;
?>


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

   
 
 автор: Jet   (23.11.2004 в 16:16)   письмо автору
 
   для: cheops   (23.11.2004 в 15:52)
 

КЛАСС! За это спасибо, cheops ... понял
-----------------
Кстати, в предыдущем посте случайно вместо
<input type=hidden type=<?php echo $_GET['type']; ?>

не должно ли быть что-то вроде

<input type=hidden name="type" value=<?php echo $_GET['type']; ?>>

------------------
PS: Вроде и разбросал, а всё-равно где-то теряются значения 8(

   
 
 автор: cheops   (23.11.2004 в 16:23)   письмо автору
 
   для: Jet   (23.11.2004 в 16:16)
 

А да, совершенно верно, имя я позабыл :)

PS Хм... если код не слишком секретный вы можете прикрепить файлы к сообщению, я бы мог попытаться локализовать ошибку. Если надумаете заведите лучше новую тему - так удобнее обсуждать...

   
 
 автор: Jet   (23.11.2004 в 19:42)   письмо автору
 
   для: cheops   (23.11.2004 в 16:23)
 

Новая тема - это хорошая мысль
Завожу
---------------------
>PS Хм... если код не слишком секретный вы можете прикрепить файлы к сообщению, я бы мог попытаться локализовать ошибку

Благодарю, надеюсь, смогу как-нибудь отплатить тем же =)
В принципе, не секретно. Однако там столько всего уже перепуталось, что я лучше отберу тот код, который конкретно касается темы обсуждения...

ПЕРЕХОДИМ НА НОВУЮ ТЕМУ
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=875&page=1

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования