获取类的结果以PHP输出

时间:2016-04-09 00:14:40

标签: php forms class

我试图使用一个类来计算数字并在屏幕上输出它们。用户输入数字,然后在表格上方的屏幕上计算和输出。

我使用post方法将表单结果发布到我正在使用的页面,然后尝试在Fibonacci类中使用它。

数字需要通过课程,然后根据用户输入的内容输出结果。我认为大多数情况都是正确的,但有些东西让我感到高兴,我可以&#39我很清楚。

提前致谢。

这是我的代码:

<?php

class Fibonacci {

    //method to check numbers
function checkFibo(){

        $n1 = $_POST["n1"];
        $n2 = $_POST["n2"];
        $output = "";
        if($n1!=0 && $n2!=0){
            if($n2<$n1){
                echo "Your second number must be greater than the first. Try again";        
                $output="Your second number must be greater than the first. Try again";
            }
           else if($n1<0 || $n2<0){
                echo "Please enter only positive numbers";

                $output = "Please enter positive numbers";
            }
            else if (!(is_numeric($n1)) || !(is_numeric($n2))){
                echo "Please only enter positive numbers";
                $output="";
            }
            else{
                echo "The result of your request is shown below.";
                $output=$fibo->getFibo($n1,$n2);
                echo $output;
            }
        }
        else{
                echo "<p>Please enter good values</p>";
        }


    }

     // Method to calculate fibonacci
    function getFibo($n1 = 0, $n2 = 0) {
        $max=$n2 * 100;
        $output = "";
        while($z<=$max){
                 $z = $n1 + $n2;
                $output.=($z."<br />");
                $n1 = $n2;
                $n2 = $z;
        }
        return $output;
    }


} // End of Fibonacci class.


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>Fibonacci</title>
</head>
<body>

<?php 
if (!empty($_POST)){
    $fib = new Fibonacci();
    echo "hello";
    echo $output;
} 


echo "<h2> Fibonacci Example </h2>";
echo "<form method=\"post\" action=\"index.php\">";
echo "<table>";
echo "<tr>";
echo "<td>First Number</td>";
echo "<td><input type=\"text\" name=\"n1\"/></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Second Number</td>";
echo "<td><input type=\"text\" name=\"n2\"/></td>";
echo "</tr>";
echo "<tr>";
echo "<td>&nbsp;</td>";
echo "<td><input type=\"submit\" value=\"go!\"/></td>";
echo "</table>";
echo "</form>";





?>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

查看代码,看起来变量$ output可能是个问题。

$output.=($z."<br />");

在没有实际声明或设置为开头的情况下,您对$output进行连接。

所以也许可以在while循环之前尝试$output = ""

答案 1 :(得分:1)

我想我看到了这个问题。

$output=$fibo->getFibo($n1,$n2);

我认为应该是:

$output = $this->getFibo($n1,$n2);

要测试,请在getFibo函数中放置一个echo语句,以查看是否有任何打印。您还可以运行$ output的var_dump并查看返回的内容。

还行:

$fib = new Fibonacci();
echo "hello";
echo $output;

应该是:

$fib = new Fibonacci();
echo "hello";
$fib->getFibo();

但你有另一个问题。它创造了一个无限循环。您希望确保$ z总是最终超过$ max,或者设置最大循环次数并突破已达到最大值。