首页 新闻 会员 周边

一个最简单的PHP计算,火狐提示我未定义,看代码就懂得了

0
悬赏园豆:15 [已解决问题] 解决于 2014-04-01 16:55
<html>
    <head>
        <title>这是一个计算器实例</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    </head>
    <body>
        <table align="center" border="1" width="500">
            <caption><h1>计算器</h1></caption>
                <form>
    <?php 
    //定义num11 num22 numa numb 分别判断是否输入为空或者输入非数字 
                        $num11=true;
                        $num22=true;
                        $numa=true;
                        $numb=true;
                        $message="";
                        //单路分支
                        if(isset($_GET["sub"])){
                            if($_GET["num1"]==""){
                                $numa=false;
                                $message.="第一个输入为空";
                            }
                            if(!is_numeric($_GET["num1"])){
                                $num11=false;
                                $message.="第一个输入不是数字";
                            }
                            if($_GET["num2"]==""){
                                $numb=false;
                                $message.="第二个输入为空";
                            }
                            if(!is_numeric($_GET["num2"])){
                                $num22=false;
                                $message.="第二个输入不是数字";
                            }
                            if($num11 && $num22 && $numa && $numb){
                            $sum=0;
                            //多路分支
                            switch ($_GET["ysf"]){
                                case "+":
                                    $sum=$_GET["num1"]+$_GET["num2"];
                                    break;
                                case "-":
                                    $sum=$_GET["num1"]-$_GET["num2"];
                                    break;
                                case "x":
                                    $sum=$_GET["num1"]*$_GET["num2"];
                                    break;
                                case "/":
                                    $sum=$_GET["num1"]/$_GET["num2"];
                                    break;
                                case "%":
                                    $sum=$_GET["num1"]%$_GET["num2"];
                                    break;
                            }
                            }
                        }
    ?>
                    <tr>
                        <td>
                                        <!-- 火狐提示我下列num1未定义 -->
                            <input type="text" size="5" name="num1" value="<?php echo $_GET["num1"];?>">
                        </td>
                        <td>
                            <select name="ysf">
                            <!-- 火狐提示我ysf未定义 -->
                            <option value="+" <?php if($_GET["ysf"]=="+") echo "selected"?> >+</option>
                            <option value="-" <?php if($_GET["ysf"]=="-") echo "selected"?> >-</option>
                            <option value="x" <?php  echo $_GET["ysf"]=="x"? "selected" :""?> >x</option>
                            <option value="/" <?php  echo $_GET["ysf"]=="/"? "selected" :""?> >/</option>
                            <option value="/" <?php  echo $_GET["ysf"]=="%"? "selected" :""?> >%</option>
                        </select>
                    </td>
                    <td>
                        <input type="text" size="5" name="num2" value="<?php echo $_GET["num2"];?>">
                    </td>
                    <td>
                        <input type="submit" name="sub" value="计算">
                    </td>
                </tr>
            <?php 
                if(isset($_GET["sub"])){
                    echo'<tr><td colspan="4">';
                    if($num11 && $num22 && $numa && $numb){    
                        echo"结果:".$_GET["num1"]." " .$_GET["ysf"]." ".$_GET["num2"]." = ".$sum;
                        }else{
                            echo $message;
                            } 
                    echo'</td></tr>';
                }
            ?>
            </form>
        </table>
    </body>
</html>

 

庆小伟的主页 庆小伟 | 初学一级 | 园豆:125
提问于:2014-04-01 12:43
< >
分享
最佳答案
-2

你是第一次运行这个程序时报的错吧。在你的页面load出来的时候,$_GET['num1']是什么?存在吗?你还没有提交表单呢。所有你出错,解决办法,在$_GET前加个@.

收获园豆:10
酱油能 | 菜鸟二级 |园豆:386 | 2014-04-01 14:02

恩,我刚开始也这么想的,于是我定义了global $num1 ,不好使,只能说这个表单没提交时,没有$num1这个变量,所以会报错,但是我看的视频却没有这个问题,他用的是ie浏览器,我用的是火狐,现在在$_GET前加@已经不会报错了,现在我想知道这是最合理的解决办法么?因为我现在正在学习,所以有些问题我感觉还是深加了解的好,谢谢您,现在问题已经基本解决了。

庆小伟 | 园豆:125 (初学一级) | 2014-04-01 14:23

@庆小伟: 可以这样:在<form></form>中间设置一个<input type="hidden" name="IsPostBack" value="1">,在PHP中判断,isset("$_GET['IsPostBack']") 或者 isset("$_POST['IsPostBack']")。

用PHP的话,学个框架吧,能帮你加快很多速度。个人推荐CodeIgniter框架,这个框架的文档相当好。希望帮助到你,我自己一个是个菜鸟。

酱油能 | 园豆:386 (菜鸟二级) | 2014-04-01 15:10
其他回答(2)
0

你的url里面有num1,ysf吗?

收获园豆:2
幻天芒 | 园豆:37175 (高人七级) | 2014-04-01 13:58

这个不是自动获取的么?我没加url

支持(0) 反对(0) 庆小伟 | 园豆:125 (初学一级) | 2014-04-01 14:23
0

当你第一次运行的时候,页面上的num1 是没有任何的赋值过程   所以他会报错为空    加个@

收获园豆:3
玩世不恭的雷寅 | 园豆:38 (初学一级) | 2014-04-01 14:15

还有别的更好更合理的办法么?

支持(0) 反对(0) 庆小伟 | 园豆:125 (初学一级) | 2014-04-01 14:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册