表单不输出号码



给定由一串字母和运算符(加号、减号和字母)组成的表达式的输入。IE:"b-d+e-f")和一个文件,其中包含一组以逗号分隔的变量/值对(即:a=1,b=7,c=3,d=14)编写一个程序,输出输入表达式的结果。

例如,如果表达式输入为 ("a + b+c -d"),文件输入为 ( a=1,b=7,c=3,d=14),则输出将为 -3。

到目前为止,我已经得到了这个,它计算数字,但不确定如何通过字母abcd计算它,

  <html>
 <head>
 </head> 
 <body>
 <form action = ""  method = "GET"> 
Number 1: <input type = "text" name = "input[]" size=3> 
<br/> 
Number 2: <input type = "text" name = "input[]" size=3> <br> 
Number 3: <input type = "text" name = "input[]" size=3> <br> 
Number 4: <input type = "text" name = "input[]" size=3> <br> 
 <input type="hidden" name="calc" value ="yes"> 
 <input type = "submit" name = "Calculate"/> 
 </form> 
 </body> 
 </html> 
<?php 
  print_r($_GET);
  $myInputs = $_GET['input'];
  print_r($myInputs);
  $myArray = array();
  $myArray['a'] = 5;
  $myArray['b'] = 10 ; 
  $myArray['c'] = 15 ;
  $myArray['d'] = 20 ;

  echo $myArray[$_GET['a']] + $myArray[$_GET['b']] ; 
 /*
 if ($_GET['calc'] == "yes") 
 { 
 $a = $_GET['a']; 
 $b = $_GET['b']; 
 $c = $_GET['c']; 
 $d = $_GET['d']; 
 $total = $a+$b+$c+$d; 
 print "Total is: $total <p>";
 } 
 */
 ?>

<?php
$expression = '';   
$input      = array( 'a' => 5,    
                     'b' => 10,
                     'c' => 15,
                     'd' => 20); 
$total = 0;
$sum   = '';
// Override default expression and input values
if(isset($_POST['Calculate']))
{
    $input      = $_POST['input'];          //input being passed via POST method
    $expression = $_POST['expression'];     //expression being passed via POST method 
}
// make sure the users expression is safe to use
if(preg_match('#^[a-z+-s]+$#i', $expression))
{
    $sum = $expression;         //evaluates sum as expression
    $input_letters = array();   //puts letters into a array
    $input_operators = array(); //puts operators into a array

    for ($i = 0; $i < strlen($expression) ; $i++) { //gets string length
    if (($i % 2) == 0) {
    $input_letters[] = $expression[$i]; //getting the character for the position i 
    } else {
    $input_operators[] = $expression[$i];
    }
    }
    // 
    for ($i = 0 ; $i < sizeof($input_letters); $i++) { //size of= numbers (4)
    $value = $input[$input_letters[$i]]; //takes the value  from the letters 
    if ($i == 0) { 
        $sum += $value; //adds the sum if = 0
    } else {
    if ($input_operators[$i-1] == '+') { //checks to see if the operator is +
    $sum += $value;
    } else if ($input_operators[$i-1] == '-')  { //checks to see if the operator is -
    $sum -= $value;
    }
    }
    print_r($value);
    }
} else {    
echo "Error: expression not correct form"; //error message
}
?>
<form action=""  method="post">     <!--Form begins--> 
    Number A: <input type="text" name="input[a]" value="<?php echo $input['a']; ?>" size=3> <br/>
    Number B: <input type="text" name="input[b]" value="<?php echo $input['b']; ?>" size=3> <br> 
    Number C: <input type="text" name="input[c]" value="<?php echo $input['c']; ?>" size=3> <br> 
    Number D: <input type="text" name="input[d]" value="<?php echo $input['d']; ?>" size=3> <br>
    <br>
    Expression: <input type = "text" name = "expression" value="<?php echo $expression ?>">  = 
<?php echo $sum; ?><br>
    Sum: <?php echo $sum; ?><br>
    <input type="submit" name="Calculate" /> 
</form>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$( "form" ).submit(function( event ) {
var val_is_good=($('input[name="expression"]').val().length==4)?true:false;
if(!val_is_good){alert('Enter four letters or die!');}
});
</script>

现在我添加了一个脚本来告诉用户,如果他们输入超过 4 个字母,则警报消息说请只输入四个字母,有人知道为什么我的脚本即使只输入四个字母也会输出警报消息吗?

<html>
 <head>
 </head> 
 <body>
 <form action = ""  method = "GET"> 
Number 1: <input type = "text" name = "input[]" size=3> 
<br/> 
Number 2: <input type = "text" name = "input[]" size=3> <br> 
Number 3: <input type = "text" name = "input[]" size=3> <br> 
Number 4: <input type = "text" name = "input[]" size=3> <br> 
 <input type="hidden" name="calc" value ="yes"> 
 <input type = "submit" name = "Calculate"/> 
 </form> 
 </body> 
 </html> 
<?php 
print_r($_GET);
$myInputs = $_GET['input'];
//you are assigning $_GET values to an array myInputs so no need here
print_r($myInputs);
echo $myInputs[0]+ $myInputs[1]; 
$myArray = array();
$myArray['a'] = 5;
$myArray['b'] = 10 ; 
$myArray['c'] = 15 ;
$myArray['d'] = 20 ;
// In case of myarray it has keys a,b,c,d only... so need of using $_GET here also.
echo $myArray['a']+$myArray['b'];
// but if you want to it directly from$_GET values.
echo $_GET['input'][0]+ $_GET['input'][1]; 

?>

我在这个网站上找到了解决方案。这是该帖子中的代码:

    <?php
$expression = '';   
$input      = array( 'a' => 5,    
                     'b' => 10,
                     'c' => 15,
                     'd' => 20); 
$total = 0;
$sum   = '';
// Override default expression and input values
if(isset($_POST['Calculate']))
{
    $input      = $_POST['input'];
    $expression = $_POST['expression'];
}
// make sure the users expression is safe to use
if(preg_match('#^[a-z+-s]+$#i', $expression))
{
    $sum = $expression;
    $input_letters = array();
    $input_operators = array();
    for ($i = 0; $i < strlen($expression) ; $i++) {
    if (($i % 2) == 0) {
    $input_letters[] = $expression[$i]; 
    } else {
    $input_operators[] = $expression[$i];
    }
    }
    //
    for ($i = 0 ; $i < sizeof($input_letters); $i++) {
    $value = $input[$input_letters[$i]];
    if ($i == 0) {
        $sum += $value;
    } else {
    if ($input_operators[$i-1] == '+') {
    $sum += $value;
    } else if ($input_operators[$i-1] == '-')  {
    $sum -= $value;
    }
    }
    }
} else {
echo "Error: expression not correct form";
}
?>
<form action=""  method="post"> 
    Number A: <input type="text" name="input[a]" value="<?php echo $input['a']; ?>" size=3> <br/>
    Number B: <input type="text" name="input[b]" value="<?php echo $input['b']; ?>" size=3> <br> 
    Number C: <input type="text" name="input[c]" value="<?php echo $input['c']; ?>" size=3> <br> 
    Number D: <input type="text" name="input[d]" value="<?php echo $input['d']; ?>" size=3> <br>
    <br>
    Expression: <input type = "text" name = "expression" value="<?php echo $expression ?>">  = 
<?php echo $sum; ?><br>
    Sum: <?php echo $sum; ?><br>
    <input type="submit" name="Calculate" /> 
</form>

最新更新