![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 66 Dołączył: 22.02.2008 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam plik z danymi. Dane zapisuja sie za kazdym razem do tego samego pliku i jest ich zawsze 10 czyli jesli zrobie to 10 razy bedzie tych linii 100 (logiczne chyba (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) Problem w tym ze nie potrafie przefiltrowac danych czyli pobrac konkretnych linii w petli do dalszej obrobki. <? $file = file('articles/3.dat'); for($i=0;$i<count($file);$i++) { print $file[$i] . '<br>'; } ?> to mi pokazuje wszystko co mam w pliku ale jak zrobic zebym mogl w tej petelce pobrac 10 (10 to tylko przyklad bo chce pobrac wszystkie linie bo petla pobiera wszystko tyle ze konkretne dane z wpisu sa wlasnie podzielone co 10 linii) linii i mogl je obrabiac ? Gdyby sie zapisywaly dane wszystkie w jednej linii z jakims separatorem np. chr(15) to prosta rzecz bo pobieram przez list($dane1,$dane2,$dane3,$dane4,$dane5,$dane6,$dane7,$dane8,$dane9,$dane10) = split("[".chr(15)."]",$file[$i]); i mam wtedy w kazdej zmiennej dane ale w tym przypadku nie wiem a teznie moge zmienic metody zapisu bo juz danych jest zbyt wiele i musialbym siedziec i zmieniac z miesiac sama strukture w plikach Ten post edytował dublinka 22.02.2008, 08:36:43 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 285 Pomógł: 37 Dołączył: 18.12.2007 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
nie bardzo rozumiem w czym problem, może po prostu wystarczy Ci fgetss()
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 66 Dołączył: 22.02.2008 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
nie bardzo rozumiem w czym problem, może po prostu wystarczy Ci fgetss() Nie, sluchaj. Mam petle for i ona misi byc. Dane w pliku zapisywane sa z formularza z 10 pol wiec 10 danych leci na kazda linie z osobna. Tych danych jest za kazdym razem wiecej o 10 czyli jak juz napisalem moze ih byc 100 lub 10 000 linii - bo przeciez zapisuje sie caly czas. Problem w tym ze podczas pobierania danych petla z tablicy wysw mi wszystkie dane a ja potrzebuje nie wyswietlic od razu tych linii lecz pobrac je do poszczegolnych zmienych i je obrobic. Dlaczego ? Wstawiam w petle kod html (tabela i komorki i do kazdej z komorek chce wstawic te poszczegolne zmienne a w tym przypadku nie mam takiej mozliwosci) czyli tak jak tam jest $zmienna[$i] zawiera cala tablice ale teraz potrzebuje ja rozbic/przypisac kazdej z tych linii (czyli z kazdego obrotu petli) zmienne dla kazdej z tych linii np. mam dane: imie data temat tresc nick nr nr2 id id2 tutaj kolejne 10 danych i tak w kolko... teraz potrebuje pobrac kazda linie z osobna ale z tego przykladu jak w temacie glownym czyli przez for. Jak rozbic ta tablice tak aby przypisac kazdej z miennej dana linie - 10 zmiennych dla kazdej linii. Probowalem tablice asocjacyjna ale nic z tego |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 111 Pomógł: 25 Dołączył: 23.07.2004 Ostrzeżenie: (0%) ![]() ![]() |
Pisane z ręki, może coś nie działać |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 66 Dołączył: 22.02.2008 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
To moze ja podam moj caly przyklad. Jest to stronicowanie danych z tego pliku 3.dat
Twoja tablica jest ok ale jakos mi to nie dziala :/ <? ############################################################ # wyswietlenie odpowiedzi ############################################################ $path_r = 'articles'; $rozsz = '.dat'; $wyswietlaj=40; # podzial na kartki $ile_linkow=30; # -||- if(file_exists($path_r . '/3.dat' )): #1 $FileToReadReply=file($path_r.'/3.dat'); if(empty($HTTP_GET_VARS['czytaj'])) { $czytaj=0; } else{ $czytaj=$HTTP_GET_VARS['czytaj']; } if(empty($HTTP_GET_VARS['dalej'])) { $dalej=1; } else{ $dalej=$HTTP_GET_VARS['dalej']; } $nr=$HTTP_GET_VARS['czytaj']; if(empty($HTTP_GET_VARS['czytaj'])){ $nr=0; } $tmpArray = array(); $u=1; for($i=$czytaj;$i<$czytaj+$wyswietlaj;$i++) { if(!empty($FileToReadReply[$i])) { // print $FileToReadReply[$i]."<br>"; if ($i % 10 == 0) { $tmpArray [] = array(); } $kk = $tmpArray[count($tmpArray )-1][] = $FileToReadReply[$i]; print $kk[0]."<br>"; } } $out=""; for($i=$dalej;$i<$dalej+$ile_linkow;$i++) { $k=($i-1)*$wyswietlaj; if($k<count($FileToReadReply)) { if($k==$czytaj) { $out.=" [$i] "; } else{ $out.=" <a class=\"l\" href=\"$PHP_SELF?id=".$HTTP_GET_VARS['id']."&czytaj=$k&dalej=$dalej\">[$i]</a> "; } } } if($dalej>1) { $cz=($dalej-1)*$wyswietlaj-$wyswietlaj; $dal=$dalej-$ile_linkow; print " <a class=\"l\" href=\"$PHP_SELF?f=".$HTTP_GET_VARS['id']."&czytaj=$cz&dalej=$dal\"><<<</a>"; } else{ print "<font class=\"gl_data\"><<< </font>"; } print "<font class=\"gl_data\">".$out."</font>"; if($k+$wyswietlaj<count($FileToReadReply)) { $cz=$k+$wyswietlaj; $dal=$dalej+$ile_linkow; print " <a class=\"l\" href=\"$PHP_SELF?id=".$HTTP_GET_VARS['id']."&czytaj=$cz&dalej=$dal\">>>></a> "; } else{ print "<font class=\"gl_data\"> >>></font>"; } else: print 'Brak dokumentu'; endif; ? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 111 Pomógł: 25 Dołączył: 23.07.2004 Ostrzeżenie: (0%) ![]() ![]() |
Nie o takie coś Ci chodziło?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 66 Dołączył: 22.02.2008 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
no ok. Dzialac dziala tz nsie wysw tylko dalej sie tylko wysw. a ja potrzebuje obrabiac te linie
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 285 Pomógł: 37 Dołączył: 18.12.2007 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Nie twierdze, że to jest lepsze niż to co kolega wymyślił, ale ja i tak bym to robił przez fgetss
while(!feof(....)) { for($i=1;$i<=10;$i++) $array[]=fgetss(....); $final[]=$array; } to byś wiedziała co i jak. A zaczynając od początku, to użyłbym funckji serialize przy zapisie i unserialize przy odczycie i już w ogóle nie byłoby żadnego problemu. |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 594 Pomógł: 66 Dołączył: 22.02.2008 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
Nie chodzi mi o co dziesiata linie.
Moze inaczej. Moze teraz mnie zrozumiecie. Mam dane w pliku po kolei czyli kazda dana w osobnej linii. Z jednego zapisu czyli po dodaniu artykulu jest ich 10. Po nastepnym dodaniu 20 itd... Teraz chce pobrac je i obrobic. Gdyby byly w jednej linii i oddzielone jakims separatorem to nie mialbym problemu bo pobralbym linie (tez np. przez for) rozbil przez explode ten separator i np. byloby tak CODE <BR><BR>$file = file(plik);<BR>for........<BR>$ex = explode('[*]', $file[$i]);<BR><BR>$ex[0] = zawiera pierwsza linie<BR>$ex[1] = druga<BR>itd<BR> Problem mam z dopisaniem zmiennych w podobnym schemacie bo tam nie jest tylko jedna linia ale z kazdego zapisu 10 ale nie chce pobrac tylko 10-ciu jak napisales tylko wszystkie Ten post edytował dublinka 22.02.2008, 12:18:06 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 111 Pomógł: 25 Dołączył: 23.07.2004 Ostrzeżenie: (0%) ![]() ![]() |
No to przecież zarówno ja jak i netmare podaliśmy Ci rozwiązanie.
|
|
|
![]()
Post
#12
|
|
Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
Prosiłem o coś, olano mnie. Mszczę się więc (a mściwy jestem straszliwie) i zamykam temat.
Od autora czekam na PW z informacją dlaczego mnie olał, solennym przyrzeczeniem poprawy i informacją jak chce to naprawić. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.09.2025 - 07:59 |