Хочу написать калькулятор с одним текстовым полем, так как наличие двух текстовых полей и кнопки не должно вызывать трудностей у начинающего программиста. А вот с одним уже посложнее. Предварительная логика: записывать вводимое число в форму - в файл, потом обновлять форму (тут проблемка), вводить второе число в форму, и далее в зависимости от нажатой кнопки ("+", "-", ":", "х" ) читать число из файла и складывать или вычитать в зависимости от нажатой кнопки с вторым числом формы и выводить результат. Второй вариант: значения переменных в БД. но для калькулятора это имхо слишком круто) Третий вариант: использовать сессии, и хранить в них переменные. Хочется разобрать пока третий вариант, так как он самый простой. Поможете? тут какие мысли: сделать три файла: 1.php,2.php, 3.php в третьем выдавать результат, а значения переменных хранить в сессии. только вот как передать в другой файл, то какая кнопка была нажата. ...что-то тут туплю. и ещё один момент. лучше сделать калькулятор одним файлом, для этого нам понадобится $_SERVER['PHP_SELF'] и скрытые поля. вот тут опять таки нужна помощь. котелок плохо варит. как всё это организовать. для начала давайте попробуем сделать с помощью трёх файлов.
Порвать мне сраку, это что за бредятина такая с калькулятор, который промежуточные рассчеты в файл пишет? О_о А калькулятор с рассчетом матриц как делать будете? Писать каждый элемент массива в файлы? :lol: Пишите уж промежуточный результат в БД на другом сервере, тогда звание самого идиотского калькулятора точно заслужите =)
Ок. Помогите написать калькулятор с одним текстовым полем. и пятью кнопками. где четыре кнопки - это основные действия, а пятая кнопка "=". Буду очень благодарен!
в php я хоть знаю что-то, а в js вообще ничего) хотелось бы попробовать на php. подскажите как одним файлом всё сделать с помщью $_SERVER[]
почему, когда прописываешь в экшне $_SERVER['PHP_SELF'] то когда вводишь enter, результат: Not Found?
вопрос при работе с формой основной. как не делать несколько файлов, а обойтись одним с помощью переменной сервер или header?
Да не надо мне Js, мне объясните простой механизм работы $_SERVER[''PHP_SELF]. Гуглю..........ищу........пока не понимаю почему после нажатия на кнопку или enter моя страница не найдена.... надо путь полностью прописывать7 что-то вот этот момент пока важен.
Чтобы получше понять, что в себе хранит $_SERVER['PHP_SELF'] и остальные элементы массива $_SERVER: PHP: <pre> <?php print_r($_SERVER); ?> </pre>
Да ёпт, примитивнейший калькулятор на РНР можно написать за две минуты. Вот, например, простейший, который я написал, пока хавал мороженое. Кстати, задача была в том, чтобы писать всё в одном текстовом поле. Можно написать парсер, разбирающий выражение и с помощью eval считающий. Мне лично лень, написал пока простой, ибо и так сойдет. PHP: <form action="?do=calc" method="post"> <input type="text" name="data" /> <input type="submit" value="Рассчитать" /> </form> <?php if(isset($_POST['data'])) { if(preg_match('/([\d]+)\s*(\+|-|:|x){1}\s*([\d]+)/si', trim($_POST['data']), $nums)) { switch($nums[2]) { case '+': { echo "$nums[1] + $nums[3] = ".$nums[1] + $nums[3]; } break; case '-': { echo "$nums[1] - $nums[3] = ".$nums[1] - $nums[3]; } break; case ':': { echo "$nums[1] : $nums[3] = ".$nums[1] / $nums[3]; } break; case 'x': { echo "$nums[1] x $nums[3] = ".$nums[1] * $nums[3]; } break; } } else { echo "Неверный формат данных"; } } ?> Если делать вообще нех, то это тоже калькулятор в одну строчку: PHP: <?php eval('echo '.$_POST['data'].';'); ?> Естественно, такого дерьма писать не надо даже для примеров =)
А вот вообще практически полноценный калькулятop, считающий синусы даже =) PHP: Например: cos(2.5) * (2 + (3 + 5) * 5) - M_PI*tan(24)<br><br> <form action="?do=calc" method="post"> Пример: <input type="text" name="data" /> <input type="submit" value="Рассчитать" /> </form> <?php /** * Собственно сам калькулятор */ if(isset($_POST['data']) && preg_match('#^[a-z\d\s*/+.()_-]+$#si', $_POST['data'])) { echo $_POST['data'] . ' = ' . eval('return '.$_POST['data'].';'); } else echo "Не понимаю примера"; ?> cos(3.1) * M_PI = -3.1388756480419 Естественно, безопасность под вопросом, хотя оператор окончания инструкции ( вводить нельзя.
Спасибо. а можно пояснить код начиная с появления переменной $nums. Откуда она взялась? switch($nums[2]) - означает что мы можем сложить только два числа в форме?
Я, вообще-то, не заменяю на форуме документацию, а каким-либо косвенным образом помогаю лучше её понять или дополнить, при этом сам повышая свою квалификацию. Будьте добры сначала прочитать документацию по использованным в примере функциям и уже потом задавать вопросы подобного вида. Спасибо. Нет.