![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 444 Pomógł: 79 Dołączył: 26.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
file() - wczytuje plik do tablicy
mt_rand() - w petli losuje indeksy (linie ktore maja trafic do bazy) array_splice() - usuwa wylosowany wczesniej indeks implode() - laczcy reste tablicy w ciag znakow file_put_contents() - wrzoca ciag znakow spowrotem do pliku (domyslnie nadpisuje jesli moze) w razie potrzeb szczegoly poszczegolnych funkcji na php.net (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 28.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Napisałem takie coś:
Lecz "zjada" mi niektóre linijki i czasami zatrzymuje ładowanie się w przeglądarce (ściąganie plik.php). Mógłby ktoś poprawić kod? Ten post edytował krzysoolloo 29.05.2009, 21:15:37 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 444 Pomógł: 79 Dołączył: 26.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
tak na oko:
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 28.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Niestety nie działa jak należy:/
Nie zapisuje zmienionego pliku (bez dodanych linijek)... Dodam, że nie wyskakuje żaden błąd i nadałem CHMOD na plik. |
|
|
![]()
Post
#6
|
|
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:
- 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ć":
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
Zakładam, że sobie poradzisz. P.S > wrzucanie całego pliku do tablicy nie polecam, dbajmy o pamięć. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 28.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Niby wszystko okej, ale czasami powtarza się wylosowana liczba no i wtedy zaczynają wyskakiwać błędy itd...
Ten post edytował krzysoolloo 29.05.2009, 21:15:12 |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Wpychasz wylosowane liczby do tablicy, przy użyciu in_array" title="Zobacz w manualu PHP" target="_manual sprawdzasz, czy już została wylosowana liczba. Mam nadzieję, że wiesz, jaką pętlę Ci tu sugeruję?
Poza tym, używaj właściwego bbcode. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 28.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie mogę sobie z tym poradzić... Do tej pory nie używałem tablic i plików. Mógłby mi ktoś to dokładnie wytłumaczyć?
|
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.09.2025 - 14:45 |