Показать полную графическую версию : Как передать данные с HTML формы в 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 < 0 or $second == 0)
{
exit("На 0 делить нельзя!");
}
$result = $first/$second;
break;
}
echo "Результат:", $result;
?>
Как видите, вначале идет HTML форма, затем уже сам скрипт.. вроде все правильно, но не работает, ввожу данные, жму считать и не считает нифига... Как я понял, данные из формы не передаются в переменные.Мне нужно, например, чтобы эта форма
<input type="text" name="first" size="10" maxlength="10">
была связана с переменной $first, ну и т.д, короче я в замешательстве... Скрипт писал с книгой в зубах, ну и глядя на примеры.
1 Форма должна быть одна
2 Проверяй входящие переменные через echo
3 Что это за книжка? И какие примеры?
Во-первых, как уже сказано, делаем одну форму:
<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? Автор книги подобрал неудачный пример. Но что поделать...
1 Форма должна быть одна
2 Проверяй входящие переменные через echo
3 Что это за книжка? И какие примеры? »
1 уже сделал в отдельных файлах форму и скрипт )
2 эт как? )
3 пхп 5 для чайников... пример не оттуда взял, а с инета.
Во-вторых, скорее всего работать ничего не будет, т.к. сейчас устанавливают register_globals = 0 в php.ini в целях безопасности, поэтому для обращения к переменной action нужно писать $_GET['action'] (и т.д.) или $_POST['action'], если передаёте методом post. »
ок, посоображаю посижу
Coutty, ну вот, например я сделал 2 файла - один index.php с 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>
и код файла calc.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'] < 0 or $_POST['second'] == 0)
{
exit("На 0 делить нельзя!");
}
$result = $_POST['first']/$_POST['second'];
break;
}
echo "Результат:", $result;
?>
данные пробовал передавать также GET методом, заменяя все переменные $_POST на $_GET и все равно результат не отображается.. может потому, что на денвере делаю?
З.Ы. кстати, вот хорошая статья на эту тему http://php.su/phphttp/forms/?intro
Все, сделал )))) Работает ыыы )))) Вот код - пришлось поправить 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>
я просто удалил теги, выделенные жирным ))) Ура! Мой первый скрипт ))))
.ExeRun, я тебе сразу сказал, форма должна быть одна :)
Вернее, нет, у каждой формы должен быть свой submit.
Что значит - проверяй переменные.
<?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'] < 0 or $_POST['second'] == 0)
{
exit("На 0 делить нельзя!");
}
$result = $_POST['first']/$_POST['second'];
break;
}
echo "Результат:", $result;
?>
И видно что приходит, в противном случае, для тебя - это чёрный ящик, который непонятно как работает.
Простая схемка и все ясно без лишнего кода надеюсь кому то пригодится!
Что то по круче подставят if и тд.
HTML
<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
/* Таблица просчета площади */
$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 код!
Работает на Денвере и хосте.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.