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....
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?