Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Как передать данные с HTML формы в PHP скрипт? (http://forum.oszone.net/showthread.php?t=144402)

.ExeRun 07-07-2009 04:15 1160718

Как передать данные с HTML формы в PHP скрипт?
 
Совсем недавно вот начал изучать PHP, сегодня написал калькулятор. Вот код
PHP код:

<html>
<head>
<title>Калькулятор</title>
</head>
</html>
<b>Калькулятор</b>
<form action="calc.php">
<p>Введите первое число:
  <input type="text" name="first" size="10" maxlength="10"><br />
<p>Введите второе число:
  <input type="text" name="second" size="10" maxlength="10">
</p>
</p>
</form>
<p>Действие:
<select size="1" name="action">
    <option value="sum">Сложить</option>
    <option value="min">Вычесть</option>
    <option value="mult">Умножить</option>
    <option value="dev">Разделить</option>
    </p>
  </select>
<form action="calc.php">
  <input type="submit" name="submit" value="Посчитать">
</form>
<?php
switch ($action)
{
    case 
"sum":$result $first+$second;
    break;
    case 
"min":$result $first-$second;
    break;
    case 
"mult":$result $first*$second;
    break;
    case 
"dev":
    if (
$second or $second == 0)
    {
        exit(
"На 0 делить нельзя!");
    }
    
$result $first/$second;
    break;
}
echo 
"Результат:"$result;
?>

Как видите, вначале идет HTML форма, затем уже сам скрипт.. вроде все правильно, но не работает, ввожу данные, жму считать и не считает нифига... Как я понял, данные из формы не передаются в переменные.Мне нужно, например, чтобы эта форма
PHP код:

<input type="text" name="first" size="10" maxlength="10"

была связана с переменной $first, ну и т.д, короче я в замешательстве... Скрипт писал с книгой в зубах, ну и глядя на примеры.

Igor_I 07-07-2009 08:09 1160778

1 Форма должна быть одна
2 Проверяй входящие переменные через echo
3 Что это за книжка? И какие примеры?

Coutty 07-07-2009 08:36 1160789

Во-первых, как уже сказано, делаем одну форму:
HTML код:

<form action="calc.php">
<p>Введите первое число:
  <input type="text" name="first" size="10" maxlength="10"><br />
<p>Введите второе число:
  <input type="text" name="second" size="10" maxlength="10">
</p>
</p>
<p>Действие:
<select size="1" name="action">
    <option value="sum">Сложить</option>
    <option value="min">Вычесть</option>
    <option value="mult">Умножить</option>
    <option value="dev">Разделить</option>
    </p>
  </select>
  <input type="submit" name="submit" value="Посчитать">
</form>

Во-вторых, скорее всего работать ничего не будет, т.к. сейчас устанавливают register_globals = 0 в php.ini в целях безопасности, поэтому для обращения к переменной action нужно писать $_GET['action'] (и т.д.) или $_POST['action'], если передаёте методом post.

И в третьих... калькулятор на php? Автор книги подобрал неудачный пример. Но что поделать...

.ExeRun 07-07-2009 12:00 1160944

Цитата:

Цитата Igor_I
1 Форма должна быть одна
2 Проверяй входящие переменные через echo
3 Что это за книжка? И какие примеры? »

1 уже сделал в отдельных файлах форму и скрипт )
2 эт как? )
3 пхп 5 для чайников... пример не оттуда взял, а с инета.
Цитата:

Цитата Coutty
Во-вторых, скорее всего работать ничего не будет, т.к. сейчас устанавливают register_globals = 0 в php.ini в целях безопасности, поэтому для обращения к переменной action нужно писать $_GET['action'] (и т.д.) или $_POST['action'], если передаёте методом post. »

ок, посоображаю посижу

.ExeRun 07-07-2009 13:17 1160990

Coutty, ну вот, например я сделал 2 файла - один index.php с HTML Кодом (сама форма), вот код
PHP код:

<html>
<
head>
<
title>Калькулятор</title>
</
head>
</
html>
<
b>Калькулятор</b>
<
form action="calc.php" method="post">
<
p>Введите первое число:
  <
input type="text" name="first" size="10" maxlength="10"><br />
<
p>Введите второе число:
  <
input type="text" name="second" size="10" maxlength="10">
</
p>
</
p>
</
form>
<
p>Действие:
<
select size="1" name="action">
    <
option value="sum">Сложить</option>
    <
option value="min">Вычесть</option>
    <
option value="mult">Умножить</option>
    <
option value="dev">Разделить</option>
    </
p>
  </
select>
<
form action="calc.php" method="post">
  <
input type="submit" name="submit" value="Посчитать">
</
form

и код файла calc.php
PHP код:

<?php
switch ($_POST['action'])
{
    case 
"sum":$result $_POST['first']+$_POST['second'];
    break;
    case 
"min":$result $_POST['first']-$_POST['second'];
    break;
    case 
"mult":$result $_POST['first']*$_POST['second'];
    break;
    case 
"dev":
    if (
$_POST['second'] < or $_POST['second'] == 0)
    {
        exit(
"На 0 делить нельзя!");
    }
    
$result $_POST['first']/$_POST['second'];
    break;
}
echo 
"Результат:"$result;
?>

данные пробовал передавать также GET методом, заменяя все переменные $_POST на $_GET и все равно результат не отображается.. может потому, что на денвере делаю?
З.Ы. кстати, вот хорошая статья на эту тему http://php.su/phphttp/forms/?intro

.ExeRun 07-07-2009 13:44 1161011

Все, сделал )))) Работает ыыы )))) Вот код - пришлось поправить HTML форму...

<html>
<head>
<title>Калькулятор</title>
</head>
</html>
<b>Калькулятор</b>
<form action="calc.php" method="post">
<p>Введите первое число:
<input type="text" name="first" size="10" maxlength="10"><br />
<p>Введите второе число:
<input type="text" name="second" size="10" maxlength="10">
</p>
</p>
</form>
<p>Действие:
<select size="1" name="action">
<option value="sum">Сложить</option>
<option value="min">Вычесть</option>
<option value="mult">Умножить</option>
<option value="dev">Разделить</option>
</p>
</select>
<form action="calc.php" method="post">
<input type="submit" name="submit" value="Посчитать">
</form>

я просто удалил теги, выделенные жирным ))) Ура! Мой первый скрипт ))))

Igor_I 07-07-2009 19:58 1161407

.ExeRun, я тебе сразу сказал, форма должна быть одна :)
Вернее, нет, у каждой формы должен быть свой submit.
Что значит - проверяй переменные.
PHP код:

<?php
echo ' Первое число = '.$_POST['first'];
echo 
' Второе число = '.$_POST['second'];
echo 
' Действие = '.$_POST['action'];

switch (
$_POST['action'])
{
    case 
"sum":$result $_POST['first']+$_POST['second'];
    break;
    case 
"min":$result $_POST['first']-$_POST['second'];
    break;
    case 
"mult":$result $_POST['first']*$_POST['second'];
    break;
    case 
"dev":
    if (
$_POST['second'] < or $_POST['second'] == 0)
    {
        exit(
"На 0 делить нельзя!");
    }
    
$result $_POST['first']/$_POST['second'];
    break;
}
echo 
"Результат:"$result;
?>

И видно что приходит, в противном случае, для тебя - это чёрный ящик, который непонятно как работает.

set242 19-04-2010 02:31 1395927

Простая схемка и все ясно без лишнего кода надеюсь кому то пригодится!
Что то по круче подставят if и тд.

HTML
PHP код:

<head>
<
title>Просчет площад</title>
</
head>
<
body>
<
p>Просчет площади </p>

<
form action="in.php" method="POST" >
 <
p> <label>Стена 1 <input name="A" size="10" maxlength="50" /> </label> </p
<
p> <label>Стена 2 <input name="b" size="10" maxlength="50" /> </label> </p
<
p> <label>Стена 3 <input name="c" size="10" maxlength="50" /> </label> </p
<
p> <label>Стена 4 <input name="d" size="10" maxlength="50" /> </label> </p
<
p> <label>Посчитать <input type="submit" value="Отправить" /> </label> </p>
 </
form>
</
body>
</
html



PHP
PHP код:

<?php
 
/* Таблица просчета площади */ 
$A $_POST ["A"];
$b $_POST ["b"];
$c $_POST ["c"];
$d $_POST ["d"]; 

/* Формула */
 
$e= ($A $c)/2;
 
$k=($b $d)/2
$result$e*$k;
 echo 
"Результат подсчета квадратуры: $result "
?>

Не забудьте поместить in.php PHP код!


Работает на Денвере и хосте.


Время: 19:49.

Время: 19:49.
© OSzone.net 2001-