ďťż
Podstrony
|
telcocafetworzac galerie w php mam dodatkowy plik tekstowy "opis.txt", w którym mam umieszczony numer wraz z opisem każdego zdjęcia, czyli:1 Zdjęcie z gór 2 Malowidło z wycieczki 3 Obrazek jakiś inny itd... i teraz dla zadanego numeru zdjęcia chcę pobrać z tego pliku odpowiedni opis dla tego zdjęcia, z tym że kod: $uchwyt = fopen("./skrypty/opis.txt", "r"); while ($info = fscanf($uchwyt, "%d\t%s\n",$nr,$op)) { if($nr==$i) $wynik.=$op; } fclose($uchwyt); zwraca mi jedynie pierwszy wyraz z odpowiedniego wiersza pliku, czyli np dla drugiego zdjecia zwróci jedynie "Malowidło". jak to poprawić? Nie wiem, czy zadowoli Ciebie to, ale to moja mała alternatywa ;) $f = file('./skrypty/opis.txt'); for ($j=0; $j<count($f); $j++) { if ( ($t=trim($f[$j])) !='' && substr($t, 0, $p=strpos($t,' ')) == $i ) $wynik.=substr($t, $p+1, strlen($t)); } Użytkownik DJ_ProG edytował ten post 25 luty 2008, 21:03 dzieki za pomoc, ja tez wpadlem na pomysl i zrobilem to tak: $uchwyt = fopen("./skrypty/opis.txt", "r"); $buf.=fread($uchwyt,1024); fclose($uchwyt); $a=strpos($buf,strval($i)); $b=strpos($buf,strval($i+1)); for($k=$a+2; $k<$b-2; $k++) { $wynik.=$buf[$k]; } czyli do $wynik dodaje po kolei każdy znak, ale twój sposób jest chyba szybszy... Na moje oko, to Twój kod pobiera jedynie 1024 pierwsze znaki z pliku (bo tak ustawiłeś) - jak robisz coś takiego, to pobiera się to w pętli, do EOF. Poza tym, IMO niepotrzebnie nawciskałeś tych instrukcji na stringu ;) Jeśli chcesz by było jeszcze szybciej (i sprawdzało, czy np. linijka nie jest pusta oraz obcinala białe znaki ;)) to ew. użyj tego mojego kodu, tylko zamień$wynik.=substr($t, $p+1, strlen($t));na{ $wynik.=substr($t, $p+1, strlen($t)); break; }(po znalezieniu numerka i dopisania do zmiennej opisu, pętla jest przerywana, bo po co ma dalej szukać danych w pliku, skoro już je znalazła ;) taka optymalizacja jest dobra jeśli masz "sporo" linijek w pliku i tylko w jednej jest konkretna liczba :P). Użytkownik DJ_ProG edytował ten post 27 luty 2008, 14:46 Nie wiem, czy zadowoli Ciebie to, ale to moja mała alternatywa ;) $f = file('./skrypty/opis.txt'); for ($j=0; $j<count($f); $j++) { Â Â if ( ($t=trim($f[$j])) !='' && substr($t, 0, $p=strpos($t,' ')) == $i ) Â Â $wynik.=substr($t, $p+1, strlen($t)); } lepiej skorzystać z file i odwoływać się od razu do konkretnego indexu tablicy :) lepiej skorzystać z file i odwoływać się od razu do konkretnego indexu tablicy :) Chyba nie, szczególnie jak te liczby nie są przydzielanie automatycznie (zliczane i dodawana kolejna) - a tak sądzę po problemie :P Nie masz pewności - nie ryzykuj :P Zabezpieczaj się :) @down: ale ID IDowi nie równy ;) Użytkownik DJ_ProG edytował ten post 28 luty 2008, 17:30 Chyba nie, szczególnie jak te liczby nie są przydzielanie automatycznie hm? wchodzisz na strone z ?id=5 gdzie id to numer foty pozniej pobierasz wpis o odpowiednim id z tablicy i juz :) fakt ze metoda nieoptymalna ale przy malej ilosci wpisow najwygodniejsza |
|||
Sitedesign by AltusUmbrae. |