X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Кнопочный калькулятор на php
Виталий Колодеев
Виталий Колодеев
Topic Starter сообщение 18.10.2011, 1:00; Ответить: Виталий Колодеев
Сообщение #1


php изучаю недавно, хочу узнать недостатки моего кода и как можно его упростить. Принципиально с кнопками.
Файл calculator.php
[PHP]
<?php
require_once "system.php";

session_start();

$_SESSION['i'] = 1;

if($_POST){
if($_SESSION['x1'] == "На ноль делить нельзя!!!"){
$_SESSION['x1'] = '';
}

$val = array_shift($_POST);

keys($val);

}
?>
[/PHP]
<head>
<link rel="stylesheet" type="text/css" href="calkstyle.css"/>
<title>Калькулятор</title>
</head>
<body>
<form method="POST" >
<div id="main">
<table>
<tr>
<tr>
<td colspan="4"><textarea rows="2" cols="20"><?= $_SESSION['x1']. $_SESSION['do']. $_SESSION['x2']?></textarea></td>
</tr>
<tr>
<td><input name="1" value="1" type="submit"></td>
<td><input name="2" value="2" type="submit"></td>
<td><input name="3" value="3" type="submit"></td>
<td><input name="+" value="+" type="submit"></td>
</tr>
<tr>
<td><input name="4" value="4" type="submit"></td>
<td><input name="5" value="5" type="submit"></td>
<td><input name="6" value="6" type="submit"></td>
<td><input name="-" value="-" type="submit"></td>
</tr>
<tr>
<td><input name="7" value="7" type="submit"></td>
<td><input name="8" value="8" type="submit"></td>
<td><input name="9" value="9" type="submit"></td>
<td><input name="/" value="/" type="submit"></td>
</tr>
<tr>
<td><input name="." value="." type="submit"></td>
<td><input name="0" value="0" type="submit"></td>
<td><input name="=" value="=" type="submit"></td>
<td><input name="*" value="*" type="submit"></td>
</tr>
<tr>
<td colspan="4"><input name="C " value="C" type="submit"></td>
</tr>


</tr>
</table>
</div>
</form>
</body>


Файл system.php:
[PHP]
<?php

function keys($val){

switch($val){
case '.':
if($_SESSION['aux'] != 1 ){
$_SESSION['aux'] = 1;
$rez = '.';
}
break;
case 'C':
$_SESSION = array();
break;
case '+':
if($_SESSION['do'] == ''){
$_SESSION['do'] = "+";
$_SESSION['aux'] = 0;
} else{
rezult();
}
break;
case '-':
if($_SESSION['do'] == ''){
$_SESSION['do'] = "-";
$_SESSION['aux'] = 0;
} else{
rezult();
}
break;
case '/':
if($_SESSION['do'] == ''){
$_SESSION['do'] = "/";
$_SESSION['aux'] = 0;
} else{
rezult();
}
break;
case '*':
if($_SESSION['do'] == ''){
$_SESSION['do'] = "*";
$_SESSION['aux'] = 0;
} else{
rezult();
}
break;
case '=':
rezult();
break;
case 0:
$rez ='0';
break;
case 1:
$rez ='1';
break;
case 2:
$rez ='2';
break;
case 3:
$rez ='3';
break;
case 4:
$rez ='4';
break;
case 5:
$rez ='5';
break;
case 6:
$rez ='6';
break;
case 7:
$rez ='7';
break;
case 8:
$rez ='8';
break;
case 9:
$rez ='9';
break;

}
if( $_SESSION['do']){
$_SESSION['i']++;
}
$_SESSION['x'. $_SESSION['i']] = $_SESSION['x'. $_SESSION['i']].$rez;
}

function rezult(){
if ($_SESSION['do'] == '+'){
$_SESSION['x1'] = $_SESSION['x1'] + $_SESSION['x2'];
}
if ($_SESSION['do'] == '-'){
$_SESSION['x1'] = $_SESSION['x1'] - $_SESSION['x2'];
}
if ($_SESSION['do'] == '*'){
$_SESSION['x1'] = $_SESSION['x1'] * $_SESSION['x2'];
}
if ($_SESSION['do'] == '/'){
if($_SESSION['x2'] == 0){
$_SESSION['x1'] = "На ноль делить нельзя!!!";
}else{
$_SESSION['x1'] = $_SESSION['x1'] / $_SESSION['x2'];
}
}
$_SESSION['do'] = '';
$_SESSION['x2'] = '';
}
?>
[/PHP]

Результат:
[IMG]http://i.piccy.info/i7/a92947879eea671c8846c2e888f66c1d/1-5-859/51792788/Bez_ymeny-3.jpg[/IMG]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
asbury
asbury
сообщение 18.10.2011, 1:10; Ответить: asbury
Сообщение #2


форэйч заменил бы на фор)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Виталий Колодеев
Виталий Колодеев
Topic Starter сообщение 18.10.2011, 1:19; Ответить: Виталий Колодеев
Сообщение #3


В масиве $mass только одно значение, но каждый раз с разными ключами и их значениями. For не подходит
И смисл менять foreach срабатывает только 1 раз так как $key всегда один
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 18.10.2011, 10:26; Ответить: Mulder_hb
Сообщение #4


(Виталий Колодеев @ 18.10.2011, 04:19) *
В масиве $mass только одно значение, но каждый раз с разными ключами и их значениями. For не подходит
И смисл менять foreach срабатывает только 1 раз так как $key всегда один

Если в массиве всегда один элемент, то зачем тогда вообще использовать цикл? Да и $key у вас нигде не используется. Вытаскивайте значение из массива любой из удобных вам функций (array_shift, array_pop, array_values, extract).
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Виталий Колодеев
Виталий Колодеев
Topic Starter сообщение 18.10.2011, 11:41; Ответить: Виталий Колодеев
Сообщение #5


Спасибо, исправил на array_shift
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 18.10.2011, 13:58; Ответить: Mulder_hb
Сообщение #6


Можно вообще избавится от массива и передавать в функцию само значение, а не массив $_POST.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Виталий Колодеев
Виталий Колодеев
Topic Starter сообщение 18.10.2011, 14:22; Ответить: Виталий Колодеев
Сообщение #7


Сделал:rolleyes:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Sapr
Sapr
сообщение 1.8.2012, 13:59; Ответить: Sapr
Сообщение #8


а че на php а не js(jquery)? зачем сервак грузить....

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3294 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1172 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44767 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1856 26.5.2023, 20:48
автор: Mixatraider
Открытая тема (нет новых ответов) Опытный PHP\Python разработчик в поиске интересных задач
6 daikzlex 3361 25.5.2023, 13:55
автор: daikzlex


 



RSS Текстовая версия Сейчас: 29.3.2024, 14:22
Дизайн