Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Умножение в формах
Форумы портала PHP.SU » » Если скрипт не работает » Умножение в формах

Страниц (1): [1]
 

1. coolzero - 28 Августа, 2011 - 12:40:40 - перейти к сообщению
Привет всем Улыбка Только начинаю изучать php и уже столкнулся с проблемой. Пример который описан в учебнике не работает. Учебник взял с http://php.su/books/?php Называется Букварь по PHP и MySQL. Там сказано что он устарел, но для новичков подойдет. Теперь ближе к делу. Не работает такая форма:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <FORM ACTION="calc.php" METHOD="GET">
  2. <INPUT TYPE="text" NAME="first" SIZE="4" MAXLENGTH="4">
  3. <INPUT TYPE="text" NAME="second" SIZE="4" MAXLENGTH="4">
  4. <INPUT TYPE="Submit" VALUE="Умножить">


calc.php:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. Header("Content-type: text/html");
  3. echo "$first умножить на $second получится ", $first*$second;
  4. ?>


После введения чисел и нажатия кнопки появляется следующий текст:

"умножить на получится 0".

В чем проблема? Ведь если это работало в php 3, то должно и в php5? Или я ошибаюсь?
2. White - 28 Августа, 2011 - 13:04:32 - перейти к сообщению
coolzero при register_globals=on это работает, в php5(при чем не зря!!!) эта настройка по умолчанию выключена (да и оставили ее только чтобы обеспечить обратную совместимость).
так будет работать:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.   header("Content-type: text/html");
  3.   echo $_GET['first']." умножить на ".$_GET['second']." получится ", $_GET['first']*$_GET['second'];
  4. ?>
3. DeepVarvar - 28 Августа, 2011 - 13:05:01 - перейти к сообщению
register_global
4. coolzero - 28 Августа, 2011 - 13:31:07 - перейти к сообщению
White register_globals включил. Денвер перезапустил. Код поменял на Ваш. Результат - не работает.
5. White - 28 Августа, 2011 - 13:40:55 - перейти к сообщению
coolzero пишет:
register_globals включил

зря. выключите, мой код этого не требует. он делает работоспособным код в вашем примере.
(Добавление)
кстати, а что у вас в строке запроса после нажатия "Умножить"?
6. coolzero - 28 Августа, 2011 - 14:03:15 - перейти к сообщению
White register_globals=off - рестарт - проверка - не работает.

CODE (htmlphp):
скопировать код в буфер обмена
  1. http://test/calc.php?%24first=8&%24second=8
7. LIME - 28 Августа, 2011 - 15:35:36 - перейти к сообщению
coolzero у вас ошибка в форме
CODE (html):
скопировать код в буфер обмена
  1. <FORM ACTION="calc.php" METHOD="GET">
  2. <INPUT TYPE="text" NAME="$first" SIZE="4" MAXLENGTH="4">
  3. <INPUT TYPE="text" NAME="$second" SIZE="4" MAXLENGTH="4">
  4. <INPUT TYPE="Submit" VALUE="Умножить">

уберите знак доллара в именах параметров
он нужен только в php коде
(Добавление)
и включите показ ошибок в php.ini
вам бы выдало предупреждение что индекс не определен в массиве $_GET
8. coolzero - 28 Августа, 2011 - 15:47:29 - перейти к сообщению
LIME спасибо. После убирания $ все заработало. Не знаю зачем я их туда поставил Хм
(Добавление)
Также спасибо White за то что поправил код)

 

Powered by ExBB FM 1.0 RC1