![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 0 Dołączył: 18.11.2008 Skąd: Polska Ostrzeżenie: (10%)
|
Mam takie pytanie!!
Jak dodaje rekordy do bazy z pliku txt to kazdy nowy wiersz pliku jest nowym rekordem. Czy mozna zrobic tak zeby skrypt bral 1 wiersz i ustawial jako przyposcmy tytul w bazie i kolejne 10 wierszy i ustawail jako opis. zeby to bylo jednym rekordem. i pote lecial dalej 11 na tytul i kolejne 10 na opis! czyli plik : 1 2 3 4 5 ... w bazie id tytul opis 1 1 2 3 4 5... kod jakim dodaje rekordy z pliku do bazy
Ten post edytował shtoc 19.01.2009, 15:28:50 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 178 Pomógł: 51 Dołączył: 7.01.2009 Skąd: Gdańsk Ostrzeżenie: (0%)
|
zeby skrypt bral 1 wiersz i ustawial jako przyposcmy tytul w bazie i kolejne 10 wierszy i ustawail jako opis. zeby to bylo jednym rekordem. i pote lecial dalej 11 na tytul i kolejne 10 na opis! Pomocna będzie while" title="Zobacz w manualu PHP" target="_manual, oraz explode" title="Zobacz w manualu PHP" target="_manual. Oczywiście, jeżeli wiesz ile masz w pliku tytułów... Kod Hello<!> Opis 1; Opis 2; Opis 3; Opis 4; ...itd. I najpierw rozbijasz explode, na tytul i tresc. Za pomocą funckji mozesz sprawdzić czy już jest koniec pliku. W ten sposób tworzysz pętlę while, która odczyta tytuły. Będziesz miał wtedy taką tabelkę: Kod //jak dales $tabela1 = explode('<!>', $plik) $tabela1[0] // twoj tytul $tabela[1] // twoje opisy I za pomocą kolejnej pętli dzielisz $tabela[1] według ; a potem już łatwo dostosować wyniki do własnych potrzeb. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 0 Dołączył: 18.11.2008 Skąd: Polska Ostrzeżenie: (10%)
|
hmm to moze inne pytanie (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) jak zrobic zeby z pliku pobierac przykladowo po 10 wierszy do jednego pola bazy?
zeby nie bylo ze po <enter> jest nowy rekord. |
|
|
|
Post
#4
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Robisz sobie pętlę pobierającą linię (fgets" title="Zobacz w manualu PHP" target="_manual) i w niej licznik zwiększający się co krok o jeden. Jeśli dziesięć - wszystkie poprzednio wczytane wpisy, to cały rekord i resetujesz licznik do zera.
Kod licznik = 0;
while(pobierz){ jesli licznik<10 to rekord .= wczytane dane w przeciwnym wypadku kasuj licznik zwieksz licznik } |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%)
|
Po pliku poruszasz się tak:
1. Przerób najpierw plik tak, aby spełniał Twoje wymagania (to co odczytujesz z jednego pliku od razu możesz zapisać do drugiego) 2. Dodaj plik do bazy używając LOAD DATA INFILE zamiast INSERT - z doświadczenia wiem, że jest to nawet kilkanaście razy szybsze. |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 70 Dołączył: 13.01.2009 Ostrzeżenie: (0%)
|
BTW: Jak masz odpowiednią strukturę danych w pliku, np masz plik CSV z rekordami każdy w nowej linii i pola oddzielone separatorami to możesz sobie dodać przez phpmyadmina bez potrzeby pisania skryptu.
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 0 Dołączył: 18.11.2008 Skąd: Polska Ostrzeżenie: (10%)
|
Po pliku poruszasz się tak:
1. Przerób najpierw plik tak, aby spełniał Twoje wymagania (to co odczytujesz z jednego pliku od razu możesz zapisać do drugiego) 2. Dodaj plik do bazy używając LOAD DATA INFILE zamiast INSERT - z doświadczenia wiem, że jest to nawet kilkanaście razy szybsze. ale fgets pobiera linie o zadanej długości, jednak pobieranie konczy sie jak napotka znak <enter>. a ja potrzebuje zeby pobral przykladowo do jednego rekordu 3 linie po enterach. czyli jak mam plik : linia 1 <enter> linia 2 <enter> linia 3 <enter> linia 4 <enter> to chcę w bazie w 1 rekordzie linia 1 linia 2 linia 3 w 2 rekordzie linia 4.....itd |
|
|
|
Post
#8
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
|
|
|
|
![]() ![]() |
|
Aktualny czas: 25.12.2025 - 19:41 |