как сохранить данные, которые пользователь вводил на странице формы после выполнения скрипта?

могу ли я знать, возможно ли сохранить данные из формы, которую пользователь вводил ранее?

Вот файл формы:

<!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, который выполняет данные формы, которые вводят пользователем.

  <?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 eg 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> с  <?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 eg 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 для хранения данных.

Данные, которые я хочу сохранить, – это дата рождения, rowone, rowtwo и третья строка. Создайте таблицу в mysql с dob как date, rowone, rowtwo и rowthree как varchar (255) и id как int (11).

Вот мой 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(); ?> 

и он показывает ошибку, как показано ниже: Примечание: Неопределенный индекс: dob в C: \ xampp \ htdocs \ mama \ inc \ insertdata.php в строке 18

Примечание. Неопределенный индекс: rowone в C: \ xampp \ htdocs \ mama \ inc \ insertdata.php в строке 18

Примечание. Неопределенный индекс: rowtwo в C: \ xampp \ htdocs \ mama \ inc \ insertdata.php в строке 18

Примечание: Неопределенный индекс: rowthree в C: \ xampp \ htdocs \ mama \ inc \ insertdata.php в строке 18 1 добавлена ​​запись Примечание: неопределенная переменная: mysqli в C: \ xampp \ htdocs \ mama \ inc \ insertdata.php on line 27

Неустранимая ошибка: вызов функции-члена close () для не-объекта в C: \ xampp \ htdocs \ mama \ inc \ insertdata.php в строке 27

Чтобы хранить данные, отправленные со страницы просмотра, я думаю, вам необходимо установить соединение между вашим приложением и вашей базой данных MySQL сначала в вашем count.php, а затем создать метод хранения ваших данных.

Вы можете увидеть эту ссылку:

http://www.w3schools.com/php/php_mysql_insert.asp

Надеюсь, поможет

Существует множество способов сделать это … используя клиентские библиотеки (jQuery, AngularJS, DOJO … и т. Д.), Которые могут выполнять валидацию с использованием вызовов AJAX, или если вы хотите использовать простой html с php, вы можете использовать что-то похожее это:

 <form action="count.php" method="post" action="post"> Name: <input type="text" name="customername" value="<?php echo $prevCName; ?>" /><br /> DOB: <input type="text" name="date" value="<?php echo $prevDate; ?>" /> <input type="text" name="month" value="<?php echo $prevMonth; ?>" /> <input type="text" name="year" value="<?php echo $prevYear; ?>" /><br /> First Row: <input type="text" name="rowone" value="<?php echo $prevROne; ?>" /><br /> Second Row: <input type="text" name="rowtwo" value="<?php echo $prevRTwo; ?>" /><br /> Third Row: <input type="text" name="rowthree" value="<?php echo $prevRThree; ?>" /><br /> <input type="submit" value="Go" /> </form> 

этот файл формы должен быть php-файлом, и вы должны убедиться, что предыдущие значения сохранены … либо в $ _SESSION, либо … в предыдущем файле, включая включает … требует … и т. д.

В конце вы просто хотите сделать следующее:

 $con=mysqli_connect($host,$user,$password,$db); $sql = "INSERT INTO tablename (dob,rowone,rowtwo,rowthree) VALUES (".$_POST['customername'].",".$_POST['date'].",".$_POST['month'].",".$_POST['year'].");" mysqli_query($con,$sql); 

Я использую mysqli в моем примере. Конечно, лучшим подходом является PDO: http://tw1.php.net/manual/en/book.pdo.php

В конце концов вы, конечно, захотите безопасности, поэтому вы будете использовать подготовленные заявления: http://php.net/manual/en/pdo.prepared-statements.php

Возможно, вы можете получить то, что хотите, используя find ('first') или find ('all').

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

Вы можете получить любое значение из таблицы / таблиц с определенным местоположением (id). Чтобы быть более понятным, элемент j: i-й строки.