在线 PHP 软件示例:在线次氯酸稀释计算器
在线 PHP 软件示例:次氯酸钠稀释计算器
下载和链接
- 下载源代码.
- 在线试用 - 英文版
- 在线试用 - 阿拉伯语版
- 在我的博客上阅读同一篇文章
关于在线软件
- 在线软件易于使用,无需安装即可运行
- 您的软件和代码将是安全的,因为它们不会分发给最终用户
- 您的软件将易于与您的网站集成
引言
- 次氯酸钠溶液广泛用于家庭护理、游泳池水消毒、家禽生产厂等。
- 它的最知名商品名是 Clorox。
- 许多小型工厂批量购买浓缩溶液用于稀释和包装。
- 此计算器用于提供在线稀释计算。
使用此计算器
- 确定您要生产的浓度,例如 4% w/w
- 获取您拥有的原液的浓度。
- 转到在线页面进行计算 在线计算器
- 输入您的值,然后按计算
- 在线计算器将使用 AJAX,因此页面将显示结果而无需重新加载它。
- 所有输入数据都将发送到 PHP 脚本,该脚本将进行计算。
看点
本文讨论以下技术
- 如何构建可在免费托管上运行的简单在线软件。
- Ajax 的简单实现
- 在您的 PC 上测试您的软件
托管要求
- 免费或付费托管帐户
- 此软件不需要数据库
- 托管应支持 PHP。
为什么选择 PHP?
- 它是网络服务器上最常用的服务器端脚本,即使在免费计划中也是如此
- 它在 Windows 和 Unix 服务器上运行
在本地测试您的代码
要在本地测试您的代码,您需要一个支持 PHP 的 Web 服务器。
一些默认支持 PHP 的易于使用的服务器列表。
- Uniform Server Zero: Uniform Zero 重新审视了 Apache、MySQL、PHP 和 Perl 的可移植性。它有一个功能强大的控制面板
- XAMPP: 这是一个非常常见的基于 Apache 的 Web 服务器,支持 PHP
- Server2Go: 基于 Apache 的便携式 Web 服务器,支持 PHP。它可以在 CD 上运行
- AppServ
- USBWebserver
- WampServer
您应该通过附加软件添加 PHP 支持的一些易于使用的服务器列表。
- Small HTTP server 轻量级、功能强大、多功能 Web 服务器。
- IIS:IIS 内置于 Windows 中,要添加 PHP 支持,只需下载 PHP for IIs 并运行它
此应用程序如何工作?
- 此应用程序依赖于不同单位的浓度表和次氯酸钠溶液的密度。它还包含每种浓度所需的过量氢氧化钠。
- 例如,计算将 8% w/w 溶液稀释至 4% 溶液所需的水量。
- 我们在表中搜索输入和输出氯的重量百分比和密度。
- 如果我们找不到浓度,我们将根据最接近的浓度计算它
//This function will search for a given concentration
//$var: value to be searched
//$field:unit of the value
function searchit($var, $field){
global $hypochlorite_table;
//array contains the data table of chlorine concentrations
//and density and reqiured sodium hydroxide
global $precision;
//precision for each field in the $hypochlorite_table array
$var=round($var,$precision[$field]);
if ( is_numeric ( $var )) $var = (trim($var) == '')? 0 :$var; else $var = 0;
for ($index = 0; $index < count($hypochlorite_table); $index++) {
if($var == $hypochlorite_table[$index][$field]){
return outputrow($index);
}elseif($var < $hypochlorite_table[$index][$field]){
if(!$index) return outputrow($index);
$delta = ($var-$hypochlorite_table[$index-1][$field])
/($hypochlorite_table[$index][$field]-$hypochlorite_table[$index-1][$field]);
return outputrow($index,$delta);
}
}
return false;
}
function outputfield($field,&$row,$index,$delta=0){
global $hypochlorite_table,$precision;
if($delta==0){
$row[$field]= round($hypochlorite_table[$index][$field],
$precision[$field]);
}else{
$row[$field]=round(
$hypochlorite_table[$index-1][$field]
+ $delta*($hypochlorite_table[$index][$field]
- $hypochlorite_table[$index-1][$field])
, $precision[$field]);
}
}
function outputrow($index,$delta=0){
$row=array();
outputfield(ClWV ,$row,$index,$delta);
outputfield(d ,$row,$index,$delta);
outputfield(dChange ,$row,$index,$delta);
outputfield(ClWW ,$row,$index,$delta);
outputfield(ClDegrees,$row,$index,$delta);
outputfield(NaOClWV ,$row,$index,$delta);
outputfield(NaOClWW ,$row,$index,$delta);
outputfield(NaOH ,$row,$index,$delta);
outputfield(dNone ,$row,$index,$delta);
return $row;
}
这里是表格的一部分
Cl %W/V | Cl% | 氯量 度 °Cl | NaOCl %W/V | NaOCl% | 必需 过量 NaOH %W/W | 比重 添加时更改 1% NaOH | 比重 带所需的 过量 NaOH | 比重 没有 NaOH |
0.0% | 0.0% | 0.0 | 0.0% | 0.0% | 0.25% | 0.012 | 1.001 | 0.998 |
2.5% | 2.4% | 8.0 | 2.6% | 2.5% | 0.36% | 0.044 | 1.041 | 1.025 |
5.0% | 4.6% | 16.0 | 5.2% | 4.9% | 0.47% | 0.028 | 1.076 | 1.063 |
5.5% | 5.1% | 17.6 | 5.8% | 5.3% | 0.49% | 0.027 | 1.083 | 1.070 |
6.0% | 5.5% | 19.2 | 6.3% | 5.8% | 0.51% | 0.024 | 1.089 | 1.077 |
6.5% | 5.9% | 20.8 | 6.8% | 6.2% | 0.53% | 0.023 | 1.096 | 1.084 |
7.0% | 6.3% | 22.4 | 7.3% | 6.7% | 0.55% | 0.022 | 1.103 | 1.091 |
7.5% | 6.8% | 24.0 | 7.9% | 7.1% | 0.57% | 0.019 | 1.109 | 1.098 |
8.0% | 7.2% | 25.6 | 8.4% | 7.5% | 0.59% | 0.019 | 1.116 | 1.105 |
将表格数据存储在数组中
- 有 3 个数据字段,其他字段是计算字段。
- 我将数据字段存储在一个数组中
$hypochlorite_table =array( array(00.0, 1.001, 0.012), array(01.0, 1.020, 0.064), array(01.5, 1.027, 0.053), array(02.0, 1.034, 0.050), array(02.1, 1.035, 0.049), array(02.5, 1.041, 0.044), array(02.6, 1.043, 0.041), ........ </pre lang="php">
- 我定义字段常量
$fields=array( 0=>'ClWV', //Cl(%w/v): weight of chlorine in 100 ml of the solution 1=>'d', //Specific Gravity of Sodium Hypochlorite solution that //contains default required excess of Sodium Hydroxide 2=>'dChange', //Specific Gravity change when adding 1% NaOH 3=>'ClWW', //Cl%= ClWV /d 4=>'ClDegrees', //°Cl Chlorometric Degrees = = 3.2 * ClWV 5=>'NaOClWV', //NaOCl% w/v: weight of Sodium Hypochlorite in 100 ml of the solution 6=>'NaOClWW', //NaOCl%: weight of Sodium Hypochlorite in 100 g of the solution 7=>'NaOH', //NaOH%: Default required excess of Sodium Hydroxide for //this concentration of hypochlorite=0.25+ClWW*0.75/16 8=>'dNone' //Specific gravity of Sodium Hypochlorite solution that //does not contain any excess of Sodium Hydroxide ); foreach ($fields as $key => $value) define($value,$key);
- 然后我将计算字段存储在数组中,以便于搜索。
- 我编写了一个 Html 页面,它将是应用程序的界面
使用 AJAX 调用 PHP 数据
用户填写完表单并按下计算按钮后,它将调用 AjaxRefresh 函数。
此函数将执行以下操作
- 将所有表单数据存储为字符串
- 创建 XMLHttpRequest 对象
- 创建一个将处理 AJAX 响应的函数
- 打开 XMLHttpRequest 对象并发送数据
function AjaxRefresh(){
var q = 'ajax.php' + '?id=' +
'&CIn=' + CIn.value +
'&COut=' + COut.value +
'&dIn=' + dIn.value +
'&lang=' + lang.value +
'&NaOHIn=' + NaOHIn.value +
'&QOut=' + QOut.value +
'&UnitIn=' + UnitIn.value +
'&UnitInAr=' + UnitInAr.value +
'&UnitOut=' + UnitOut.value +
'&UnitOutAr=' + UnitOutAr.value +
'&UnitQOut=' + UnitQOut.value +
'&UnitQOutAr=' + UnitQOutAr.value ;
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState===4 && xmlhttp.status===200)
var pairs = xmlhttp.responseText.split('&');
for(i=0;i<pairs.length;i++){
var pair = pairs[i].split('=');
var element = document.getElementById(pair[0]);
if(element===null){
}else{
try{element.innerHTML = pair[1].trim();}catch(e){};
try{element.value = pair[1].trim();}catch(e){};
};
};
};
xmlhttp.open("GET",q,true);
xmlhttp.send();
}
PHP 脚本将发送 Html 元素 id 及其新值