php - 插入新数据时丢失旧数据
php - missing old data when insert new data
我有两个 File , index.php 和 ClassProveContakt.php 。我必须建立一个 Form 数据我的 ClassProveContakt.php ,在 index.php 中显示数据和 Webformular 。每次写入数据(姓名,电子邮件和消息)时都会显示它,但是如果我写入新数据,旧日期丢失并且更改为我的新数据....
我的问题,我怎样才能让所有新旧数据保留在 index.php.
ClassProveContakt.php代码:
<?php
header('Content-Type: text/html; Charset=utf-8');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Paris');
error_reporting(-1);
class ClassProveContakt
{
private $Name;
private $Email;
private $Message;
function __construct()
{
$this->Name="";
$this->Email="";
$this->Message="";
}
function Form()
{
echo('<table>');
echo('<label for="name">Name </label>');
echo('<input type="text" name="Name" value="'.$this->Name.'">');
echo('<label for="email"> Email </label>');
echo('<input type="email" value="'.$this->Email.'" name="Email" ');
echo('<tr>');
echo('<td>');
echo('<br>');
echo('<label> Message: <br><textarea cols="45" rows="6" name="Message">'.$this->Message.'</textarea></label>');
echo('<br><br>');
echo('<input type="submit" name="post" value="POST COMMENT" id="comment">');
echo('</td>');
echo('</tr>');
echo('</table>');
}
function PostOk()
{
if(empty($_POST['Name']) ||
empty($_POST['Email']) ||
empty($_POST['Message']))
{
echo "<br>" . "<b>" . "<h3>*** Please enter all required fields ***</h3>" . "</b>";
$this->Name=$_POST["Name"];
$this->Email=$_POST["Email"];
$this->Message=$_POST["Message"];
}
else {
$name = filter_input( INPUT_POST, 'Name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'Email', FILTER_SANITIZE_STRING);
$message = filter_input(INPUT_POST, 'Message', FILTER_SANITIZE_STRING);
$datetime = date('m/d/Y h:i:s a', time());
echo "<br>"
. "<b>From: </b>" . htmlspecialchars( $name)
. "<b> at: </b>" . htmlspecialchars( $datetime)
. "<br><br>" . htmlspecialchars( $message)
. "<br><hr>";
}
}
}
?>
index.php代码:
<?php
include 'ClassProveContakt.php';
header('Content-Type: text/html; Charset=utf-8');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Paris');
error_reporting(-1);
$ProveContackt=new ClassProveContakt();
?>
<!DOCTYPE html>
<html lang="en_mx">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form name="form" id="form" method="post" action="" >
<?php
$ProveContackt->form();
$ProveContackt->PostOk();
?>
</form>
</body>
</html>
截图我的页面如何显示https://i.imgur.com/xSstxcD.png
因此,作为评论,我将此解决方案发送给您。
恢复数据:
$json_get_data = file_get_contents('myfile.json');
保存数据:
file_put_contents('myfile.json', $save_data);
ClassProveContakt.php代码:
<?php
header('Content-Type: text/html; Charset=utf-8');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Paris');
error_reporting(-1);
class ClassProveContakt {
private $Name;
private $Email;
private $Message;
function __construct() {
$this->Name="";
$this->Email="";
$this->Message="";
}
function Form() {
echo('<table>');
echo('<label for="name">Name </label>');
echo('<input type="text" name="Name" value="'.$this->Name.'">');
echo('<label for="email"> Email </label>');
echo('<input type="email" value="'.$this->Email.'" name="Email" ');
echo('<tr>');
echo('<td>');
echo('<br>');
echo('<label> Message: <br><textarea cols="45" rows="6" name="Message">'.$this->Message.'</textarea></label>');
echo('<br><br>');
echo('<input type="submit" name="post" value="POST COMMENT" id="comment">');
echo('</td>');
echo('</tr>');
echo('</table>');
}
function PostOk() {
if(empty($_POST['Name']) || empty($_POST['Email']) || empty($_POST['Message'])) {
echo "<br>" . "<b>" . "<h3>*** Please enter all required fields ***</h3>" . "</b>";
$this->Name=$_POST["Name"];
$this->Email=$_POST["Email"];
$this->Message=$_POST["Message"];
} else {
$json_get_data = file_get_contents('myfile.json');
$array_data = (array)json_decode($json_get_data);
$name = filter_input( INPUT_POST, 'Name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'Email', FILTER_SANITIZE_STRING);
$message = filter_input(INPUT_POST, 'Message', FILTER_SANITIZE_STRING);
$datetime = date('m/d/Y h:i:s a', time());
$data = new stdClass();
$data->name = $name;
$data->email = $email;
$data->message = $message;
$data->datetime = $datetime;
$array_data[] = $data;
$save_data = json_encode($array_data);
file_put_contents('myfile.json', $save_data);
foreach ($array_data as $key => $value) {
echo "<br>"
. "<b>From: </b>" . htmlspecialchars( $value->name)
. "<b> at: </b>" . htmlspecialchars( $value->datetime)
. "<br><br>" . htmlspecialchars( $value->message)
. "<br><hr>";
}
}
}
}
?>
和index.php代码保持不变:
<?php
include 'ClassProveContakt.php';
header('Content-Type: text/html; Charset=utf-8');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Paris');
error_reporting(-1);
$ProveContackt=new ClassProveContakt();
?>
<!DOCTYPE html>
<html lang="en_mx">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form name="form" id="form" method="post" action="" >
<?php
$ProveContackt->form();
$ProveContackt->PostOk();
?>
</form>
</body>
</html>
所以,现在我只能用 php 代码,没有 Json...
@雨果,谢谢,你给我指路....
index.php 保持相同,在 ClassProveContakt.php 我必须更改为...
<?php
header('Content-Type: text/html; Charset=utf-8');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Paris');
error_reporting(-1);
class ClassProveContakt {
private $Name;
private $Email;
private $Message;
function __construct() {
$this->Name="";
$this->Email="";
$this->Message="";
}
function Form() {
echo('<table>');
echo('<label for="name">Name </label>');
echo('<input type="text" name="Name" value="'.$this->Name.'">');
echo('<label for="email"> Email </label>');
echo('<input type="email" value="'.$this->Email.'" name="Email" ');
echo('<tr>');
echo('<td>');
echo('<br>');
echo('<label> Message: <br><textarea cols="45" rows="6" name="Message">'.$this->Message.'</textarea></label>');
echo('<br><br>');
echo('<input type="submit" name="post" value="POST COMMENT" id="comment">');
echo('</td>');
echo('</tr>');
echo('</table>');
}
function PostOk() {
$file = "test.txt";
$this->Name=$_POST["Name"];
$this->Email=$_POST["Email"];
$this->Message=$_POST["Message"];
if(empty($_POST['Name']) || empty($_POST['Email']) || empty($_POST['Message'])) {
echo "<br>" . "<b>" . "<h3>*** Please enter all required fields ***</h3>" . "</b>";
}
else
{
$name = filter_input( INPUT_POST, 'Name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'Email', FILTER_SANITIZE_STRING);
$message = filter_input(INPUT_POST, 'Message', FILTER_SANITIZE_STRING);
$datetime = date('m/d/Y h:i:s a', time());
$data = array("name" => $name, "email" => $email, "message" => $message, "datetime" => $datetime);
$data = serialize($data);
file_put_contents($file, $data . "\n", FILE_APPEND|LOCK_EX);
}
$messages = file($file);
foreach ($messages as $value) {
$data = unserialize($value);
echo "<br>"
. "<b>From: </b>" . htmlspecialchars( $data["name"])
. "<b> at: </b>" . htmlspecialchars( $data["datetime"])
. "<br><br>" . htmlspecialchars( $data["message"])
. "<br><hr>";
}
}
}
?>
我的截图现在怎么显示it
我有两个 File , index.php 和 ClassProveContakt.php 。我必须建立一个 Form 数据我的 ClassProveContakt.php ,在 index.php 中显示数据和 Webformular 。每次写入数据(姓名,电子邮件和消息)时都会显示它,但是如果我写入新数据,旧日期丢失并且更改为我的新数据....
我的问题,我怎样才能让所有新旧数据保留在 index.php.
ClassProveContakt.php代码:
<?php
header('Content-Type: text/html; Charset=utf-8');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Paris');
error_reporting(-1);
class ClassProveContakt
{
private $Name;
private $Email;
private $Message;
function __construct()
{
$this->Name="";
$this->Email="";
$this->Message="";
}
function Form()
{
echo('<table>');
echo('<label for="name">Name </label>');
echo('<input type="text" name="Name" value="'.$this->Name.'">');
echo('<label for="email"> Email </label>');
echo('<input type="email" value="'.$this->Email.'" name="Email" ');
echo('<tr>');
echo('<td>');
echo('<br>');
echo('<label> Message: <br><textarea cols="45" rows="6" name="Message">'.$this->Message.'</textarea></label>');
echo('<br><br>');
echo('<input type="submit" name="post" value="POST COMMENT" id="comment">');
echo('</td>');
echo('</tr>');
echo('</table>');
}
function PostOk()
{
if(empty($_POST['Name']) ||
empty($_POST['Email']) ||
empty($_POST['Message']))
{
echo "<br>" . "<b>" . "<h3>*** Please enter all required fields ***</h3>" . "</b>";
$this->Name=$_POST["Name"];
$this->Email=$_POST["Email"];
$this->Message=$_POST["Message"];
}
else {
$name = filter_input( INPUT_POST, 'Name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'Email', FILTER_SANITIZE_STRING);
$message = filter_input(INPUT_POST, 'Message', FILTER_SANITIZE_STRING);
$datetime = date('m/d/Y h:i:s a', time());
echo "<br>"
. "<b>From: </b>" . htmlspecialchars( $name)
. "<b> at: </b>" . htmlspecialchars( $datetime)
. "<br><br>" . htmlspecialchars( $message)
. "<br><hr>";
}
}
}
?>
index.php代码:
<?php
include 'ClassProveContakt.php';
header('Content-Type: text/html; Charset=utf-8');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Paris');
error_reporting(-1);
$ProveContackt=new ClassProveContakt();
?>
<!DOCTYPE html>
<html lang="en_mx">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form name="form" id="form" method="post" action="" >
<?php
$ProveContackt->form();
$ProveContackt->PostOk();
?>
</form>
</body>
</html>
截图我的页面如何显示https://i.imgur.com/xSstxcD.png
因此,作为评论,我将此解决方案发送给您。
恢复数据:
$json_get_data = file_get_contents('myfile.json');
保存数据:
file_put_contents('myfile.json', $save_data);
ClassProveContakt.php代码:
<?php
header('Content-Type: text/html; Charset=utf-8');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Paris');
error_reporting(-1);
class ClassProveContakt {
private $Name;
private $Email;
private $Message;
function __construct() {
$this->Name="";
$this->Email="";
$this->Message="";
}
function Form() {
echo('<table>');
echo('<label for="name">Name </label>');
echo('<input type="text" name="Name" value="'.$this->Name.'">');
echo('<label for="email"> Email </label>');
echo('<input type="email" value="'.$this->Email.'" name="Email" ');
echo('<tr>');
echo('<td>');
echo('<br>');
echo('<label> Message: <br><textarea cols="45" rows="6" name="Message">'.$this->Message.'</textarea></label>');
echo('<br><br>');
echo('<input type="submit" name="post" value="POST COMMENT" id="comment">');
echo('</td>');
echo('</tr>');
echo('</table>');
}
function PostOk() {
if(empty($_POST['Name']) || empty($_POST['Email']) || empty($_POST['Message'])) {
echo "<br>" . "<b>" . "<h3>*** Please enter all required fields ***</h3>" . "</b>";
$this->Name=$_POST["Name"];
$this->Email=$_POST["Email"];
$this->Message=$_POST["Message"];
} else {
$json_get_data = file_get_contents('myfile.json');
$array_data = (array)json_decode($json_get_data);
$name = filter_input( INPUT_POST, 'Name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'Email', FILTER_SANITIZE_STRING);
$message = filter_input(INPUT_POST, 'Message', FILTER_SANITIZE_STRING);
$datetime = date('m/d/Y h:i:s a', time());
$data = new stdClass();
$data->name = $name;
$data->email = $email;
$data->message = $message;
$data->datetime = $datetime;
$array_data[] = $data;
$save_data = json_encode($array_data);
file_put_contents('myfile.json', $save_data);
foreach ($array_data as $key => $value) {
echo "<br>"
. "<b>From: </b>" . htmlspecialchars( $value->name)
. "<b> at: </b>" . htmlspecialchars( $value->datetime)
. "<br><br>" . htmlspecialchars( $value->message)
. "<br><hr>";
}
}
}
}
?>
和index.php代码保持不变:
<?php
include 'ClassProveContakt.php';
header('Content-Type: text/html; Charset=utf-8');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Paris');
error_reporting(-1);
$ProveContackt=new ClassProveContakt();
?>
<!DOCTYPE html>
<html lang="en_mx">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form name="form" id="form" method="post" action="" >
<?php
$ProveContackt->form();
$ProveContackt->PostOk();
?>
</form>
</body>
</html>
所以,现在我只能用 php 代码,没有 Json...
@雨果,谢谢,你给我指路....
index.php 保持相同,在 ClassProveContakt.php 我必须更改为...
<?php
header('Content-Type: text/html; Charset=utf-8');
mb_internal_encoding('UTF-8');
date_default_timezone_set('Europe/Paris');
error_reporting(-1);
class ClassProveContakt {
private $Name;
private $Email;
private $Message;
function __construct() {
$this->Name="";
$this->Email="";
$this->Message="";
}
function Form() {
echo('<table>');
echo('<label for="name">Name </label>');
echo('<input type="text" name="Name" value="'.$this->Name.'">');
echo('<label for="email"> Email </label>');
echo('<input type="email" value="'.$this->Email.'" name="Email" ');
echo('<tr>');
echo('<td>');
echo('<br>');
echo('<label> Message: <br><textarea cols="45" rows="6" name="Message">'.$this->Message.'</textarea></label>');
echo('<br><br>');
echo('<input type="submit" name="post" value="POST COMMENT" id="comment">');
echo('</td>');
echo('</tr>');
echo('</table>');
}
function PostOk() {
$file = "test.txt";
$this->Name=$_POST["Name"];
$this->Email=$_POST["Email"];
$this->Message=$_POST["Message"];
if(empty($_POST['Name']) || empty($_POST['Email']) || empty($_POST['Message'])) {
echo "<br>" . "<b>" . "<h3>*** Please enter all required fields ***</h3>" . "</b>";
}
else
{
$name = filter_input( INPUT_POST, 'Name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'Email', FILTER_SANITIZE_STRING);
$message = filter_input(INPUT_POST, 'Message', FILTER_SANITIZE_STRING);
$datetime = date('m/d/Y h:i:s a', time());
$data = array("name" => $name, "email" => $email, "message" => $message, "datetime" => $datetime);
$data = serialize($data);
file_put_contents($file, $data . "\n", FILE_APPEND|LOCK_EX);
}
$messages = file($file);
foreach ($messages as $value) {
$data = unserialize($value);
echo "<br>"
. "<b>From: </b>" . htmlspecialchars( $data["name"])
. "<b> at: </b>" . htmlspecialchars( $data["datetime"])
. "<br><br>" . htmlspecialchars( $data["message"])
. "<br><hr>";
}
}
}
?>
我的截图现在怎么显示it