大家好,我的代码有问题。因为我想创建一个更新谷歌地图的工具。但是我的数据在txt文件中,而不是在数据库中。这就是为什么我很难编码它。好的,场景是:
- 用户将找到它的新位置
- 之后,用户将单击更新,程序还将写入txt文件和csv
- 现在的条件是用户是否更新 txt 文件或 csv 中的地图(即现有 ID)。而不是添加新的更新位置。它只会更新。
这是我的代码。
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$post_data = $_POST;
if (!empty($post_data['company_id']) && !empty($post_data['new_lat']) && !empty($post_data['new_long'])) {
// Save
$restaurant_id = $post_data['company_id'];
$new_lat_entry = $post_data['new_lat'];
$new_long_entry = $post_data['new_long'];
$datenow = date_create();
$timestamp = $datenow->format('U');
//THIS WILL CREATE ARRAY OF NEW DATA
$data_add = array(
'restaurant_id' => $restaurant_id,
'new_lat' => $new_lat_entry,
'new_long' => $new_long_entry,
'date_updated' => $timestamp
);
//GET THE EXISTING TXT FILE AND UNSERIALIZE IT
$data = unserialize(file_get_contents('addresses.txt'));
$data[] = $data_add; //ADD LATEST DATA TO ARRAY
//SERIALIZE UPDATED ARRAY
$serialize_data = serialize($data);
file_put_contents("addresses.txt", $serialize_data, LOCK_EX); //write the text file
//WRITE UPDATE OR NEW txtfile
$array = unserialize(file_get_contents('addresses.txt'));
//CREATE CSV
$file_input = fopen("addresses.csv","w");
foreach ($array as $row) {
fputcsv($file_input, $row);
}
fclose($file_input);
} else {
// prompt missing inputs
}
我需要为此使用什么功能?这就是所有的家伙,谢谢。
您正在打开要写入的文件,并且 fp(filepointer) 位于文件的开头。 它将始终从文件的开头写入。
$file_input = fopen("addresses.csv","w");
将该"W"替换为"a"或"a+"(+ = 读/写两者)
$file_input = fopen("addresses.csv","a");
在此处阅读更多内容 http://php.net/manual/en/function.fopen.php
这段代码运行良好:
<?php
$data = array(
'restaurant_id' =>"1",
'new_lat' => "2",
'new_long' => "3",
'date_updated' => "4"
);
$file_input = fopen("test.csv","a+");
fputcsv($file_input, $data);
fclose($file_input);
?>
您正在尝试读取所有文件内容并将其写回文件?为什么有必要?只需在文件末尾添加新数据即可!