Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > не передаются параметры


Автор: Tror 3.5.2006, 13:32
делаю простую форму form.html
Код

<form action=test.php>
Параметр: <input type=text name=param1>
<input type=submit value="Ok">
</form>


и test.php
Код

<?php
echo $QUERY_STRING
?>


но в итоге получаю лишь следующее

Код

Notice: Undefined variable: QUERY_STRING in e:\Internet\Home\localhost\www\test.php on line 2


в чем проблема?   

Автор: PARROT 3.5.2006, 13:44
А что надо передать?

Добавлено @ 13:45 
Нужно нажать на кнопку и? 
Пишем обработчик кнопки формы.

Добавлено @ 13:49 
test.php
Код

if(isset($_POST['send'])){
echo $_POST['param1'];
}

У кнопки формы должно быть имя и метод передачи данных POST или GET.  

Автор: Tror 3.5.2006, 13:49
надо передать param1
я начал изучение пхп с книжки Котерова
этот пример я взял оттуда(в упрощенном виде)
насколько я понял в переменной QUERY_STRING должен находиться этот самый параметр,
вернее его значение и автоматически должна создаться переменная param1. smile  

Автор: RomanK 3.5.2006, 13:50
PARROT, там у него метод передачи не POST, а GET.
Tror, посмотри: $_SERVER['QUERY_STRING'];

Добавлено @ 13:57 
Или попробуй: echo $_GET['param1']; 

Автор: PARROT 3.5.2006, 13:57
Можно и GET.

Добавлено @ 13:58 
просто при:
Код

echo $_SERVER['QUERY_STRING'];

Результат является таким:
Код

param1=6


Добавлено @ 14:00 
что не очень красиво выглядит

Добавлено @ 14:05 
А ошибку дает, потому что: Неопределенная переменная, необъявленная, ставим вперед скрипта:
Код

Error_Reporting(E_ALL & ~E_NOTICE); 

 

Автор: RomanK 3.5.2006, 14:06
PARROT, ну просто аффтар спрашивал про Query_String. Вот я и сказал. 

Автор: PARROT 3.5.2006, 14:07
И не забываем про: register_globals
И про то, что на Нашем форуме есть поиск, таких тем с решениями было очень много. 
 

Автор: Serkys 3.5.2006, 14:37
Попробуй в тег <form> прописать параметр, определяющий используемый метод.
Код

<form action="test.php" method="get">
 

Автор: RomanK 3.5.2006, 16:33
Serkys, в форме метод GET стоит по умолчанию. 

Автор: Serkys 3.5.2006, 18:14
Цитата(RomanK @  3.5.2006,  17:33 Найти цитируемый пост)
Serkys, в форме метод GET стоит по умолчанию. 

Всякое в жизни бывает. Как говорится, полагаться на дефолты последнее дело. 

Автор: Tror 4.5.2006, 13:37
PARROT, 
RomanK, 
Serkys, 
всем большой сенкс, вы настоящие друзья.
не знаю что бы я без вашей помощи делал.
все, как и сказала PARROT, заключалось в этой злосчастной дорективе
register_globals. перечитал еще раз всю книжку до примера, думал что пропустил
где-то, но никаких упоминаний про register_globals там не нашел. может из-за того
что книжка по ПХП4, а у мну ПХП5, в котором эта директива по умолчанию откючена
 smile  

Автор: Serkys 4.5.2006, 18:01
Цитата(Tror @  4.5.2006,  14:37 Найти цитируемый пост)
никаких упоминаний про register_globals там не нашел. может из-за того
что книжка по ПХП4, а у мну ПХП5, в котором эта директива по умолчанию откючена

В более-менее свежих (если не во всех) ПХП4 она тоже по дефолту в офф. Но некоторые учебники для начинающих (к моему удивлению) не рассматривают этот важный момент. Я же учился по PHP5 Котерова, там всё это объяснено.
Кстати, в РНР6 этой директивы вообще не будет.
Tror, я надеюсь ты включать её не стал? 

Автор: Mal Hack 4.5.2006, 18:39
Не забываем про наш FAQ.
http://vingrad.ru/PHP-ART-002846 

Автор: Tror 4.5.2006, 21:57
Цитата(Serkys @  4.5.2006,  18:01 Найти цитируемый пост)
я надеюсь ты включать её не стал?

нет, не стал. уже настращали smile 
  

Автор: Tror 8.5.2006, 22:53
Доброго времени суток всем ;)

Сижу вот, всё мучаю передаваемые в скрипт параметры ;)
Делаю как посоветовали, т.е.
параметр param1 получаю следующим образом:
Код

$param1 = $_GET['param1'];

Еще один вопрос по ходу дела:
есть ли разница между ' и "?

В официальной доке прочитал про функцию 
Код

bool import_request_variables (string types [, string prefix])

и вроде бы все хорошо, но меня беспокоит сообщение уровня E_NOTICE,
которое каждый раз вываливается при вызове данной функции без
указания префикса.
Насколько я понял, сообщения уровня E_NOTICE можно в большинстве
случаев просто игнорировать, так ли это на самом деле?
В книге Котерова написано следующее:
"Старайтесь чаще пользоваться оператором @ и реже — установкой
слабого контроля ошибок".
Но ведь не зря же придумали этот пресловутый E_NOTICE, чтоб его
можно было потом спокойно проигнорировать сиволом @.

Заранее благодарен %) 

Автор: Tror 12.5.2006, 10:55
так что все-таки с предыдущим постом? 

Автор: Guedda 12.5.2006, 11:11
Цитата(Tror @  8.5.2006,  23:53 Найти цитируемый пост)
есть ли разница между ' и "?

Да. Есть. Если ты поставишь ", то в параметре можно будет указывать переменную, а если ', то такая запись:
Код

$_POST['$divide'];

будет искать не значение переменной $divide, а значение переданного параметра.

Цитата(Tror @  8.5.2006,  23:53 Найти цитируемый пост)
сообщения уровня E_NOTICE можно в большинстве
случаев просто игнорировать, так ли это на самом деле?

Да. Можно... Это делается следующей строкой, которая вставляется в начало скрипта:
Код

error_reporting(E_ALL ^ E_NOTICE);
 

Автор: Tror 12.5.2006, 11:39
Цитата(Guedda @  12.5.2006,  11:11 Найти цитируемый пост)
Да. Можно... 

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

Автор: R.M. 12.5.2006, 12:15
Tror, каждый считает по своему. Некоторые считают что ошибки недолжен видеть никто некоторые ноборот, но я бы посоветовал на стадии создания\отладки включать все ошибки + смотреть лог апача. А потом уже дело твоё. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)