Discuz教程网

利用PHP+mysql来做一个功能强大的在线计算器

[复制链接]
authicon dly 发表于 2011-8-31 12:56:08 | 显示全部楼层 |阅读模式
找了很久,发现网上资料很少,于是想自己动手写,慢慢的发现问题多了,自己不怎么通算法,写一个计算式子短点还好,长了就挂了,再长点恐怕就要死机。

有一天做做mysql突然发现原来mysql功能这么强大,可以直接计算字符串。。。哈哈 这下可就高兴了。

代码还超级简单 就做了一个ajax的计算器

有式子错误提示 还可以时时显示输入的式子

有兴趣的朋友可以看看 更多的功能可以自己去开发

演示地址:http://www.jianlila.com/jsq.php

jquer.js自己去下载

jsq1.php
代码如下:

  1. <?php
  2. //链接数据库的
  3. $db=mysql_connect("localhost","root","123");
  4. header("Content-Type:text/html;charset=GB2312");
  5. $str=iconv('utf-8','gbk',trim($_POST['t_ask']));
  6. $str=str_replace(" ","",str_replace("\r\n","",$str));
  7. $str=str_replace("(","(",$str);
  8. $str=str_replace(")",")",$str);
  9. /*三角函数替换*/
  10. $str=preg_replace("/sin\((.*)\)/is","sin(\${1}*pi()/180)",$str);//替换sin
  11. $str=preg_replace("/cos\((.*)\)/is","cos(\${1}*pi()/180)",$str);//替换cos
  12. $str=preg_replace("/tan\((.*)\)/is","tan(\${1}*pi()/180)",$str);//替换tan
  13. $str=preg_replace("/cot\((.*)\)/is","1/tan(\${1}*pi()/180)",$str);//替换余切
  14. $str=preg_replace("/asin\((.*)\)/is","asin(\${1}/pi()*180)*180/pi()",$str);//反正弦
  15. $str=preg_replace("/acos\((.*)\)/is","acos(\${1}/pi()*180)*180/pi()",$str);//反余弦
  16. $str=preg_replace("/atan\((.*)\)/is","atan(\${1}/pi()*180)*180/pi()",$str);//替换反正切
  17. $sql="select ".$str ;
  18. $res=mysql_query($sql,$db) or die('<font color=red>你输入的式子有错误</font>');
  19. $rs=mysql_fetch_array($res);
  20. echo $rs[0];
  21. ?>
复制代码



jsq.php
代码如下:

  1. <html>
  2. <head>
  3. <title>手写输入计算器</title>
  4. <meta name="keywords" content="在线计算器,输入式子直接计算,手写计算器" />
  5. <meta name="description" content="在线计算器,手写输入计算器,输入式子直接计算" />
  6. <script src="jquery.js" language="javascript"></script>
  7. <script language="javascript">
  8. $(function(){
  9. $("#t_ask").keyup(function(){
  10. $.post(
  11. "jsq1.php",
  12. {
  13. t_ask : $("#t_ask").val()
  14. },function(data,textStatus)
  15. {
  16. $("#res").html(data);
  17. }
  18. );
  19. });
  20. });
  21. </script>
  22. </head>
  23. <body>
  24. <table width="800" border="0" align="center" cellpadding="0" cellspacing="0">
  25. <tr>
  26. <td align="center" height="40"><h2>手写输入计算器</h2></td>
  27. </tr>
  28. </table>
  29. <table width="800" border="0" align="center" cellpadding="0" cellspacing="0">
  30. <tr>
  31. <td height="34" align="center">在这里你可以手写式子计算哦,还不快试试! <a href="http://www.jianlila.com">返回首页</a></td>
  32. </tr>
  33. </table>

  34. <form method="post">
  35. <table width="800" border="0" align="center" cellpadding="0" cellspacing="0">
  36. <tr>
  37. <td width="27%" align="right">计算式子:</td>
  38. <td width="73%"><textarea name="t_ask" cols="60" rows="6" id="t_ask"></textarea></td>
  39. </tr>
  40. <tr>
  41. <td height="23" align="right">=</td>
  42. <td><div id="res"></div></td>
  43. </tr>
  44. <tr>
  45. <td height="31" align="right"></td>
  46. <td><input type="button" name="tj" id="tj" value="按钮" />
  47. <input type="reset" name="qc" id="qc" value="重置" /></td>
  48. </tr>
  49. </table>
  50. <table width="800" border="0" align="center" cellpadding="0" cellspacing="0">
  51. <tr>
  52. <td><p>说明:<br />
  53. 三角函数:
  54. <p>sin(60)正弦 cos(60)余弦 tan(60)正切 cot(60)余切
  55. <p>asin(0.5)反正弦 acos(0.5)
  56. 反余弦 atan(0.5)反正切
  57. <p>abs(-1)=1绝对值 ceil(0.1)=1进一
  58. <p>指数对数
  59. <p>exp(float arg)// 计算 <strong>e</strong>(自然对数的底)的指数
  60. <p>log(10,100)=2//自然对数 pow(2,4)=16 指数 sqrt(4)=2平方根
  61. <p><br />
  62. </td>
  63. </tr>
  64. </table>
  65. </form>
  66. </body>
  67. </html>
复制代码








上一篇:PHP蜘蛛统计插件只要有mysql就可用
下一篇:ajax实现无刷新分页(PHP)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 12:36

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表