Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Nie działa podział na strony
Forum PHP.pl > Forum > Przedszkole
k4wo
Cześć,

uczę się PHP i staram się zrobić w księdze gości podział wpisów na strony. Jednak za nic w świecie nie chce mi to wyjść. Czy mógłby mi ktoś wskazać, gdzie popełniłem błąd?

  1. require('./dane.php');
  2. if($_SERVER['REQUEST_METHOD'] == 'POST')
  3. {
  4. // Dodawanie wpisu
  5. if(dodajWpis($_POST['tytul'], $_POST['autor'], $_POST['www'], $_POST['tresc']))
  6. {
  7. echo '<p>Dziękujemy, wpis został dodany prawidłowo.</p>';
  8. }
  9. else
  10. {
  11. echo '<p>Proszę wypełnić prawidłowo formularz.</p>';
  12. }
  13. echo '<p><a href="ksiega.php">Powrót</a></p>';
  14. }
  15. else
  16. {
  17. // Wyświetlanie wpisów
  18. $wpisy = pobierzWpisy();
  19. if(isset($_GET['page'])) {
  20. $page = $_GET['page'];
  21. } else {
  22. $page = 1;
  23. }
  24. global $i;
  25. $num = $i - 1;
  26. $na_stronie = 2;
  27. $ostatnia_strona = ceil($num/$na_stronie);
  28. $pierwsza_strona = "1";
  29.  
  30. echo "<a href='?page=".$pierwsza_strona."'>First page</a> ";
  31.  
  32. if($page == $pierwsza_strona) {
  33. echo "Previous ";
  34. } else {
  35. if(!isset($page)) {
  36. echo "Previous ";
  37. } else {
  38. $previous = $page - 1;
  39. echo "<a href='?page=".$previous."'>Previous</a> ";
  40. }
  41. }
  42.  
  43. if($page == $ostatnia_strona) {
  44. echo "Next ";
  45. } else {
  46. if(!isset($page)) {
  47. $next = $pierwsza_strona + 1;
  48. echo "<a href='?page=".$next."'>Next</a> ";
  49. } else {
  50. $next = $page + 1;
  51. echo "<a href='?page=".$next."'>Next</a> ";
  52. }
  53. }
  54.  
  55. echo "<a href='?page=".$ostatnia_strona."'>Last page</a>";
  56.  
  57. foreach($wpisy as $wpis)
  58. {
  59. echo '<hr /><p><b>Tytuł: <i>'.$wpis['tytul'].'</i>;
  60. Autor: '.$wpis['autor'].'; Data: '.$wpis['data'];
  61. if(strlen($wpis['www']) > 0)
  62. {
  63. echo '; <a href="'.$wpis['www'].'" target="_blank">Strona WWW</a>';
  64. }
  65. echo '</b></p>';
  66. echo '<p>'.$wpis['tresc'].'</p>';
  67. }
  68.  
  69. ?>


Chodzi mi o to, że na każdej stronie wyświetla mi wszystkie wpisy, nie ma podziału tak jak ustaliłem, że na stronie mają się pojawić tylko 2 wpisy.
nospor
No ale co się dzieje źle to mógłbyś napisać, nie sądzisz?

Zastosuj się do tego tematu:
Temat: Jak poprawnie zada pytanie
zanim napiszesz kolejnego posta
k4wo
Wybacz smile.gif

Chodzi mi o to, że na każdej stronie wyświetla mi wszystkie wpisy, nie ma podziału tak jak ustaliłem, że na stronie mają się pojawić tylko 2 wpisy.
phpion
  1. $wpisy = pobierzWpisy();

Zakładam, że tutaj pobierasz wszystkie wpisy. Musisz jako parametr funkcji przekazać numer strony i na jego podstawie wyciąć tylko część, która Cię interesuje (dla danego numeru strony).
k4wo
Cytat(phpion @ 11.01.2013, 13:56:27 ) *
Musisz jako parametr funkcji przekazać numer strony i na jego podstawie wyciąć tylko część, która Cię interesuje (dla danego numeru strony).


O ile z nr strony nie mam problemu to nie wiem jak wyciąć wpisy dla danej strony. W kilku tutorialach do których zaglądałem zostało to inaczej rozwiązane i w tym przypadku nie potrafię tego zaimplementować.
b4rt3kk
Cytat(k4wo @ 14.01.2013, 18:21:25 ) *
O ile z nr strony nie mam problemu to nie wiem jak wyciąć wpisy dla danej strony. W kilku tutorialach do których zaglądałem zostało to inaczej rozwiązane i w tym przypadku nie potrafię tego zaimplementować.


Musisz ograniczyć wyniki zapytania, chociażby tak:

  1. SELECT * FROM tabela_wpisow LIMIT ($nr_strony-1)*$liczba_wpisow_na_strone, $liczba_wpisow_na_strone


Jeśli strony liczysz od 0, wtedy $nr_strony-1 nie jest konieczne, zostawiasz tylko $nr_strony.
k4wo
W tym problem, że nie bardzo wiem, jak to wykorzystać bo dane zapisuje do pliku txt.

  1. <?php
  2. define('WPISY', './wpisy.txt');
  3. $i = 1;
  4.  
  5. function dodajWpis($tytul, $autor, $www, $tresc)
  6. {
  7. // Ucinanie bialych znakow
  8. $tytul = trim($tytul);
  9. $autor = trim($autor);
  10. $www = trim($www);
  11. $tresc = trim($tresc);
  12.  
  13. // Kontrola danych
  14.  
  15. if(strlen($tytul) < 3)
  16. {
  17. return false;
  18. }
  19.  
  20. if(strlen($autor) < 3)
  21. {
  22. return false;
  23. }
  24.  
  25. if(strlen($tresc) < 10)
  26. {
  27. return false;
  28. }
  29.  
  30. if(strlen($www) > 0)
  31. {
  32. // Jesli adres nie zaczyna sie od http:// to dodaj to
  33. if(strpos($www, 'http://') !== 0)
  34. {
  35. $www = 'http://'.$www;
  36. }
  37. }
  38.  
  39. // Dodawanie
  40.  
  41. $f = fopen(WPISY, 'a');
  42.  
  43. $dane = array(0 =>
  44. time(),
  45. );
  46.  
  47. fwrite($f, implode('|', $dane)."\r\n");
  48. fclose($f);
  49. return true;
  50. } // end dodajWpis();
  51.  
  52. function pobierzWpisy($pageNumber, $whichEntry)
  53. {
  54. $wpisy = array_reverse(file(WPISY));
  55.  
  56. global $i;
  57. $rezultat = array();
  58. foreach($wpisy as $wpis)
  59. {
  60. $wpis = explode('|', trim($wpis));
  61.  
  62. $rezultat[] = array(
  63. 'id' => $i,
  64. 'tytul' => base64_decode($wpis[0]),
  65. 'autor' => base64_decode($wpis[1]),
  66. 'data' => date('d.m.Y, H:i', $wpis[2]),
  67. 'www' => base64_decode($wpis[3]),
  68. 'tresc' => base64_decode($wpis[4])
  69. );
  70. $i++;
  71. }
  72. return $rezultat;
  73. } // end pobierzWpisy();
  74.  
  75.  
  76. ?>
b4rt3kk
A rzeczywiście, oparłeś system na plikach tekstowych, ale to również nie problem:

  1. function pobierzWpisy($pageNumber, $whichEntry)
  2. {
  3. $wpisy = array_reverse(file(WPISY));
  4. $liczbaWpisowNaStrone = 10;
  5.  
  6. global $i;
  7. $rezultat = array();
  8. for ($j=($pageNumber-1)*$liczbaWpisowNaStrone; $j<=($pageNumber-1)*$liczbaWpisowNaStrone+$liczbaWpisowNaStrone; $j++)
  9. {
  10. $wpis = explode('|', trim($wpisy[$j]));
  11.  
  12. $rezultat[] = array(
  13. 'id' => $i,
  14. 'tytul' => base64_decode($wpis[0]),
  15. 'autor' => base64_decode($wpis[1]),
  16. 'data' => date('d.m.Y, H:i', $wpis[2]),
  17. 'www' => base64_decode($wpis[3]),
  18. 'tresc' => base64_decode($wpis[4])
  19. );
  20. $i++;
  21. }
  22. return $rezultat;
  23. } // end pobierzWpisy();


Tylko po co Ci jest globalna zmienna $i? Nie jest to zbyt dobra praktyka.
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.