Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Losowe dodawanie rekordów do bazy z pliku.
krzysoolloo
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 28.12.2007

Ostrzeżenie: (0%)
-----


Witam wszystkich!
Chcę napisać skrypt który dodaje do MySQL-a rekordy zapisane w pliku. Linijki w pliku wyglądają np tak:

INSERT INTO `Taabela123` VALUES (1, 'tekst1', 'admin');
INSERT INTO `Taabela123` VALUES (1, 'tekst2', 'admin');
INSERT INTO `Taabela123` VALUES (1, 'tekst3', 'admin');


I tutaj mam pytanie jak wczytać np losowe 100 linijek, dodać je do bazy i usunąć z pliku, aby uniknąć ponownego dodania?

Dziękuję za podpowiedzi,
Krzysiek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Najpierw policzymy rekordy w pliku:
  1. <?php
  2. $uchwyt = fopen($pliczek,'r');  
  3.   while(!feof($uchwyt)){
  4.      if(fgets($uchwyt)){
  5.            $ile_rekordow++;
  6.        }
  7.   }
  8. fclose($uchwyt);
  9. echo $ile_rekordow;
  10. ?>


- zakładam, że jak wyskoczy np. 2345 to umiesz wylosować 100 liczb z przedziału od 1 do 2345 i zrobić z tego tablicę np. $wylosowane? Pomijam zaten ten etap (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Teraz trzeba plik "przewalić":
  1. <?php
  2. $p_dane = fopen('dane.txt','r');
  3. $temp = fopen('temp.txt','a');
  4. $temp2 = fopen('do_bazy.txt','a');
  5. while(!feof($p_dane)){
  6.   ++$licz;
  7.   $linia = fgets($p_dane);
  8.   if(in_array($licz,$wylosowane)){  //warunek
  9.      fputs($temp2, $linia);      
  10.   }else{
  11.      fputs($temp, $linia);  
  12.   }  
  13. }//koniec pętli while
  14. fclose($p_dane);
  15. fclose($temp);
  16. fclose($temp2);
  17. unlink('dane.txt');
  18. rename('temp.txt','dane.txt');
  19. ?>


Jak to działa? Parsujemy plik wejściowy dane.txt w pętli while licząc jego linie - jeśli numer linii jest w tablicy wylosowanych, to wrzucamy linię do pliku do_bazy.txt, jeśli nie jest, to do pliku temp.txt, następnie kasujemy plik dane i zastępujemy plikiem temp (który nie ma już wylosowanych linii) a plik do_bazy.txt pozostaje dodać do bazy korzystając z
  1. LOAD DATA INFILE


Zakładam, że sobie poradzisz.

P.S > wrzucanie całego pliku do tablicy nie polecam, dbajmy o pamięć.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 01:13