-3

我有一个简单的计算器,它采用以 10 为底的数字并将它们设为以 64 为底:

<!DOCTYPE php> 
<html>
<head>
</head>
<body> 
<?php echo "Hello! Let's make an annotag!" ?>
<br/> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<label for="number">Enter your book's ISBN:</label> 
<input type="text" id="isbn" name="isbn" /> 
<input type="submit" value="submit" name="submit" /> 
<label for="number">Enter your book code:</label> 
<input type="text" id="bookCode" name="bookCode" /> 
<input type="submit" value="submit" name="submit" /> 
</form> 
<?php 
$isbn=$_POST['isbn']; 
$bookCode=$_POST['bookCode']; 
$br='<br/>'; //saves a little typing
echo 'ISBN: '.$isbn.$br;  
//these functions adapted from http://stackoverflow.com/questions/4964197/converting-a-number-base-10-to-base-62-a-za-z0-9 
function toBase($num, $b=64) {
  $base='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_';
  $r = $num  % $b ;
  $res = $base[$r];
  $q = floor($num/$b);
  while ($q) {
    $r = $q % $b;
    $q =floor($q/$b);
    $res = $base[$r].$res;
  }
  return $res;
}

function to10( $num, $b=64) {
  $base='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_';
  $limit = strlen($num);
  $res=strpos($base,$num[0]);
  for($i=1;$i<$limit;$i++) {
    $res = $b * $res + strpos($base,$num[$i]);
  }
  return $res;
}
if (isset($isbn)) { 
    echo 'Your bookcode is:  '.toBase($isbn).$br; 
}
if (isset($bookCode)) { 
    echo 'Your ISBN is: '.to10($bookCode).$br; 
}
?>
</body> 
</html>

我想做的是让计算在用户键入时执行,这样可以有两个输入框,一个的任何变化都会影响另一个的变化。我可以用 php 做到这一点,还是我必须使用更动态的东西?

4

5 回答 5

2

今天在浏览器中使用的主要语言中的 JavaScript。从这里开始:

MDN 上的 JavaScript 入门

JavaScript 计算器

于 2013-05-28T05:26:31.590 回答
1

我现在有两件事要评论。

  • 如果您希望计算器是动态的,请在您的代码中使用 Javascript 和 AJAX。
  • 如果您不希望动态页面,请坚持仅使用 PHP 和 HTML 以及 CSS。

希望能解释。

于 2013-05-28T05:26:44.377 回答
1

另一个版本的计算器,带有一些额外的按钮

   <SCRIPT LANGUAGE="JavaScript">
    function addChar(input, character) {
    if(input.value == null || input.value == "0")
    input.value = character
    else
    input.value += character
    }
    function cos(form) {
    form.display.value = Math.cos(form.display.value);}
    function sin(form) {
    form.display.value = Math.sin(form.display.value);}
    function tan(form) {
    form.display.value = Math.tan(form.display.value);}
    function sqrt(form) {
    form.display.value = Math.sqrt(form.display.value);}
    function ln(form) {
    form.display.value = Math.log(form.display.value);}
    function exp(form) {
    form.display.value = Math.exp(form.display.value);}
    function sqrt(form) {
    form.display.value = Math.sqrt(form.display.value);}
    function deleteChar(input) {
    input.value = input.value.substring(0, input.value.length - 1)
    }
    function changeSign(input) {
    substring
    if(input.value.substring(0, 1) == "-")
    input.value = input.value.substring(1, input.value.length)
    else
    input.value = "-" + input.value
    }
    function compute(form)  {
    form.display.value = eval(form.display.value)}
    function square(form)  {
    form.display.value = eval(form.display.value) *
    eval(form.display.value)}
    function checkNum(str)  {
    for (var i = 0; i < str.length; i++) {
    var ch = str.substring(i, i+1)
    if (ch < "0" || ch > "9") {
    if (ch != "/" && ch != "*" && ch != "+" && ch !=
    "-" && ch != "."
    && ch != "(" && ch!= ")") {
    alert("invalid entry!")
    return false
             }
          }
       }
    return true
    }
    </SCRIPT>


    <BODY>

    <CENTER>
    <FORM>
    <input name="display" value="0" size="25"></td>
    <br>
    <input type="button" value="   exp  " onClick="if (checkNum(this.form.display.value)) { 
    exp(this.form) }">
    <input type="button" value="    7    " onClick="addChar(this.form.display, '7')">
    <input type="button" value="    8    " onClick="addChar(this.form.display, '8')">
    <input type="button" value="    9    " onClick="addChar(this.form.display, '9')">
    <input type="button" value="    /    " onClick="addChar(this.form.display, '/')">
    <br>
    <input type="button" value="   ln    " onClick="if (checkNum(this.form.display.value)) { 
    ln(this.form) }">
    <input type="button" value="    4    " onClick="addChar(this.form.display, '4')">
    <input type="button" value="    5    " onClick="addChar(this.form.display, '5')">
    <input type="button" value="    6    " onClick="addChar(this.form.display, '6')">
    <input type="button" value="    *    " onClick="addChar(this.form.display, '*')">
    <br>
    <input type="button" value="   sqrt  " onClick="if (checkNum(this.form.display.value)) {
    cos(this.form) }">
    <input type="button" value="    1    " onClick="addChar(this.form.display, '1')">
    <input type="button" value="    2    " onClick="addChar(this.form.display, '2')">
    <input type="button" value="    3    " onClick="addChar(this.form.display, '3')">
    <input type="button" value="    -    " onClick="addChar(this.form.display, '-')">
    <br>
    <input type="button" value="   sq    " onClick="if (checkNum(this.form.display.value)) { 
    square(this.form) }">
    <input type="button" value="    0    " onClick="addChar(this.form.display, '0')"> 
    <input type="button" value="    .    " onClick="addChar(this.form.display, '.')"> 
    <input type="button" value="   +/-   " onClick="changeSign(this.form.display)">
    <input type="button" value="    +    " onClick="addChar(this.form.display, '+')">
    <br>
    <input type="button" value="    (    " onClick="addChar(this.form.display, '(')"> 
    <input type="button" value="   cos   " onClick="if (checkNum(this.form.display.value)) { 
    cos(this.form) }">
    <input type="button" value="   sin   " onClick="if (checkNum(this.form.display.value)) {
    sin(this.form) }">
    <input type="button" value="   tan   " onClick="if (checkNum(this.form.display.value)) { 
    tan(this.form) }">
    <input type="button" value="    )    " onClick="addChar(this.form.display, ')')"> 
    <br>
    <input type="button" value="   Clear       " onClick="this.form.display.value = 0 ">
    <input type="button" value="   Back Space  " onClick="deleteChar(this.form.display)">
    <input type="button" value="   Enter       " name="enter" onClick="if (checkNum(this.form.display.value)) { 
    compute(this.form) }">
    </FORM>
    </CENTER>
于 2013-05-28T05:44:07.623 回答
1

为了获得最佳的用户体验,javascript 将是要走的路。看看它是多么容易看看这里

于 2013-05-28T05:26:06.920 回答
0

使用 javascript 它是一种 goog 语言。
这是Dorn Zidon所说的 javascript 计算。
JAVASCRIPT CALC
Javascript 在某些方面比 php 更好。Javascript 是客户端脚本语言
,因此它不会对您的服务器造成负担。此外,javascript 也有一些缺点,
比如一些旧浏览器不支持 javascript,而其他一些人
不支持激活 javascript 自己的浏览器。如果其中之一发生,则您的 clac 不起作用。

于 2013-05-28T05:35:30.763 回答