0

大家好,我的代码有问题。因为我想创建一个更新谷歌地图的工具。但我的数据在 txt 文件中,而不是在数据库中。这就是为什么我很难对其进行编码。好的,场景是:

  1. 用户将找到它的新位置
  2. 之后,用户将单击 UPDATE 并且程序将写入一个 txt 文件和一个 csv 以及
  3. 现在的条件是用户是否更新 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
    }

我需要为此使用什么功能?这就是所有的人,谢谢。

4

1 回答 1

1

您正在打开要写入的文件,并且 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);

   ?>

您正在尝试读取所有文件内容并将其写回文件?为什么有必要?只需在文件末尾添加新数据!

于 2013-11-14T06:03:49.267 回答