![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 238 Pomógł: 1 Dołączył: 27.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Poniżej przedstawiam kod php, którego zadaniem jest wyświetlenie pola TRESC z tabeli bazy danych, w taki sposób, żeby każda strona składała się z określonej ilości znaków ($max_words). Za pomocą nawigacji liczbowej (ala wyszukiwarki) będzie można przejść do następnej strony tekstu.
[php:1:2660eee6e2] $query = mysql_query("SELECT tresc FROM tabela where id='1';"); $record = mysql_fetch_array($query); $tresc = $record[0]; $ile_znakow_all=strlen($tresc); //ilosc znakow w artykule $max_words=600; //maksymalna ilosc znakow na stronie $ile_stron=round($ile_znakow_all / $max_words); //ilosc stron do wyswietlenia for ($i=0; $i<$ile_stron; $i++) { $numer=$i+1; echo"<a href=test.php?ktory=$i>[$numer]</A> |"; } $txt.=substr($tresc,$ktory*$max_words,$max_words); echo" $txt"; [/php:1:2660eee6e2] Wszystko byłoby dobrze, gdyby nie to, że dzielone są wyrazy. Da się zrobić tak, żeby kod nie rozrywał pojedynczych wyrazów, mimo że $max_words zostało przekroczone. A jeszcze lepiej by było gdyby kod uwzględniał całe zdania i dopiero wtedy ucinał tekst. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 238 Pomógł: 1 Dołączył: 27.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
od po poprawieniu wygląda tak
[php:1:d466cbba1b] $query = mysql_query("SELECT tresc FROM biografie where id='1';"); $record = mysql_fetch_array($query); $tresc = $record[0]; $ile_znakow_all=strlen($tresc); //ilosc znakow w artykule $max_words=600; //maksymalna ilosc znakow na stronie $ile_stron=round($ile_znakow_all / $max_words); //ilosc stron do wyswietlenia for ($i=0; $i<$ile_stron; $i++) { $numer=$i+1; echo"<a href=test.php?ktory=$i>[$numer]</A> |"; } // $txt.=substr($tresc,$ktory*$max_words,$max_words); // echo" $txt"; echo '<BR>'; $tablica_ze_zdaniami=explode('.', $tresc); foreach($tablica_ze_zdaniami as $zdanie){ $sumaznakow += strlen($zdanie); echo $zdanie.'.'; //wyswietlasz zdanie i dopisukesz kropke if($sumaznakow > $max_words){break;} } [/php:1:d466cbba1b] Problem polega na tym, żeby "złączyć" pasek liczbowy nawigcyjny z wyświetlanym tekstem, bo w tej chwili wygląda to tak, że po kliknięciu w dowolnąliczbe w nawigaorze to wyświetla sięten sam tekst(od początku aż do limitu znaków ze zmiennej max_words). Myśle, że trzeba będzie zastosowaćjakieśfunkcje związane z tablicami, ale mogę sobie z tym poadzić |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 17:53 |