我有這段代碼在服務器上創建一個json文件並將表單數據保存到該jason文件。使用php更新Json文件的數據
問題是每當我點擊提交按鈕時,表單數據會追加到json文件上的現有數據。
我想更新它不會創建更多的副本行。
這裏是代碼,你可以查看它。
任何幫助將不勝感激。
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
move_uploaded_file($_FILES["Photo"]["tmp_name"],"images/".$_POST['Photo']);
$filters=array(
"FirstName",
"LastName",
"Photo",
"MobilePhone",
"MobilePhoneProvider",
"HomePhone",
"HomePhoneProvider",
"WorkPhone",
"WorkPhoneProvider"
);
$final=array();
foreach ($filters as $filter) {
$final[$filter]=$_POST[$filter]?$_POST[$filter]:"";
}
$final["PhoneNumber"]=array(
array(
"MobilePhone"=>$final["MobilePhone"],
"Provider"=>$final["MobilePhoneProvider"],
),
array(
"HomePhone"=>$final["HomePhone"],
"Provider"=>$final["HomePhoneProvider"],
),
array(
"WorkPhone"=>$final["WorkPhone"],
"Provider"=>$final["WorkPhoneProvider"],
)
);
$unsets=array(
"MobilePhone",
"MobilePhoneProvider",
"HomePhone",
"HomePhoneProvider",
"WorkPhone",
"WorkPhoneProvider"
);
foreach ($unsets as $unset) {
unset($final[$unset]);
}
$json = json_encode($final);
$file = 'entries.json';
file_put_contents($file, $json, FILE_APPEND);
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Contact</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
First Name: <input type="text" name="FirstName"><br>
Last Name: <input type="text" name="LastName"><br>
Photo: <input type="file" name="Photo"><br>
Mobile Phone: <input type="tel" name="MobilePhone"><br>
Mobile Phone Provider: <input type="text" name="MobilePhoneProvider"><br>
Home Phone: <input type="tel" name="HomePhone"><br>
Home Phone Provider: <input type="text" name="HomePhoneProvider"><br>
Work Phone: <input type="tel" name="WorkPhone"><br>
Work Phone Provider: <input type="text" name="WorkPhoneProvider"><br>
<input type="submit">
</form>
</body>
</html>
嘗試改變'file_put_contents($文件$ JSON,FILE_APPEND);''到file_put_contents($文件$ JSON);'具體根據[文檔用於'FILE_APPEND'標誌](HTTP:// WWW .php.net/manual/en/function.file-put-contents.php) - >'如果文件名已經存在,請將數據附加到文件中,而不是覆蓋文件。' – Sean
是的,這是非常快速的解決方案。謝謝 –