dragon0023 2014-05-25 13:07
浏览 71
已采纳

PHP表单未声明

Newb here trying to build a form that works with ints to count how many red shirts die in a classic episode of star trek (exercise to get better with forms and ints). I have an error which reads as '7 Error message: Undefined index: rsTot'. I have tried a few things and read that setting it(casting it?) as a float was the safest way to work with the int, however each thing i've attempted results in some sort of error so after a day of reading and trying i'm very confused and hoping for an answer I can understand here.

I have read through stackOverflow for an answer but not seen one which i can understand and apply that speaks to the problem i'm having of initially entering and process a number as an int which i can later do some math on.

    <?php //w03c0102_OOPform

    require '../inc_0700/config_inc.php'; #provides configuration, pathing, error handling, db credentials

    //END CONFIG AREA ----------------------------------------------------------

    $rsTot = (float)$_POST['rsTot'];// float more forgiving int
    $rsSurvived = (float)$_POST['rsSurvived'];


    $rsSum = $rsTot - $rsSurvived;
    $rsRatio = 0;


    # Read the value of 'action' whether it is passed via $_POST or $_GET with $_REQUEST
    if(isset($_REQUEST['act'])){$myAction = (trim($_REQUEST['act']));}else{$myAction = "";}

    switch ($myAction)
    {//check 'act' for type of process
        case "display": # 2)Display user's name!
            showName();
            break;
        default: # 1)Ask user to enter their name
            showForm();
    }

    function showForm()
    {# shows form so user can enter their name.  Initial scenario
        get_header(); #defaults to header_inc.php
    ?>
        <script type="text/javascript" src="<?=VIRTUAL_PATH;?>include/util.js"></script>
        <script type="text/javascript">
            function checkForm(thisForm)
            {//check form data for valid info
                if(empty(thisForm.YourName,"Field Empty, please fill out")){return false;}
                return true;//if all is passed, submit!
            }
        </script>
        <p align="center"><?=smartTitle();?></p>
        <h3 align="center">Star Trek Classic</h3>
        <h2 align="center">Death-Shirt Calculator</h2>

        <form action="<?=THIS_PAGE;?>" method="post" onsubmit="return checkForm(this);">
            <p align="center">Classic Star Trek Episode Name<br />
                <input type="text" name="epName" /><br /><br />

                Esitmated number of officers with red shirts<br />
                <input type="text" name="rsTot" /><br /><br />

                Esitmated number of officers with red shirts<br />
                to actually survive the episode<br />
                <input type="int" name="rsSurvived" /><br /><br />

                <input type="submit" value="Go!">
                </p>
            <input type="hidden" name="act" value="display" />
        </form>
    <?php
        get_footer(); #defaults to footer_inc.php

    }

    function showName()
    {#form submits here we show entered name
        get_header(); #defaults to footer_inc.php
        if(!isset($_POST['epName']) || $_POST['epName'] == '')
        {//data must be sent
            feedback("No form data submitted"); #will feedback to submitting page via session variable
            myRedirect(THIS_PAGE);
        }

        if(!ctype_alnum($_POST['epName']))
        {//data must be alphanumeric only
            feedback("Only letters and numbers are allowed.  Please re-enter your name."); #will feedback to submitting page via session variable
            myRedirect(THIS_PAGE);
        }

        $epSubmitted = strip_tags($_POST['epName']);# strip data entered

        echo '<h3 align="center">' . smartTitle() . '</h3>';
        echo '<p align="center">Episode Name: <b>' . $epSubmitted . '</b><br />';

        echo '<p align="center">Total Red Shirts Appearing: <b>' . $rsTot . '<br />';

        echo 'Red Shirts Still Breathing at End of Episode: <b>' . $rsSurvived . '<br />';
        echo 'Red Shirt Episode Survival Ratio: <b>' . $rsRatio . '</b>!</p>';


        echo '<p align="center"><a href="' . THIS_PAGE . '">RESET</a></p>';
        get_footer(); #defaults to footer_inc.php
    }
    ?>
  • 写回答

1条回答

  • duanhuan2301 2014-05-25 13:20
    关注

    Well as the error say, $_POST['rsTot'] that index does not exist and it is simple because on first load of page you do not have any POST values...

    So basicaly you need to do something like this:

    //your hidden field, in other words if form was submitted
    if(isset($_POST['act']))
    {
        $rsTot = (float)$_POST['rsTot'];// float more forgiving int
        $rsSurvived = (float)$_POST['rsSurvived'];
    
    
        $rsSum = $rsTot - $rsSurvived;
        $rsRatio = 0;
    
        and do all other stuff based on form input here....
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 arduino控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥85 maple软件,solve求反函数,出现rootof怎么办?
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿