![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 7.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Przeszukalam juz kilka for i grup dyskusyjnych, ale nie znalazlam odpowiedzi na pytanie. Znalazlam jedynie link do platnego serwisu i platnej porady Web.Reporter.
Dokładnie chodzi mi o to co jest w tej poradzie, czyli 1. jak ma wyglądać plik, z którego będziemy w częściach pobierać informacje na kolejne podstrony. 2. w jaki sposób umieszczać linki do konkretnego fragmentu tekstu pobieranego z tego pliku? Nie mam dostępu do myslq, więc większość porad, do których dotarłam dla mnie są bezużyteczne. Byłabym wdzięczna za każdą odpowiedź i poradę. Pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 27.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
Mało precyzyjnie sformułowałaś problem, więc przyjmuje założenie, ze chodzi ci o plik postaci:
tekst 1 tekst 2 ... tekst n --- W takim przypadku porozdzielałbym tekst unikalnymi 'delimiterami', czyli np: tekst pierwszy poprzedziłbym i zamknął wynikiem polecenia md5('tekst1'), tak samo uczyniłbym z każdym pozostałym tekstem. Zastosowanie funkcji md5() z unikalnymi wartościami srgumentu gwarantuje otrzymanie unikalnych stringów. Wtedy link np do tekstu trzeciego wyglądałby następująco: a href=jakis_plki?txt_id=<?echo md5('tekst3')?>, a w jakimś_pliku skrypt sprawdzałby , czy jest podana zmienna $_GET['txt_id'] i jeżeli byłaby podana ta zmienna, to czytałby dokument linijka po linijce, a wszystko, co byłoby zawarte pomiędzy liniami zawierającymi delimieter dla danego tekstu. To rozwiązanei ma jedną wadę: musiałabyś porównywać każdą linijkę tekstu, a funkcje to realizujące należą do wolnych. Po drugie aby dostać się do tekstu ostatniego trzebaby przeczytać cały plik. Innym rozwiązaniem , bez tych wad, jest założenie katalogu z osobnymi plikami na każdy tekst. Osobiście polecam to drugie rozwiązanie. Nazwom plików można tak samo zapewnic unikalność, jak delimiterom w 1 plkiu. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 7.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Hm, no rzeczywiście być może mało precyzyjnie. Otóż mam pliki które mają po 300kb. Część z nich rzeczywiście podzieliłam na pojedyncze i kolejne linki otrzymuje poprzez:
Natomiast mam takich plików jeszcze całe mnóstwo i podzielenie tego na każdy osobny plik zajmie sporo czasu no i zastraszająca liczba tych plików znajdzie się na serwerze. Wolałabym właśnie podzielić tekst w konkretnym tym dużym pliku na części. Nie za bardzo zrozumiałam, to co napisałeś Cytat md5('tekst1') i co mam wpisać za tekst1 długaśny tekst? No a potem jak go wywołać? Co tutaj wpisać Cytat a href=jakis_plki?txt_id=<?echo md5('tekst3')?>, za tekst3? Pozdrawiam! |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 27.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
cześć!
md5() to funkcja szyfrująca, czyli zamieniająca 'jakis tekst' na bezsensowny ciąg znaków, jej użycie miałoby na celu tylko to, zeby w linku zamiast costam?txt_id=tekst_o_kotach, user zobaczyl w pasku adresu costam?txt_id=dWQdfFe432rewrWE342Rwfdwe. To tak dla bezpieczenstwa. Bo po co ujawniac swoje nazwy?. Tu masz więcej o funkcji md5(): http://pl.php.net/manual/pl/function.md5.php Zaużmy, ze w pliku masz 10 wypracowań, wtedy musisz każde wypracowanie 'okalać' unikalnym stringiem. Równie dobrze może to byc zwykły napis "Wypracowanie pierwsze", ale bezpieczniej jest tam wstawic jakis absurdalny ciąg znaków, bo wtedy masz pewnośc, ze wystąpi on tylko jako delimiter. A ten absurdalny ciąg znaków możesz uzyskać w następujący sposób: Zrób sobie plik delimiter.php a w nim wpisz: <? echo "Delimiter dla pierwszego tekstu : ".md5("1")."<BR>"; echo "Delimiter dla drugiego tekstu : ".md5("2")."<BR>"; echo "Delimiter dla siódmego tekstu: ".md5("7")."<BR>"; ?> zobaczysz , co uzyskasz. Następnie pooddzielaj otrzymanymi delimiterami teksty w plikach. A w skrypcie zrób tak: Kod <?php $rozsz=".html"; if(file_exists("katalog/$pokaz$rozsz")) { //include("katalog/$pokaz$rozsz"); //zamiast calego pliku potrzebujesz tylko wybrany tekst z tego pliku, a konkretnie tekst, który jest //zawarty miedzy wybranymi delimiterami. $delimiter=$_GET['txt_id']; $lines=file("katalog/$pokaz$rozsz"); $open=0; foreach($lines AS $key => $value){ if(strstr($value, $delimiter)){ if($open == 0){ $open=1; }else{ $open =0; } } if($open == 1){ echo $value; } } } else { include("katalog/index$rozsz"); } ?> Kod moze nie byc poprawny, bo go nie sprawdzałem. A $_GET['txt_id'] to zmienna występująca w linku, czyli w pliku z którego się odwołujesz do tekstu musisz miec link: HREF=cotam?txt_id=jakiś_unikalny_identyfikator |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 7.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
To jeszcze jeśli byłmógłbys mi powiedzieć jak pociąć tekst w te delimitery, to byłoby super. Więc mam powiedzmy tekt:
To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- to co mam wstawić i gdzie by tekst "To jest jakiś tekst" i "A to inny tekst" wyświetlane był potem na oddzielnych podstronach? Z góy dzięki i sorki, za te lamerskie pytania, ale tak to jest jak człowiek się uczy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam! |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 1 Dołączył: 3.04.2004 Skąd: Trójmiasto (Gdańsk) Ostrzeżenie: (0%) ![]() ![]() |
Cytat(misterLu @ 2004-10-07 13:27:59) md5() to funkcja szyfrująca Zaużmy, ze w pliku masz 10 wypracowań, wtedy musisz każde wypracowanie 'okalać' unikalnym stringiem. md5 nie szyfruje, a hashuje... a to jak wiadomo jest różnica... oznacza to między innymi, że wygenerowany hash nie musi być unikatowy - może się zdarzyć (chociaż prawdopodobieństwo oczywiscie jest bardzo niskie) że dla dwóch różnych ciagow wygenerowany zostanie ten sam hash @ga-cek: jeżeli tworzysz na prawdę poważny serwis to takie rozwiazanie jest niedopuszczalne, ale na własne potrzeby powinno być ok (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Cytat funkcja szyfrująca, czyli zamieniająca 'jakis tekst' na bezsensowny ciąg znaków szyfrowanie czyli zamienianie na bezsensowny ciąg znaków... ciekawa teoria, gratuluje (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ten post edytował rogrog 9.10.2004, 19:51:04 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 7.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
W tej chwili już na własne potrzeby, bo przekonałam się, że rzeczywiście bezpieczniej będzie podzielić na pliki wszystko. W zasadzie teraz to już tylko czysta ciekawość jak to zrobić, bo nadal nie wiem jak ;-)
Pozdr! |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 27.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
zawartość pliku:
Kod 62cfb1dc0f7647f33e3852f56a48b072 To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... To jest jakiś tekst... 62cfb1dc0f7647f33e3852f56a48b072 e8400c8735535df6ae549f7b3602e51f A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- A to inny tekst --- e8400c8735535df6ae549f7b3602e51f gdzie 'e8400c8735535df6ae549f7b3602e51f' to wynik md5('tekst2'). Cytat szyfrowanie czyli zamienianie na bezsensowny ciąg znaków... ciekawa teoria, gratuluje Będę zobowiązany, jak podasz mi równie krótką i bardziej sensowną definicję szyfrowania tekstu, ale taką, by nowicjusz ją zrozumiał. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
Jak zrobić uniwersalne porcjowanie wyników na stronie, aby nie pokazywała się cała zawartość tablicy lub tekstowej bazy danych?
Problem Chcesz dane z pliku tekstowego lub tablicy podzielić na porcje, aby użytkownik mógł przeglądać kilka mniejszych stron z wynikami zamiast jednej ogromnej. Chcesz decydować ile odpowiedzi znajdzie się na każdej ze stron i jak długi będzie pasek nawigacyjny. Rozwiązanie Porcjowanie wyników zapytania to ważna czynność podczas pracy z tekstowymi bazami danych lub tablicami, gdy wyniki przekraczają 30 rekordów. Niektóre bazy danych lub tablice liczą nawet kilk tysięcy pozycji więc pokazanie ich wszystkich na jednej stronie WWW nie jest możliwe. Zamiast pokazywać po kilkaset wyników, można je łatwo porcjować. Nie jest ważne co porcjujesz - mogą to być wpisy na forum, dedykacje w księgach gości, informacje o książkach lub zawartość katalogu produktów w jakimś sklepie. Opisany poniżej skrypt nie tylko świetnie porcjuje tablice lub tekstowe bazy danych, ale jest niesamowicie elastyczny. Możesz ustawiać ilość danych przypadających na jedną stronę, przekazywać dodatkowe zmienne podczas przechodzenia pomiędzy stronami czy ustalać jak szeroki (np. od 1 do 10) będzie pasek służący do poruszania się pomiędzy stronami z wynikami. Dodatkowo oprócz klikania na poszczególne strony możesz wykorzystać pola "następna" i "poprzednia", które automatycznie przenoszą o jedną stronę do przodu lub do tyłu. Zobacz jak napisać uniwersalny skrypt do porcjowania wyników:
Bazą danych jest plik tekstowy, który zawiera jeden rekord w jednej linijce. Może to być również tablica $baza[], która ma dowolną ilość elementów. Docelowo rekordy z pliku i tak umieszczone są za pomocą funkcji file() w tablicy $baza[]. Działania funkcji pasek() opisywać nie będę, ponieważ algorytm jest dosyć złożony i zależy od wielu warunków. Generalnie wszystko jest czystą matematyką. Funkcja rozbija liczbę wszystkich odpowiedzi na poszczególne składowe, a więc liczbę stron, aktualną pozycję czy ilość cyfr w menu. Obliczenia są uzależnione od wielu czynników i warunków początkowych. Ważne aby do funkcji pasek() przekazać pięć zmiennych: $l_odp - liczba wszystkich rekordów w bazie/tablicy (możliwych odpowiedzi) $l_odp_nastronie - liczba rekordów na jednej stronie $l_odp_napasku - liczba cyfr na pasku - wystarczy podać tylko połowę planowanej liczby zwiększonej o jeden, np. 5 to w rzeczywistości 11 cyfr (1,2,3,4,5),6,(7,8,9,10,11). Określa ona ilość cyfr po prawej i lewej stronie względem środka. $skrypt - nazwa skryptu bez parametrów np. index.php? lub z dodatkowymi parametrami index.php?x=123&c=sort& $a - zmienna określająca numer strony z wynikami - to właśnie ona określa, która porcja wyników będzie pokazana Warto poeksperymentować z różnymi opcjami aby dostować skrypt do własnych potrzeb. Opcje są bardzo elastyczne i z powodzeniem można skrypt zastosować do dowolnych projektów. Funkcja pasek() tak na prawdę nie porcjuje wyników... Tworzy ona jedynie pasek do nawigacji pomiędzy stronami z wynikami i ustala zmienną $a. Właściwe porcjowanie zachodzi na etapie pokazywania zawartości pliku lub tablicy. Cały plik wczytywany jest do tablicy i następnie jej fragment pokazywany jest na ekranie za pomocą pętli for() z podanymi zakresami rekordów. Liczbę odpowiedzi przypadających na stronę podajemy pod funkcją pasek(), ustalamy tam również liczbę cyfr na pasku i skrypt (oraz ewentualne parametry jakie ma przekazywać). Brakuje jeszcze ilości wszystkich rekordów. Można ją pobrać za pomocą funkcji count(). Jeżeli liczba rekordów w tablicy nie zmienia się, możesz tą wartość przypisać na stałe. Następnie wyświetlany jest pasek nawigacyjny i wybrana porcja wyników. Kolejność może być dowolna - najpierw porcja wyników, a na dole pasek nawigacyjny. Jak widzisz, bez problemu można w ten sposób przeglądać pliki i tablice o tysiącach linijek/rekordów. Wszystko odbywa się szybko i bardzo wygodnie dla użytkownika. p.s: nie sprawdzałem |
|
|
-Gość_Marek- |
![]()
Post
#10
|
Goście ![]() |
Działa pięknie.
Ale teraz, kiedy mam w pliku txt kilka linijek, to rzbija mi to na osobne rekordy. Co w takim przypadku? Dla wyjaśnienia: robię stronkę z wizytówkami i chcę, żeby wyświetlało mi po 5 wizytówek na stronie. Zapisuję to w pliku txt. Każda wizytówka to kilka linii. Jak to podzielić żeby wynik był taki jak zamierzam? Z góry dzięki |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 12:22 |