执行脚本后如何保存用户在表单页面输入的数据? [英] how to save the data that the user input in form page after the script executed?

查看:91
本文介绍了执行脚本后如何保存用户在表单页面输入的数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是否可以保存用户之前输入的表格中的数据?

may I know is it possible to save the data from the form which the user input earlier?

这是表单文件:

    <!DOCTYPE HTML>
    <html>
    <head>
        <meta http-equiv="content-type" content="text/html" />        
        <title>Data</title>
        <style type="text/css">
        input {
            background-color: #999;
            border-style: solid;
            border-color: #999;
            border: 0px 4px 0px 4px;
            padding: 3px 6px 3px 6px;
            margin: 10px 0;
        }
        input:focus {
            border-style: solid;
            border-color: black;
        }
        </style>
    </head>

    <body>

    <form action="count.php" method="post" action="post">
    Name: <input type="text" name="customername" /><br />
    DOB: <input type="text" name="date" /> <input type="text" name="month" /> <input type="text" name="year" /><br />
    First Row: <input type="text" name="rowone" /><br />
    Second Row: <input type="text" name="rowtwo" /><br />
    Third Row: <input type="text" name="rowthree" /><br />
    <input type="submit" value="Go" />
    </form>

    </body>
    </html>

这是执行用户输入的表单数据的php.

And here is the php that execute the form data that input by the user.

 <?php
    $cname = $_POST['customername'];
    $dob_date = $_POST['date'];
    $dob_month = $_POST['month'];
    $dob_year = $_POST['year'];
    $year = gmdate("Y");
    $month = gmdate("m");
    $day = gmdate("d");
    $age = $year - $dob_year; // $age calculates the user's age determined by only the year
    if ($month < $dob_month) { // this checks if the current month is before the user's month of birth
        $age = $age - 1;
    } else if (
            $month == $dob_month && $day >= $dob_date) { // this checks if the current month is the same as the user's month of birth and then checks if it is the user's birthday or if it is after it
        $age = $age;
    } else if ($month == $dob_month && $day < $dob_date) { //this checks if the current month is the user's month of birth and checks if it before the user's birthday
        $age = $age - 1;
    }

    //add all initial data into an matrix variable for easier access to them later
    //To access rowone use $rows[0][0], rowtwo $rows[1][0] ect.
    //The matrix is an array which contains multiple array. eg. 2-dimensional arrays
    //To get all the variables with $r1X simply retrieve the first array of the matrix eg $rows[0]
    $rows = array(array($_POST['rowone']), array($_POST['rowtwo']), array($_POST['rowthree']), array());

    //Similarities between row1 and row2 made me incoporate modulo value as an argument.
    function incmod($a, $m) {
        return ($a % $m) + 1;
    }

    //Population each row, with $populationCount number of elements, where each element is added with incmod(X, $mod)
    function populateRow($rowId, $populationCount, $mod) {
        //The global keyword is needed in order for the function to access the global variable.
        global $rows;
        $row = $rows[$rowId];
        while (sizeof($row) < $populationCount) {
            $rowInd = sizeof($row) - 1;
            $m = incmod($row[$rowInd], $mod);
            array_push($row, $m);
        }

        //Due to how php works with variables and references we need to set the row back into the global variable.
        $rows[$rowId] = $row;
    }

    //This function makes sure that the values allways are between 1 and 12.
    function bindToRange($v) {
        if ($v == 0)
            return 1;
        return ($v - 1) % 12 + 1;
    }

    //Population the first three rows
    populateRow(0, 7, 7);
    populateRow(1, 12, 12);
    populateRow(2, 12, 12);

    //Creating the forth row by nested forloops.
    //The first loop iterates over the entries in a row (in your example this would be the letters e.g r1a r1b ect)
    //The second (inner) loop iterates of the rows (in you example this would be the number you had in your variables.)
    //The sum over each of the three rows are added, then bound to 1-12 range, before being added to the forth row.
    for ($cId = 0; $cId < 7; $cId++) {
        $sum = 0;
        for ($rId = 0; $rId < 3; $rId++) {
            $sum += $rows[$rId][$cId];
        }
        array_push($rows[3], bindToRange($sum));
    }

    //Same as above, but for the last two remaining values. Should give a total of nine entries in the forth row.
    for ($cId = 7; $cId < 12; $cId++) {
        $sum = 0;
        for ($rId = 1; $rId < 3; $rId++) {
            $sum += $rows[$rId][$cId];
        }
        array_push($rows[3], bindToRange($sum));
    }

    function lower_than_2($var){
        return ($var > 1);
    }
    $cssClassName = "match";

    // array_count_values will count how many times each value is in the array
    $cssBase = array_count_values($rows[3]);
    // remove from array values that are lower than 2
    $cssBase = array_filter($cssBase, "lower_than_2");

    $cssNumber = array();
    $cssCounter = 1;
    // make $cssNumber be a mirror of $cssBase (same keys), but with serial values
    foreach ($cssBase as $key => $value) {
        $cssNumber[$key] = $cssCounter;
        $cssCounter++;
    }
    unset($cssCounter);
    // ------------------------------------------------

    ?>
    <!DOCTYPE HTML>
    <html>
        <head>
            <meta http-equiv="content-type" content="text/html" />
            <title>Result</title>
            <link rel="stylesheet" type="text/css" href="./css/style.css" />
        </head>

        <body>
            Customer Name: <?php echo $cname; ?><br />
            DOB: <?php echo $dob_date; ?> / <?php echo $dob_month; ?> / <?php echo $dob_year; ?><br />
            <b><?php echo $age; ?></b> Years Old
            <table>
                <?php
                //Instead of listing up (hard-coded) I've used nested forloops to generate the html.
                //The loops are similar to the ones above, but use sizeof keyword to figure out how many iterations it needs.

                $lines = sizeof($rows)+1; // $rows have 4 rows, we will need 1 more
                for ($rId = 0; $rId < $lines; $rId++) {
                    echo "<tr>\n";

                    if($rId < 3){
                        $row = $rows[$rId];
                        $rowSize = sizeof($row);

                        for ($cId = 0; $cId < $rowSize; $cId++) {
                            echo "<td>" . $row[$cId] . "</td>\n";
                        }
                    } else if($rId == 3){
                        $row = $rows[$rId];
                        $rowSize = sizeof($row);

                        for ($cId = 0; $cId < $rowSize; $cId++) {
                            echo "<td"; // open td
                            // if the value is in cssBase array, we will apply a css class
                            if(array_key_exists($row[$cId], $cssBase))
                                echo ' class="'. $cssClassName . $cssNumber[$row[$cId]] .'"';
                            echo ">"; // close td
                            echo $row[$cId];
                            echo "</td>\n";
                        }
                    } else if($rId == 4){
                        for ($cId = 0; $cId < 12; $cId++) {
                            if($cId == (($age-1)%12)){
                                echo '<td>'. "$age Years Old" .'</td>'."\n";
                            } else {
                                echo "<td></td>\n";
                            }
                        }
                    }
                    echo "</tr>\n";
                }

    // ------------------------------------------------

                ?>
            </table><br /><br />
            <a href="./" target="_blank" title="Calculate Again">Calculate Again</a>

        </body>
    </html>

是否可以在count.php页面上添加一个保存按钮,并且该值将是用户在表单页面前面键入的那个按钮.保存按钮将在同一页面中回显已保存数据",或者如果存在则将回显已存在数据".如果是,我需要使用什么方法?我在搜寻google时是全新的,我找不到确切的答案.我已经在mysql中创建表来存储数据.

Is it possible to add a save button on the count.php page and the value will be the one that the user key in earlier in the form page. And the save button will echo "Data Saved" or if exist it will echo "Data Already Existed" whithin the same page. If yes, what is the method i need to use? I'm totally new as i search google, i couldnt find exactly the answer that i need. I already create table in mysql to store the data.

我要存储的数据是出生日期,行号,行第二和行三. 在mysql中创建表,其中dob为日期,rowone,rowtwo和rowthree为varchar(255),id为int(11).

The data that i want to store is the Date of Birth, rowone, rowtwo and row three. Create table in mysql with dob as date, rowone, rowtwo and rowthree as varchar (255) and id as int (11).

这是我的insertdata.php

Here is my insertdata.php

  <?php

    $dbhost = "localhost";

    $dbuser = "root";

    $dbpass = "";

    $dbname = "mama";

    class dob {
        public function set_dob($dob_date, $dob_month, $dob_year) {
            $this->dob = $dob_date.'/'.$dob_month.'/'.$dob_year;
        }
    }

    $con=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
    $sql="INSERT INTO profile (dob,rowone,rowtwo,rowthree) VALUES ('$_POST[dob]','$_POST[rowone]','$_POST[rowtwo]','$_POST[rowthree]')";

    if (!mysqli_query($con,$sql))
      {
      die('Error: ' . mysqli_error($con));
      }
    echo "1 record added";

    /* close connection */
    $mysqli->close();
    ?>

,它显示如下错误: 注意:未定义的索引:第18行的C:\ xampp \ htdocs \ mama \ inc \ insertdata.php中的dob

and it shows error as below: Notice: Undefined index: dob in C:\xampp\htdocs\mama\inc\insertdata.php on line 18

注意:未定义的索引:第18行的C:\ xampp \ htdocs \ mama \ inc \ insertdata.php中的行

Notice: Undefined index: rowone in C:\xampp\htdocs\mama\inc\insertdata.php on line 18

注意:未定义的索引:第18行的C:\ xampp \ htdocs \ mama \ inc \ insertdata.php中的第二行

Notice: Undefined index: rowtwo in C:\xampp\htdocs\mama\inc\insertdata.php on line 18

注意:未定义的索引:第18行的C:\ xampp \ htdocs \ mama \ inc \ insertdata.php中的rowthree 添加了1条记录 注意:未定义变量:第27行的C:\ xampp \ htdocs \ mama \ inc \ insertdata.php中的mysqli

Notice: Undefined index: rowthree in C:\xampp\htdocs\mama\inc\insertdata.php on line 18 1 record added Notice: Undefined variable: mysqli in C:\xampp\htdocs\mama\inc\insertdata.php on line 27

致命错误:在第27行的C:\ xampp \ htdocs \ mama \ inc \ insertdata.php中的非对象上调用成员函数close()

Fatal error: Call to a member function close() on a non-object in C:\xampp\htdocs\mama\inc\insertdata.php on line 27

推荐答案

也许您可以使用find('first')或find('all')来获得想要的东西.

Maybe you can get what you want by using find('first') or find('all').

$ex = $this->find('first' , array(
 'condition' => array ('model_name.id' => 22 //specific id
)));

您可以从具有特定位置(id)的一个或多个表中获取任何值. 更清楚地说,例如:第i行第j列的元素.

You can get any value from table/tables with specific location (id). To be more clear, ex: i th row's j th column's element.

这篇关于执行脚本后如何保存用户在表单页面输入的数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆