![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 27.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
Robię właśnie system publikacji artykułów w serwisie. Wszystko szło pięknie ładnie, az do pewnego momentu - jak zwykle :-)
Artykuł pobierany jest z jednego pola w tabeli i wrzucany w zmienną $tresc. Ta treść ląduje na stronie. Ale niektóre artykuły sa b. długie i chciałbym aby były wyświetlane w kawałkach np. co ileś akapitów a po kliknięciu "kolejna strona" wyświetlała by się kolejna sekwencja tekstu Akapity czystego tekstu rozdzielam <BR>. Wygląda to tak: tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst <BR> <BR> tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst tekst <BR> <BR> itd. Może ktoś ma jakiś pomysł jak to ugryźć lub może mnie odesłać do podobnego skryptu do analizy :-) Z góry dzięki! |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Ja mam pewien skrpyt, ale musisz sobie go przerobic.
Kod <?php
$limit=20; // iloć wierszy która ma zostać ?ć $connection = mysql_connect(HOST , USER , PASSWORD); $db = mysql_select_db(DB, $connection); $numresults=mysql_query("select * from TABLE order by SOMETHING", $connection); $numrows=mysql_num_rows($numresults); // jeżeli skrypt został już wywołany to zmienna $offset=1 inaczej $offset=0 if (empty($offset)) { $offset=0; } // pobranie zbioru wyników $result=mysql_query("select * from TABLE order by SOMETHING limit $offset,$limit"); // teraz można wywietlić zbiór wynikóna while ($data=mysql_fetch_array($result)) { // tutaj powinien znale?ć się kod który wy?wietli dane np. na ekranie } // następnie musimy zrobić linki do pozostałych wyników if ($offset!=0) { // ominięcie POPRZEDNI jeżeli offset=0 $prevoffset=$offset-$limit; print "<a href="$PHP_SELF?offset=$prevoffset">POPRZEDNI</a> n"; } // obliczenie liczby stron które potrzebują linki $pages=intval($numrows/$limit); // zmienna $pages zawiera teraz całkowitą liczbę potrzebnych stron if ($numrows%$limit) { // jeżeli występuje reszta z dzielenia to dodajemy jeszcze jedną stronę $pages++; } for ($i=1;$i<=$pages;$i++) { // wyswietlenie 1 2 3 4 ... $newoffset=$limit*($i-1); print "<a href="$PHP_SELF?offset=$newoffset">$i</a> n"; } // sprawdzenie czy bieżąca strona nie jest ostatnią if (!((($offset/$limit)+1)==$pages) && $pages!=1) { // niejest ostatnią stroną więc wywietl NASTĘc $newoffset=$offset+$limit; print "<a href="$PHP_SELF?offset=$newoffset">NASTĘPNY</a><p>n"; } ?> No, a teraz ladnie podziekowac ![]() -------------------- Polacy Nie Gęsi Swój Portal Mają !!
...:[Red. Nacz. PPS]:... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 27.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
No z linkami to ja tez tak umiem ;-) Mam tylko problem z tekstem ciągłym. Nie wiem jak go rozbić...
Coś mi się kojarzy że może rozbić go wyrażeniami regularnymi (?) i wrzucić w tablicę. Chyba tędy droga, ale jeszcze sporo przede mną ;-) Czas na kaffkę :-) |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
No to zrob tak....
Jeden tekst sie sklada z dwoch: 1 czesci i 2 (np.: rozwiniecie). I potem Wyswietlasz 1 czesc i dajesz Czytaj wiecej i sie druga czesc pokazuje... -------------------- Polacy Nie Gęsi Swój Portal Mają !!
...:[Red. Nacz. PPS]:... |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 602 Pomógł: 0 Dołączył: -- Skąd: W - WA -> GRO Ostrzeżenie: (0%) ![]() ![]() |
Cytat No to zrob tak....
Jeden tekst sie sklada z dwoch: 1 czesci i 2 (np.: rozwiniecie). I potem Wyswietlasz 1 czesc i dajesz Czytaj wiecej i sie druga czesc pokazuje... AnoniM_MC: Mam male pytanie - umiesz czytac ze zrozumieniem :?: Czlowiek chce wyswietlic tekst w czesciach (ma jakis duzy string i chce go sortowac w CZESCIACH) :!: Tu naprawde nie chodzi o nabijanie cyferek pod emblematem :!: Najprosciej to zrobic (jesli opierasz aplikacje o SQL) dzielac go z pomoca wyrazen regularnych na mniejsze fragmenty i tak wrzucac do bazy. Dalej juz chyba wiesz jak sie tym zajac :?: ![]() -------------------- Zanim zadasz pytanie, zawsze wczesniej zajrzyj do manuala ( pl.php.net/manual/pl/ ).
Szukasz skryptow - www.hotscripts.com |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
Za bardzo czasu nie mialem i nie przeczytalem calego.
![]() -------------------- Polacy Nie Gęsi Swój Portal Mają !!
...:[Red. Nacz. PPS]:... |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 27.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Najprosciej to zrobic (jesli opierasz aplikacje o SQL) dzielac go z pomoca wyrazen regularnych na mniejsze fragmenty i tak wrzucac do bazy. Dalej juz chyba wiesz jak sie tym zajac :?: :D
W tym jest właśnie problem. Teksty - całe archiwum - jest już w bazie w takiej postaci na podałem wyżej. Mogę więc jedynie pobrac całość tekstu z rekordu. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
swojego czasu napisalem cos takiego:
Kod $content = substr( $text, 0, $max_len );
$content = substr( $text, 0, strrpos( $content, " " ) ); nie jest to jakis "piekny" kod ![]() $text - przykladowo artykul z bazy d. $content - zwroci kawalek textu Wystarczy teraz tylko to przerobic i powinno byc ok |
|
|
![]()
Post
#9
|
|
![]() Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Jeśli zależy Ci na podzieleniu tekstu na fragmenty, a podział ma być przeprowadzany zgodnie z podziałem na akapity to problem jest sądze niewielki. Ja bym to zrobił w ten sposób:
Kod <?php
$text='Młoda, ciemnowłosa, starannie umalowana dziewczyna w stroju wieczorowym jedzie elegancką limuzyną. Limuzyna zatrzymuje się na poboczu. Nie taki był jednak cel podróży, dziewczyna, zaniepokojona, protestuje. Kierowca mierzy do niej z pistoletu i każe jej wysiadać. W tym momencie w limuzynę uderza samochód pełen rozbawionych młodych ludzi.<BR>Dziewczynie udaje się wyjść cało z wypadku. Słaniając się na nogach idzie przed siebie, schodząc w dół na Sunset Blv. Zasypia w krzakach. Jest wyraźnie zdenerwowana, zdezorientowana i zagubiona. Budzą ją głosy. Starsza zadbana kobieta o pysznych rudych włosach dyryguje szoferem znoszącym bagaże do samochodu. Korzystając z chwili nieuwagi właścicielki, dziewczyna wślizguje się do domu, gdzie kuli się na podłodze po stołem.<BR>Dwaj mężczyźni rozmawiają w barze. Jeden jest młodszy, przejęty i nerwowy, drugi starszy i trzymający trochę dystans. Młodszy opowiada mu o swoim śnie, w którym obaj się znajdują - miejsce jest to samo, bar Winkiego, a atmosfera jest przepełniona irracjonalnym, niesamowitym strachem. "Nagle" opowiada chłopak "zdaję sobie sprawę co jest przyczyną tego strachu". Na zapleczu baru jest jakiś mężczyzna. Ma straszną twarz - twarz taką, że chciałoby się już nigdy więcej nie oglądać. Ale przecież to tylko sen - wystarczy pójść na zaplecze i przekonać się na własne oczy że niczego tam nie ma. Tak też robią. I rzeczywiście zza węgła wyłania się o obszarpany człowiek o strasznej twarzy, ni to indiańskiego szamana, ni to demona...ten, który to wyśnił, krzyczy i mdleje.<BR>Lotnisko. Słodka blondynka, z gatunku takich, co to zawsze zostają gwiazdami szkoły i umawiają się z kapitanem drużyny footballowej, żegna się na lotnisku z towarzyszami podróży - parą miłych staruszków. Życzą jej szczęście w tym mieście snów, żeby jej marzenie o byciu gwiazdą - a przynajmniej dobrą aktorką - się spełniło. Jak za dotknięciem czarodziejskiej różdżki zjawia się taksówkarz, zanosi jej bagaże do samochodu, po prostu - wielki świat!<BR>My zaś widzimy parę staruszków w taksówce. Śmieją się do rozpuku, wyglądają jak ludzie, którym się udał świetny kawał. Śmieją się...ale z kogo? Z Betty - tak ma na imię jasnowłosa dziewczyna - czy może... z nas?'; function split_to_paragraphs($text='', $regexp='/<br>/i') /* ** Funkcja zwraca tekst podzielony na paragrafy, opisany ** dodatkowo pozycją w tekście i długością paragrafu. ** Zwracana tablica ma postać: ** ** Array ** ( ** [0] => Array ** ( ** [content] => treść akapitu pierwszego ** [offset] => pozycja akapitu ** [length] => długość akapitu ** ) ** ** [1] => Array ** ( ** [content] => treść akapitu drugiego ** [offset] => pozycja akapitu ** [length] => długość akapitu ** ) ** itd. ** ) ** ** Drugi parametr może posłużyć do podzielenia paragrafu ** według innych kryteriów niż znacznik <BR> */ { function describe_array($element) //podfunkcja opisująca paragraf { $element_length=strlen($element); $element=array('content' => $element, 'offset' =>$GLOBALS['offset'], 'length' => $element_length); $GLOBALS['offset']+=$element_length; return $element; } $GLOBALS['offset']=0; return array_map('describe_array',preg_split($regexp, $text)); }; function group_paragraphs($paragraphs, $packet_size, $packet_type='GP_BY_SIZE') /* ** Funkcja grupuje paragrafy w pakiety wielkości $packet_size. ** Każdy pakiet zawiera co najmniej jeden paragraf. Jeśli wielkość ** pakietu przekroczy dopuszczalny rozmiar, następny paragraf ** zostanie przydzielony do kolejnego pakietu. ** Trzeci parametr określa kryterium grupowania. Mogą być to: ** GP_BY_SIZE - według długości pakietu w znakach ** (np. pakiet wielkości 1000 znaków) ** GP_BY_AMOUNT - według ilości paragrafów w pakiecie ** (np. nie więcej niż 3 paragrafy w pakiecie) ** Tablica pakietów zwracana przez funkcję posiada następujące klucze: ** 'content' => tablica zawierająca paragrafy danego pakietu ** 'length' => łączna długość paragrafu w znakach ** 'offset' => pozycja początku pakietu ** 'amount' => liczba paragrafów w pakiecie */ { if (is_array($paragraphs)) { $local_size=$amount=$length=$offset=0; foreach ($paragraphs as $para) { $amount++; $length+=$para['length']; if ($packet_type=='GP_BY_AMOUNT') {$local_size=$amount;} else {$local_size=$length;}; $packet_content[]=$para; if ($local_size>=$packet_size) { $packet['content']=$packet_content; $packet['length']=$length; $packet['offset']=$packet_content[0]['offset']; $packet['amount']=$amount; $packets[]=$packet; $local_size=$amount=$length=$offset=0; $packet_content=array(); }; }; //wrzucenie ewentualnych resztek do ostatniego pakietu: if (!empty($packet_content)) { $packet['content']=$packet_content; $packet['length']=$length; $packet['offset']=$packet_content[0]['offset']; $packet['amount']=$amount; $packets[]=$packet; }; return $packets; } else return NULL; } //dzielimy sobie tekst na paragrafy: $paragraphs=split_to_paragraphs($text); //grupujemy paragrafy po 2 na stronę $pages_by_amount=group_paragraphs($paragraphs, 2, 'GP_BY_AMOUNT'); //albo po przynajmniej 500 znaków na stronę $pages_by_length=group_paragraphs($paragraphs, 500); //cztery linijki poniżej wyświetlają wyniki kolejnych kroków //print($text); //print('<HR><PRE>'); print_r($paragraphs); print('</PRE>'); //print('<HR><PRE>'); print_r($pages_by_amount); print('</PRE>'); //print('<HR><PRE>'); print_r($pages_by_length); print('</PRE>'); ?> Funkcję do wyświetlania kolejnych stron zostawiam Twojej inwencji. ![]() -------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 1.09.2002 Ostrzeżenie: (0%) ![]() ![]() |
No i objawił nam się wielbiciel Davida Lyncha
![]() ![]() |
|
|
![]()
Post
#11
|
|
![]() Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
:oops: to mnie przyłapaliście
kina zlynchowanego nigdy za wiele -------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 1.09.2002 Ostrzeżenie: (0%) ![]() ![]() |
Ale za Mulholland Drive powinni chyba David'a zlinczować
![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Nie do końca rozumiem tą uwagę. Mulholland Drive to IMO jedna z lepszych pozycji w jego dorobku. Wyjątkowo intrygująca i konsekwentnie realizowana wizja. O ile np. "Lost Highway" pracuje na swoją klasę głównie klimatem, to "Mulholland Drive" jest dopracowane we wszystkich detalach. Pamiętam, że po obejrzeniu filmu przesiedziałem potem dobre parę dni na pewnym forum, dyskutując z różnymi ludzimi nad interpretacją zdarzeń i symboli z filmu.
-------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 1.09.2002 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie
![]() W zasadzie każdy może interpretować po swojemu... Ale wyszliśmy ostro poza temat, EOT... |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.07.2025 - 16:54 |