Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dzielenie długiego textu na strony, Chce aby np. text składający sie z 2000 znaków dzilił na 2 strony po 1
miki_ok
post 19.07.2006, 14:05:54
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Nowy Targ

Ostrzeżenie: (0%)
-----


Mam texty które ladowane są z bazy.
Problem w tym że te texty są strasznie długie i rozjeżdżają mi moją ciasną stronkę.
Czy jest jakaś możliwość aby dzielił ten długi text na pare stron.
Nie mam powysłu jak to zrobić.


Z góry dziekuję za pomoc.
Pozdrawiam


--------------------
Pozdrawiam,
Mikołaj F.
Go to the top of the page
+Quote Post
thornag
post 19.07.2006, 16:22:55
Post #2





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


  1. <?php
  2. function cutString($string, $lenght) {
  3. if(strlen($string) <= $lenght) {
  4. return $string;
  5. }
  6. else {
  7. for ($i = $lenght; ; $i++) {
  8. if ($string{$i} == " " or $string{$i} == "!" or $string{$i} == "," or $string{$i} == ":" or $string{$i} == ";"or $string{$i} == "?") {
  9. $string = substr($string, 0, $i);
  10. return $string;
  11. break;
  12. } 
  13. }
  14. }
  15. }
  16. ?>


Z palca na syzbko ale powinno dzialac.


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
miki_ok
post 20.07.2006, 09:44:46
Post #3





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Nowy Targ

Ostrzeżenie: (0%)
-----


Nie wiem może ja jakiś nie do końca jestem ale mi to nie działa. sad.gif


--------------------
Pozdrawiam,
Mikołaj F.
Go to the top of the page
+Quote Post
thornag
post 20.07.2006, 09:46:30
Post #4





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Sposob uzycia


  1. <?php
  2. echo cutString($tekst, $ile_znakow_chcesz);
  3. ?>


Testowalem wszystko jest w porzadku.


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
miki_ok
post 20.07.2006, 10:11:43
Post #5





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Nowy Targ

Ostrzeżenie: (0%)
-----


Na początek poprosze o nie denerwowanie się. biggrin.gif

Mam takie cuś.
  1. <?php
  2.  
  3. if($wiersz=mysql_fetch_array ($wykonaj)) {
  4. echo 
  5. <div class="opis">".$wiersz['opis']."</div>
  6.  ";}
  7. ?>


Gdzie mam to zaplikować ?
<?php
echo cutString($tekst, $ile_znakow_chcesz);
?>


--------------------
Pozdrawiam,
Mikołaj F.
Go to the top of the page
+Quote Post
Vogel
post 20.07.2006, 10:35:08
Post #6





Grupa: Zarejestrowani
Postów: 402
Pomógł: 0
Dołączył: 20.01.2003

Ostrzeżenie: (0%)
-----


@thrnag: kiedys juz bylo cos podobnego. tylko po co tworzyc takie koszmarki z FOR() ? nie lepiej uzyc wyrazen regularnych? pozatym on wycina tylko PIERWSZE ?"iks" znakow. a co z kolejnymi stronami? moja propozycja jest taka:

  1. <?php
  2. function cutString($tekst, $od, $ile) {
  3.  return preg_replace("#((.*? |$){0,".$od."})((.*? |$){0,".$ile."}).*#si", "$3", $tekst.' ');
  4. }
  5. ?>


gdzie podajesz $tekst - przycinany tekst, $od - od ktorego slowa tniemy i $ile - ile kolejnych slow ma zwrocic.


--------------------
Go to the top of the page
+Quote Post
thornag
post 20.07.2006, 11:59:27
Post #7





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


@Vogel, rzeczywiscie nie pomyslalem o tym ze trzeba to wyswietlic na nastepnej stronie smile.gif
Wyrazen regularnych to sie boje jak ognia, w kocu nadejdzie dzien kiedy sie za to wezme pokic o ciesze sie z wlasnej ignorancji :roll2:

W Twoim sposobie widze jednak mala luke. Jesli masz strone oparta na jakims waskim i niewysokim divie i nie chcesz zeby Ci sie rozciagnelo liczenie slow nie jest najlepszym pomyslem. Pozniewaz jesli content bedzie sie skladal tylko z slow "nie, a , do , od, on" itp. bedzie go za malo w momencie slow typu "powylamywanymi, rozentuzjazmowany" i jeszcze jakis zryte wyrazy Div moze sie rozszerzyc psujac weszystko.

Nie mowie ze moj skrypt jest lepszy bo ma podobna dziure (moze mniejsze ryzyko wystapienia rozciagniecia). Ten z wyrazeniem regularnym tez dobry, chyba zaleznie od tego co sie chce osiagnac. W kazdym badz razie dzieki za przyklad.

Do tego pytanie. Czy wyrazenia regularne nie beda wolniejsze w tym przypadku.

@miki_ok

  1. <?php
  2.  
  3.  
  4. if($wiersz=mysql_fetch_array ($wykonaj)) {
  5.  
  6. echo 
  7.  
  8. <div class="opis">".cutString($wiersz['opis'], 250)."</div>
  9.  
  10.  ";}
  11.  
  12. ?>


Luo. Jesli chcesz ten sam tekst wysweitlic na nastepnej stronie to moj skrypt sie nie nadaje do uzycia go w tej sytuacji. Wtedy najlepiej.

  1. <?php
  2.  
  3.  
  4. if($wiersz=mysql_fetch_array ($wykonaj)) {
  5.  
  6. echo 
  7.  
  8. <div class="opis">".cutString($wiersz['opis'], 1, 100)."</div>
  9.  
  10.  ";}
  11.  
  12. ?>


Na kolejnej czesci

  1. <?php
  2.  
  3.  
  4. if($wiersz=mysql_fetch_array ($wykonaj)) {
  5.  
  6. echo 
  7.  
  8. <div class="opis">".cutString($wiersz['opis'],101, 200."</div>
  9.  
  10.  ";}
  11.  
  12. ?>


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
miki_ok
post 20.07.2006, 12:14:22
Post #8





Grupa: Zarejestrowani
Postów: 88
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Nowy Targ

Ostrzeżenie: (0%)
-----


Bardzo panom dziękuje za pomoc.
Al bardziej by mi zależało na czymś w stylu:
  1. <?php
  2. $ile_stron = ceil ($ile_rekordow / 5);
  3. $start_st=$strona >3?($strona - 3):1;
  4. $stop_st=$strona < ($ile_stron-3)?$start_st+6:$ile_stron;
  5.  
  6. if($start_st!=1) {
  7. echo '<< <a href="http://www.bleble.pl/strona='.(($start_st-6<1)?1:$start_st-6).'"> poprzednie </a>';
  8. echo " [...] ";}
  9. for($licznik_st=$start_st; $licznik_st<=$stop_st; $licznik_st++)
  10. {
  11. if ($licznik_st != $strona) echo '<a href="http://www.bleble.pl/strona='.$licznik_st.'"><b>';
  12. echo '&nbsp;&nbsp;'.$licznik_st;
  13. if ($licznik_st != $strona) echo '</b></a>';
  14. }
  15. if($stop_st!=$ile_stron) {echo " [...] ";
  16. echo '&nbsp;<a href="http://www.bleble.pl/strona='.(($licznik_st+3<$ile_stron)?$licznik_st+3:$ile_stron).'"> następne >></a>';}
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23. $ile_stron = ceil ($ile_rekordow / 5);
  24. ?>


Tyle że to dzieli mi na strony ale jak mam jakieś np. 40 tematów w bazie to mi dzieli np. po 10 na stronie. Niewiem może potrafilibyście to tak przerobić żeby dzieliło text. rolleyes.gif


--------------------
Pozdrawiam,
Mikołaj F.
Go to the top of the page
+Quote Post
thornag
post 20.07.2006, 12:50:54
Post #9





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Podziel ilosc znakow w stringu przez to ile chcresz ich wyswietlic na strone. Bedzies zmial wynik. Wydrukuj link i rozpocznij dzielenie pliku od slowa jakie przekazesz w GETcie


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 19:28