如何在PHP中使用条件更新文本文件?

如何在PHP中使用条件更新文本文件?,php,csv,Php,Csv,大家好,我的代码有问题。因为我想创建一个更新谷歌地图的工具。但我的数据是在txt文件中,而不是在数据库中。这就是为什么我很难对它进行编码。好的,场景是: 用户将找到它的新位置 之后,用户将单击更新,程序将编写一个txt文件和一个csv文件 现在的条件是,如果用户更新txt文件或csv中的地图(表示现有ID)。而不是添加新的更新位置。它只会更新 这是我的密码 if ($_SERVER['REQUEST_METHOD'] == 'POST') { $post_data = $_POST;

大家好,我的代码有问题。因为我想创建一个更新谷歌地图的工具。但我的数据是在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+”(++=读/写二者)

    在这里阅读更多

    此代码运行良好:

       <?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);
    
       ?>
    
    
    

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

    嗯。谢谢您的回复。:)同样的问题。我两者都用了(让我检查一下。这不是问题。我将执行代码并返回给您。好的,我真的很高兴您帮助了我。提前谢谢。)好的。我刚刚修改了答案,添加了工作代码。但是,我不明白您为什么在那里使用file\u put\u contents()?
       <?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);
    
       ?>