繁体   English   中英

PHP:清除/重置表格提交给自己

[英]PHP: Clear/reset form which submits to self

纽伯在这里。

网站网址: http//school.max-o-matic.com/itc250.php#011

我的学生门户网站上有两项作业,它们都是表格,我希望能够重设/清除它们。 我知道我可以创建一个按钮来清除它们,以将用户从“ http://school.max-o-matic.com/itc250.php#011 ”发送到“ http://school.max-o-matic .com / itc250.php ”,它将删除锚标记,并重新加载页面以清除/重置过程中的表单。 但这也需要滚动。 我还可以创建第二个锚标记('#011b'),并将其包含在不可见的元素中,然后将页面重新加载到该标记中,以保持/防止滚动,但这对我来说似乎是作弊/肮脏的技巧,而不是良好的编程习惯。

我试图使用它来重置表单(“ echo”),但是它似乎没有任何作用。 因此,我希望有人能够帮助我找到一种实现最终目标的好方法,即拥有一个可重复的工具来清除/重置页面,以便我可以测试多种情况而无需连续滚动/重新滚动。

<?php

    //Constant never changes, 100% available everywhere- almost always simple datatypes (T or F, num, string)
    //define('THIS_PAGE', $_SERVER['PHP_SELF']);//shows webroot
    define('THIS_PAGE', basename($_SERVER['PHP_SELF']));//shows app root - gets name of the file basically

    define('TAX_RATE', .095); //current tax rate us => .095 => is 9.5%

    //echo THIS_PAGE;// shows this pagefile
    //VAR_DUMP - we love it cause we can see everything


    if (isset($_POST['submit'])) {//if data, do processing

        $purch01 = (float) $_POST['purchase01'];//float before floats data after
        $purch02 = (float) $_POST['purchase02'];//float before floats data after

        $subtotal = $purch01 + $purch02;

        $amountTax = TAX_RATE * $subtotal;

        $amountTotal = $amountTax + $subtotal;

        echo "<br /><br />";

        echo 'First Purchase: $' . round($purch01, 2) . '<br />';//standard
        echo 'First Purchase: $' . round($purch02, 2) . '<br />';//standard
        echo '<hr />';

        echo 'Subtotal before tax: $' . round($subtotal, 2) . '<br />';//standard
        echo 'Tax: $' . round($amountTax, 2) . '<br />';//standard
        echo '<hr />';

        echo 'Washington state tax: %' . TAX_RATE . '<br />';
        echo '<hr />';

        echo 'your purchase amount is $' . round($amountTotal, 2) . '<br /><br />';//risky double dollar sign


        /*
        echo '<pre>';
            var_dump($_POST); //shows everything the post knows
        echo '</pre>';
        */
        echo '<input type="reset" "reset the form." /><br /><br /><hr />';


    }else{//show Output

        echo
        '
            <form method="post" action="itc250.php#011">

                Enter Purchase Amount:
                <input type="text" name="purchase01" />
                <br />
                <br />

                Enter Purchase Amount:
                <input type="text" name="purchase02" />
                <br />

                <input type="submit" name="submit" />
        ';

    }//if you dont' need else, do a 'print and die statement' so if else happens you know else happened.

?>

重新加载页面以清除表单是不好的做法,并且内置了所需的功能:

<input type="reset" value="Clear" />

进一步阅读: https : //developer.mozilla.org/en-US/docs/Web/HTML/Element/Input

你为什么不做一些简单的事情:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<input type="submit" name="reset" value="reset">
</form>

可行且干净,我真的没有看到其中的“坏习惯”吗?

我找到了一个解决方案,如下所示:

我在头上添加:

<script> function reloadPage() { location.reload(); } </script>

在正文中,我添加了:

<input type="button" value="Reload page" onclick="reloadPage()">

这可以满足我的要求,而且我可以一遍又一遍地整齐地应用它,这很酷。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM