Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Не передаются данные через форму

#1 Kuchuluk

Kuchuluk
  • Пользователь
  • 315 сообщений
  • Репутация: 5
0

Отправлено 25 Июнь 2012 - 20:09

Здравствуйте. Сделал такую форму, мини калькулятор.
<form action="calculator.php" method="post">
<p><input name="chislo1" type="text" id="chislo1" value="Введите первое число" size="20" maxlength="10"></p>
<p><input name="chislo2" type="text" id="chislo2" value="Введите второе число" size="20" maxlength="10"></p>
<p><label>Выберите математическое действие</label></p>
<p><input name="deistvie" type="radio" value="sum">Сложение</p>
<p><input name="deistvie" type="radio" value="vich">Вычитание</p>
<p><input name="schet" type="submit" value="Посчитать"></p>
</form>
<?php
if (isset($_POST['chislo1'])) {
	$chislo1 = $_POST['chislo1'];
	}
if (isset($_POST['chislo2'])) {
   $chislo2 = $_POST['chislo2'];
    }
if (!empty($_POST['shet'])) {
	 if ($_POST['deistvie'] = sum) {
	  $sum = $chislo1 + $chislo2;
      }
  if ($_POST['deistvie'] = vich) {
	  $sum = $chislo1 - $chislo2;
   }
  echo $sum;
}
но прин нажатии на кнопку, выводится опять таже страница с формой, а результат вычислений не выводится

 

 

  • 0

#2 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 25 Июнь 2012 - 20:14

у меня твой скрипт переходит на страницу calculator.php посмотри пути, надеюсь:

<?php
if (isset($_POST['chislo1'])) {
	    $chislo1 = $_POST['chislo1'];
	    }
if (isset($_POST['chislo2'])) {
   $chislo2 = $_POST['chislo2'];
    }
if (!empty($_POST['shet'])) {
		 if ($_POST['deistvie'] = sum) {
		  $sum = $chislo1 + $chislo2;
	  }
  if ($_POST['deistvie'] = vich) {
		  $sum = $chislo1 - $chislo2;
   }
  echo $sum;
}
?>

находится в calculator.php

а не считает потому что у тебя опечатки и ошибки в коде

у тебя опечатка в форме:

<input name="schet" type="submit" value="Посчитать">

а в вычислении


if (!empty($_POST['shet'])) {

а здесь

if ($_POST['deistvie'] = sum) {

и здесь
if ($_POST['deistvie'] = vich) {

необходимо использовать не оператор присваивания
=
а оператор сравнения
==

  • 0

#3 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 25 Июнь 2012 - 20:55

Ну и в дополнение к предыдущему - Вы присваиваете в этих строках значение... плюс строка должна быть заключена в кавычки:
if ($_POST['deistvie'] = sum)
if ($_POST['deistvie'] = vich)
Ну а нужно, я так понимаю, сравнить значение со строкой:
if ($_POST['deistvie'] == 'sum')
if ($_POST['deistvie'] == 'vich')

Где-то так логичнее было бы:
<?php
if(isset($_POST['schet'])){
$chislo1 = $_POST['chislo1'];
$chislo2 = $_POST['chislo2'];
  
switch($_POST['deistvie']){
  case 'sum':
   $sum = $chislo1 + $chislo2;
   break;
  case 'vich':
   $sum = $chislo1 - $chislo2;
   break;
}
echo $sum;
}
?>
Ну и плюс, конечно же, не мешает добавить проверок... а то ведь можно вводить и строки, и не выбирать операцию...
  • 0


#4 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 25 Июнь 2012 - 21:02

ценные дополнения!
  • 1

#5 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 25 Июнь 2012 - 21:19

matroskin8, surfer,
спасибо вам большое, действительно там была опечатка в названии кнопки. Я также оставил, только переделал как вы говорили, сделал sum и vich строковыми значениями.
<?php
if (isset($_POST['chislo1'])) {
    $chislo1 = $_POST['chislo1'];
}
if (isset($_POST['chislo2'])) {
    $chislo2 = $_POST['chislo2'];
}
if (!empty($_POST['schet'])) {
	 if ($_POST['deistvie'] == 'sum') {
	  $rez = $chislo1 + $chislo2;
   }
  if ($_POST['deistvie'] == 'vich') {
	  $rez = $chislo1 - $chislo2;
   }
  echo $rez;
}

  • 0


Оформление форума – IPBSkins.ru