Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PSP][MySQL] Podział długiego tekstu na strony i spis treści
Forum PHP.pl > Forum > PHP
ITI
Mam problem. W bazie danych mam zapisane np. w polu TRESC baaaaardzo długi tekst (jakis artykul czy np. ksiazka) i potrzebowałbym go wyciągnąć z bazy i jednoczesnie podzielic na strony wg znacznikow w tekscie np. <------ KONIEC STRONY ------>.
Czyli tekst z bazy danych:

Strona 1
<------ KONIEC STRONY ------>
Strona 2
<------ KONIEC STRONY ------>

Chcialbym aby potem to bylo widoczne tak, ze na stronie 1 jest tylko tekst "strona1", na stronie 2 tekst "strona 2" itd...
Ale jest jeszcze jedno, dobrze byloby gdyby za kazdym przejsciem na odpowiednia strone nie pobierala sie cala tresc artykulu (lub ksiazki) z bazy danych, bo szkoda niepotrzebnie meczyc serwer biggrin.gif

Czy w ogole da sie cos takiego zrobic?? czy szkoda zawracac sobie tym glowe?

Do tego jeszcze by mi sie przydalo zrobic spis tresci, ale z tym to sobie poradze, bo moge zrobic jakis statyczny, ktory by mial odnosniki do odpowiednich podstron.

A moze ktos jeszcze ma inny pomysl na rozwiazanie tego problemu??
Kolega kiedys poradzil mi, aby sprobowac osobne strony dodawac do bazy jako osobne wpisy i wtedy np. wpis glowny traktowany bylby jak kategoria w ktorej znajdowalby sie spis tresci, a do niej dopisywaloby sie poszczegolne wpisy, ktore traktowane bylyby jako osobne strony.
potreb
Hmm też chciałem zrobić coś podobnego na styl e107.
Jakiś tekst, który dzielony byłby w bazie. np

{page1="strona1"}
text1 text1 text1 text1 text1 text1 text1
{end_page}

{page2="stron2"}
text2 text2 text2 text2 text2 text2 text2
{end_page}

{page3="strona3"}
text3 text3 text3 text3 text3 text3 text3
{end_page}

I od razy ustawiając znacznik page pobierany bylby np tytul, z którego tworzony byłby automatycznie spis biggrin.gif
Ale z wykonaniem gorzej.
b_chmura
jeśli chodzi o pierwsze rozwiązanie:
  1. <?php
  2. //przykładowy panel do poruszania się między stronami
  3. function Ppanel($cnt, $CntStr, $Istrona, $Pstrona, $Astrona, $Nstrona, $ALLstrona)
  4. {
  5. echo 'Aktualnie jestes na '.$Astrona.' stronie z '.$CntStr.' wszystkich.<br />';
  6.  
  7. if($Pstrona)
  8. {
  9. echo '<a href="?page='.$Pstrona.'">Poprzednia</a> | ';
  10. }
  11. else
  12. {
  13. echo 'Poprzednia | ';
  14. }
  15. $i = 1;
  16. foreach($ALLstrona as $nr)
  17. {
  18. if($i == $Astrona)
  19. {
  20. echo $nr.', ';
  21. }
  22. else
  23. {
  24. echo '<a href="?page='.$nr.'">'.$nr.'</a>, ';
  25. }
  26. $i++;
  27. }
  28.  
  29. if($Nstrona)
  30. {
  31. echo ' | <a href="?page='.$Nstrona.'">Następna</a>';
  32. }
  33. else
  34. {
  35. echo ' | Następna';
  36. }
  37. }
  38. //paginator
  39. function paginator($cnt, $Astrona = 1, $Istrona = 5)
  40. {
  41. if(!empty($cnt) or !empty($Istrona)) $CntStr = ceil($cnt/$Istrona);
  42. if($Astrona <= 0) $Astrona = 1;
  43. if($Astrona > $CntStr) $Astrona = $CntStr;
  44.  
  45. $Pstrona  = (($Astrona-1) >= 1)? ($Astrona-1): FALSE;
  46. $Nstrona  = (($Astrona+1) <= $CntStr)? ($Astrona+1): FALSE;
  47. $ALLstrona = range(1, $CntStr);
  48. $start  = $Istrona*$Astrona-$Istrona;
  49.  
  50. if($Istrona > ($cnt-$start)) $Istrona = ($cnt-$start);
  51.  
  52. $out['cnt']  = $cnt;
  53. $out['CntStr'] = $CntStr;
  54. $out['start']  = $start;
  55. $out['Istrona']  = $Istrona;
  56. $out['Pstrona']  = $Pstrona;
  57. $out['Astrona']  = $Astrona;
  58. $out['Nstrona']  = $Nstrona;
  59. $out['ALLstrona'] = $ALLstrona;
  60.  
  61. return $out;
  62. }
  63.  
  64.  
  65. $zapytanie = mysql_query();
  66. $dane = mysql_feth_array($zapytanie);
  67. $strony = explode('<------ KONIEC STRONY ------>', $dane['tresc']);
  68. $cnt = count($strony);
  69. $po_ile = 1;
  70. $page = $_GET['page'];
  71. $out = paginator($cnt, $page, $po_ile);
  72.  
  73. echo $strony[$out['Astrona']];
  74.  
  75. Ppanel($cnt, $out['CntStr'], $po_ile, $out['Pstrona'], $out['Astrona'], $out['Nstrona'], $out['ALLstrona']);
  76. ?>


coś w ten deseń
potreb
  1. <?php
  2. $str = 'jakis tekst który ma sie wyświetlic jako pierwszy<br>
  3. {end_page}
  4. jakis tekst który ma sie wyświetlic jako drugi<br>
  5. {end_page}
  6. jakis tekst który ma sie wyświetlic jako trzeci<br>
  7. {end_page}
  8. jakis tekst który ma sie wyświetlic jako czwarty<br>
  9. ';
  10.  
  11. $tab = (explode('{end_page}', $str));
  12. $s = count($tab);
  13. echo "<br>".$s;
  14.  
  15. $a = $_GET['a'];
  16. if(!isset($a)) {
  17. echo $tab[0];
  18. } else {
  19. echo $tab[$a];
  20. }
  21.  
  22. function pagin ($a, $s) {
  23. $b = 0;
  24. $c = $b+1;
  25. echo "Stron:";
  26. while ($s > $b) {
  27. echo "<a href='test.php?a=".$b."'>".$c."</a> ";
  28. $b++;
  29. $c++;
  30. }
  31. }
  32. pagin($a, $s);
  33.  
  34. ?>


Zrobiłem cosik takiego, nie jest to mistrzostwo ale zawsze coś może ktoś by to rozwinął, np paginację.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.