2013-11-15 2 views
1

내 코드에 문제가 있습니다. 내 코드는 텍스트 파일이 발견되면 텍스트 파일에서 행을 업데이트/삭제하는 것입니다. 나는 그것에 문제가있다. 처음에는 새 텍스트 파일을 추가 할 수 있으며 함께이 파일을 업데이트 할 수 있습니다. 하지만 그것은 1 행입니다. 다른 행을 업데이트하는 경우. 텍스트 파일의 끝에 업데이트 된 값을 추가합니다. 내가 원하는 것은 이것을 업데이트하거나 삭제하고 새로운 것을 삽입하는 것입니다. 하지만 어떻게해야할지 모르겠다. 배열을 업데이트하는 과정은 array_replace()입니다. 먼저 내 데이터의 ID가 텍스트 파일에 있는지 알아야합니다. 찾으면 간단하게 업데이트/삭제하고 기존 데이터를 새로운 업데이트 된 데이터로 바꿉니다. 발견되지 않으면 추가하십시오.PHP를 사용하여 조건을 사용하여 텍스트 파일을 작성하는 방법

여기 내 코드가 있습니다.

 $restaurant_id = $post_data['company_id']; 
     $new_lat_entry = $post_data['new_lat']; 
     $new_long_entry = $post_data['new_long']; 

     /****Here's my new updated array ****/ 
     $data_add = array( 
      'restaurant_id' => $restaurant_id, 
      'new_lat' => $new_lat_entry, 
      'new_long' => $new_long_entry, 
      'date_updated' => date('Y-m-d H:i:s') 
     ); 
     /****This is the BASE array from the existing textfile ****/ 
     $data = unserialize(file_get_contents('addresses.txt')); 

     $target = $data_add['restaurant_id']; 

     for ($i = 0; $i < count($data); $i++) { 

      $get_id = $data[$i]['restaurant_id']; 

      if($get_id == $target){ 

       //If ID is found - UPDATE 

       $add_data = array(); 

       $add_data = array(
        $i => $data_add 
       ); 

       $new_array = array(); 
       $new_array = array_replace($data,$add_data); 

       $serialize_data = serialize($new_array); 
           $file_input_txt = fopen("addresses.txt","w+"); 
      fwrite($file_input_txt,$serialize_data); 
      fclose($file_input_txt); 

      }else{ 

       $new_array = array(
        $i => $data_add 
       ); 

       $serialize_data = serialize($new_array); 

       $file_input_txt = fopen("addresses.txt","w+"); 
           fwrite($file_input_txt,$serialize_data); 
       fclose($file_input_txt); 


      } 

    } 

내 텍스트 파일의 출력은 직렬화 된 형식입니다.

a:1:{i:0;a:4:{s:13:"restaurant_id";s:4:"1519";s:7:"new_lat";s:8:"14.63823";s:8:"new_long";s:9:"121.02999";s:12:"date_updated";s:19:"2013-11-15 12:42:59";}} 

저도 모두 도와주세요. 이제 마감일이 있습니다. 그리고 나는 그것에 매달렸다. 이것은 내가이 문제를 디버깅을 데 왜 텍스트 파일을 기반으로 CRUD를 생성하고 처음 :-(.

답변

1

이를 시도하십시오 수,

 <?php 

     /****This is the BASE array from the existing textfile ****/ 
     $data = unserialize(file_get_contents('addresses.txt')); 

     $restaurant_id = '1519'; 
     $new_lat_entry = '14.64823'; 
     $new_long_entry = '121.45999'; 

     /****Here's my new updated array ****/ 
     $data_add = array(
       'restaurant_id' => $restaurant_id, 
       'new_lat' => $new_lat_entry, 
       'new_long' => $new_long_entry, 
       'date_updated' => date('Y-m-d H:i:s') 
     ); 

     $target = $data_add['restaurant_id']; 

     $Count =count($data); 
     $new_array =array(); 
     for ($i = 0; $i < $Count; $i++) { 

      $get_id = $data[$i]['restaurant_id']; 


       //If ID is found - UPDATE 

       $add_data = array(
         $i => $data_add 
       ); 

       if($get_id == $target){ 
        $new_array = array_replace($data,$add_data);  
       } 

     } 
     $serialize_data= serialize($new_array); 

     print_r($serialize_data); 
     $file_input_txt = fopen("addresses.txt","w+"); 
     fwrite($file_input_txt, $serialize_data); 
     fclose($file_input_txt); 


    ?> 
+0

그래서 전체 파일이있을 것입니다 삭제 되었습니까? 텍스트 파일에서 한 줄을 삭제하려면 어떻게해야합니까? – Jerielle

+0

그래도 그 과정이면 모든 배열을 호출하여 변수에 할당해야합니다. 그런 다음 기존 배열에 새 배열을 추가해야합니다. 일련의 배열과 다음에 오래된 텍스트 파일을 삭제하고 새 배열을 텍스트 파일에 추가합니까? – Jerielle

+0

예, 올바르다 –

관련 문제