Jump to content
  • 0

Калькулятор на php


rus
 Share

Question

Добрый день!

Встала такая задача:

нужен калькулятор на php кторый мог бы посчитать данные из форм, неважно каких, например:

checkbox, input, button и т.д...

Смысл в том, что к примеру есть товар:

Карандаши красные, цена - 10 руб.

Ручки шариковые, цена - 5 руб. - ну и т.д...

В какие поля загнать - это уже дело десятое, а вот как получить желаемый результат?

Вот попытался, только не смейтесь сильно, мне может через некоторое время и самому станет смешно, когда научусь!

<form action="test3.php" method="post" name="form1" target="_blank">
<p><h3>Выберите пожалуйста наименование:</h3></p>
<p>Размер (ШхДхВ), м: 18х60х8-12 м.</p>
<p>Площадь, м.кв.: 1080 м.кв.</p>
<p>Ангар Молодечно с 2-х скатной кровлей</p>
Выберите пожалуйста I вариант - Каркас: 1540000 руб.
<input name='name_2' type='checkbox' value='1540000'>

Выберите пожалуйста II вариант - Каркас: 7780000 руб.
<input name='name_3' type='checkbox' value='7780000'>

Выберите пожалуйста III вариант - Каркас: 8000000 руб.
<input name='name_4' type='checkbox' value='8000000'>

<!--
<p><h3>Выберите пожалуйста наименование:</h3></p>
<p>Размер (ШхДхВ), м: 48х120х8,6 м.</p>
<p>Площадь, м.кв.: 5760 м.кв.</p>
<p>Ангар Финский</p>
<p><input name='name_5' type='checkbox' value='Ангар Финский'></p>
Выберите пожалуйста I вариант - Каркас: 3110000 руб.
<input name='name_6' type='checkbox' value='3110000'>

Выберите пожалуйста II вариант - Каркас: 14500000 руб.
<input name='name_7' type='checkbox' value='14500000'>

Выберите пожалуйста III вариант - Каркас: 15700000 руб.
<input name='name_8' type='checkbox' value='15700000'>


<p><h3>Выберите пожалуйста наименование:</h3></p>
<p>Размер (ШхДхВ), м: 48х120х12 м.</p>
<p>Площадь, м.кв.: 5760 м.кв.</p>
<p>Ангар Шатровый</p>
<p><input name='name_9' type='checkbox' value='Ангар Шатровый'></p>
Выберите пожалуйста I вариант - Каркас: 4585000 руб.
<input name='name_10' type='checkbox' value='4585000'>

Выберите пожалуйста II вариант - Каркас: 19900000 руб.
<input name='name_11' type='checkbox' value='19900000'>

Выберите пожалуйста III вариант - Каркас: 22525000 руб.
<input name='name_12' type='checkbox' value='22525000'>-->

<p><input type='submit' value='Подсчитать'></p>
</form>

Вот обработчик:

<?php 

$name2 = 1540000;
$name3 = 7780000;
$name4 = 8000000;

$cum = ($name2 + $name3 + $name4);
echo "Сумма подсчитана и равна - $cum";

?>

Link to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 0

Или так

calc.html

<form action="phpcalc.php" method="post" name="form1">
<p><h3>Выберите пожалуйста наименование:</h3></p>
<p>Размер (ШхДхВ), м: 18х60х8-12 м.</p>
<p>Площадь, м.кв.: 1080 м.кв.</p>
<p>Ангар Молодечно с 2-х скатной кровлей</p>
Выберите пожалуйста I вариант - Каркас: 1540000 руб.
<input name='name[2]' type='checkbox' value='1540000'>

Выберите пожалуйста II вариант - Каркас: 7780000 руб.
<input name='name[3]' type='checkbox' value='7780000'>

Выберите пожалуйста III вариант - Каркас: 8000000 руб.
<input name='name[4]' type='checkbox' value='8000000'>
<p><input type='submit' value='Подсчитать'></p>
</form>

phpcalc.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Результаты подсчетов</title>
</head>

<body>
<pre>
<?php var_dump($_POST); ?>
</pre>
<?php print "Сумма подсчитана и равна: ".array_sum($_POST['name']); ?>
</body>
</html>

Имхо, на Java Script практичнее

Link to comment
Share on other sites

  • 0

Спасибо за внимание вам, уважаемые эксперты!

to Yarik Voronov: спасибо, не знал что обработчик может быть в этом случае таким коротким в плане кода. А если например не выбрано ни одно поле - выдает ошибку.

Кстати вот эта строчка оказалась лишней:

<?php var_dump($_POST); ?>

С ней выдает лишнюю и не нужную инфу в браузер.

Link to comment
Share on other sites

  • 0
Кстати вот эта строчка оказалась лишней:
<?php var_dump($_POST); ?>
С ней выдает лишнюю и не нужную инфу в браузер.

ну да. это для дебага. и что бы показать что задав атрибут input'a name как "имя[индекс]" в РНР можно получить массив значений.

<?php 
$sum=0;
if (isset($_POST['name'])) $sum= array_sum($_POST['name']);
print "Сумма подсчитана и равна: $sum";
?>

Link to comment
Share on other sites

  • 0

И все-таки, если не выбрано ни одно поле, как выдать пользователю что он не выбрал ни одно значение?

Можно это сделать при помощи if else? Или надо как-то по другому?

Вроде как разобрался, но выдает ошибку, если не выбран ни один чекбокс, но при этом показывает то что нужно:

<?php
if ($sum=$name)
{
if (isset($_POST['name'])) $sum= array_sum($_POST['name']);
echo "Сумма подсчитана и равна: $sum";
}
else
{
echo "Вы не выбрали ни одно значение";
}
?>

Link to comment
Share on other sites

  • 0

if ($sum=$name)

знак равенства неверный вроде как... это читается "если успешно присвоили переменной $sum значение переменной $name"

а if ($sum == $name)

"если значение переменной $sum равно значению переменной $name"

Link to comment
Share on other sites

  • 0

Да, все так, но показывает то что нужно!

Но с ошибкой именно в этой строке: if ($sum = $name) - это на локальном хосте, а в инете не пашет.

А нужно по идее если пользователь не выбрал ни один чекбокс - чтобы выводилась надпись типа: Вы не выбрали ни одно значение!

Link to comment
Share on other sites

  • 0

Так как все-таки решить эту задачку?

Нутром чую что при помощи checked, но не понимаю как... :/

Гуглил, гуглил, а результат - нулевой!

Не нашел варианта на проверку чекбокса, отмечен он, или нет.

Максимум что нашел это вот: http://www.comprog.ru/phpp65.html

Link to comment
Share on other sites

  • 0

В принципе этот код работает:

<?
if (!isset($name))
{
?>
<?php
echo "<h3 align='center'>Вы не выбрали ни один пункт!

И после этого вы думаете что он вам что-то подсчитает?</h3>";
?>
<?
}
else
{
if (isset($_POST['name'])) $sum = array_sum($_POST['name']);
echo "<h3 align='center'>Сумма подсчитана и равна: $sum руб<h3>";
}
?>

Но только на локальной машине, а на бесплатном хосте показывает, но не то...

Если написано так: if (!isset($name)) - то в случае не проставленного чекбокса

показывает Сумма подсчитана и равна: руб

А если написано так: if (isset($name)) - то в случае и проставленного, и не проставленного чекбокса показывает

Вы не выбрали ни один пункт!...

Link to comment
Share on other sites

  • 0
Чем Вас empty() не устраивает?

Я и empty() пробовал тоже, - результат анологичный, с разницей в точности до наоборот, это относительно восклицательного знака перед empty() и перед isset() :)

Link to comment
Share on other sites

  • 0

Выше приведен код :)

Вот страница где он резмещен: http://novichok.webpartner.ru/kontakts/calc.php

Если не выбираеш ни один чекбокс и нажимаеш сабмит, то по идее должен показать:

Вы не выбрали ни один пункт!

И после этого вы думаете что он вам что-то подсчитает?

А показывает:

Сумма подсчитана и равна: руб

Локально на установленом апаче все работает.

Может это из-за хостера?

Или из-за кривых рук? :(

Link to comment
Share on other sites

  • 0

У Вас не определена переменная $name, а на сервере, судя по всему, отключены глобальные переменные. То есть вам надо проверять не $name, а $_POST['name'].

Проверьте так:

<?php if (!isset($_POST['name'])): ?>
<h3 align='center'>Вы не выбрали ни один пункт!

И после этого вы думаете что он вам что-то подсчитает?</h3>
<?php else: $sum = array_sum($_POST['name']); ?>
<h3 align='center'>Сумма подсчитана и равна: <?php echo $sum; ?> руб<h3>
<?php endif; ?>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy