![]() |
![]() ![]() |
![]() |
![]()
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. -------------------- Sklep
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
![]()
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
![]() 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 } -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
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 ![]() |
Cytat a ja potrzebuje zeby pobral przykladowo do jednego rekordu 3 linie po enterach. To jaki masz problem?
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 17.06.2025 - 00:36 |