Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem ze stronicowaniem..
Forum PHP.pl > Forum > Przedszkole
GryFF
Problem polega na tym, że na stronie jest więcej newsów niż powinno być oraz po przejściu na strone np 3 newsy są te same

  1. <?PHP
  2. include('news.php');
  3. ?>
  4. <?php
  5. $count=3; //wyników na strone
  6. $offset=0; //obecnie wyświetlana strona
  7.  
  8. if(isset($_GET['count'])) //jeśli wybrano za pomocą GET ilość wyników
  9. {
  10. $count = $_GET['count'];
  11. }
  12. if(isset($_GET['offset'])) //jeśli wybrano kolejne strony z wynikami
  13. {
  14. $offset = $count*$_GET['offset'];
  15. }
  16.  
  17. // zapytanie zwracające ilosc rekordów z tabeli
  18. $sql = 'SELECT COUNT(*) FROM `newsy`';
  19. $result = mysql_query($sql);
  20. $r = mysql_fetch_array($result);
  21. //podział wyników na strony
  22. $pages = ceil($r[0]/$count);
  23. //wybranie wyników dla bieżących parametrów offset
  24. $select = 'SELECT * FROM `newsy` ORDER BY `id` desc LIMIT '.$count.' offset '.$offset.';';
  25.  
  26.  
  27. $q=mysql_query($select)or die(mysql_error());
  28. while($row=mysql_fetch_array($q))
  29. {
  30. //wyświetlanie rekordów z tabeli za pomocą zmiennej $row
  31. }
  32.  
  33.  
  34. echo "<b>kolejne strony</b>";
  35.  
  36. for($i=0;$i<$pages;$i++) //wyswietlanie numerów stron
  37. {
  38. if($i*$count==$offset)
  39. {
  40. echo ' '.$i.' ';
  41. }else{
  42. echo '<a href="index1.php?count='.$count.'&offset='.$i.'"> '.$i.' </a>'; //tworzenie odnośnika z odpowiednimi parametrami offset i count
  43. }
  44. }
  45. ?>



o to kod, co robię źle ? :/ męcze się od 3 godziny..




ps wszystko znajdziecie na www.ospnadolany.cba.pl
Bateria
masz tu w pełni sprawnny przykład paginacji, porównaj je sobie
http://jakub-cieslak.pl/phpmysql-paginacja...wanie/#more-128
GryFF
To samo, proszę zobaczyć:

http://ospnadolany.cba.pl/testu.php
Bateria
Nie powinno to być przypadkiem tak:
  1. $select = 'SELECT * FROM newsy ORDER BY id desc LIMIT $offset, $count';
GryFF
raczej nie powinno bo teraz mam taki bład..

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$offset, $count' at line 1
Bateria
  1. <?php
  2. $query_nr = mysql_query("SELECT COUNT(*) FROM newsy");
  3.  
  4. $wynikow = 15;
  5. $nastr = mysql_fetch_array($query_nr);
  6. $stron = ceil($nastr[0]/$wynikow);
  7. if(isset($_GET['page'])){
  8. $page = $_GET['page'];
  9. $odkad = $page * $wynikow - 15;
  10. } else {
  11. $page = 1;
  12. $odkad = 0;
  13. }
  14.  
  15. $poprzenia = $page -1;
  16. $nastepna = $page +1;
  17.  
  18. $query = mysql_query("SELECT * FROM newsy LIMIT $odkad, $wynikow");
  19.  
  20. while($row=mysql_fetch_array($query))
  21. {
  22. //wyświetlanie rekordów z tabeli za pomocą zmiennej $row
  23. }
  24.  
  25. echo('<br>');
  26. echo('<<');
  27. if($page != 1){
  28. echo('<a href="?page='.$poprzenia.'">Poprzenia</a>');
  29. }
  30. for($str=1; $str<=$stron; $str++){
  31. echo(' <a href="?page='.$str.'">'.$str.'</a> ');
  32. }
  33. if($page != $stron){
  34. echo('<a href="?page='.$nastepna.'">Następna</a>');
  35. }
  36. echo('>>');
  37. ?>
GryFF
To samo tzn nadal nie działa poprawnie :/

http://ospnadolany.cba.pl/index.php
Bateria
poprawiłem poprzedni post, jak zadziała to pisz
GryFF
nie działa :/
Bateria
powiedz mi... ile masz łącznie wszystkich newsów, i ile chcesz mieć na stronie głównej? na 2 i 3 chcesz mieć tyle samo co na pierwszej?
Dominator
Może tak ?

  1. $select = "SELECT * FROM `newsy` ORDER BY `id` desc LIMIT '$count', '$offset'";
GryFF
w pewien sposób działa bo jak zrobiłem 16 news to zrobiła się następna strona tylko na następnej stron i było to samo co na pierwszej, ogólnie chcę aby na jednej stronie było 5 newsów czyli najnowsze na początku a ten np 6 news aby był już na stronie drugiej.
Bateria
zresztą mniejsza oto.
  1. <?php
  2. $query_nr = mysql_query("SELECT COUNT(*) FROM newsy");
  3.  
  4. $wynikow = 5;
  5. $nastr = mysql_fetch_array($query_nr);
  6. $stron = ceil($nastr[0]/$wynikow);
  7. if(isset($_GET['page'])){
  8. $page = $_GET['page'];
  9. $odkad = $page * $wynikow - 5;
  10. } else {
  11. $page = 1;
  12. $odkad = 0;
  13. }
  14.  
  15. $poprzenia = $page -1;
  16. $nastepna = $page +1;
  17.  
  18. $query = mysql_query("SELECT * FROM newsy LIMIT $odkad, $wynikow");
  19.  
  20. while($row=mysql_fetch_array($query))
  21. {
  22. //wyświetlanie rekordów z tabeli za pomocą zmiennej $row
  23. }
  24.  
  25. echo('<br>');
  26. echo('<<');
  27. if($page != 1){
  28. echo('<a href="?page='.$poprzenia.'">Poprzenia</a>');
  29. }
  30. for($str=1; $str<=$stron; $str++){
  31. echo(' <a href="?page='.$str.'">'.$str.'</a> ');
  32. }
  33. if($page != $stron){
  34. echo('<a href="?page='.$nastepna.'">Następna</a>');
  35. }
  36. echo('>>');
  37. ?>

U mnie ten kod w pełni działa, więc musi działać i u Ciebie.
GryFF
u mnie nie działa, sam zobacz.. www.ospnadolany.cba.pl



wkleiłem ten kod co powiedziałeś, że u ciebie działa.




mam tak :

  1. <?PHP
  2. include('news.php');
  3. ?>
  4.  
  5.  
  6. <?php
  7. $query_nr = mysql_query("SELECT COUNT(*) FROM newsy");
  8.  
  9. $wynikow = 5;
  10. $nastr = mysql_fetch_array($query_nr);
  11. $stron = ceil($nastr[0]/$wynikow);
  12. if(isset($_GET['page'])){
  13. $page = $_GET['page'];
  14. $odkad = $page * $wynikow - 5;
  15. } else {
  16. $page = 1;
  17. $odkad = 0;
  18. }
  19.  
  20. $poprzenia = $page -1;
  21. $nastepna = $page +1;
  22.  
  23. $query = mysql_query("SELECT * FROM newsy LIMIT $odkad, $wynikow");
  24.  
  25. while($row=mysql_fetch_array($query))
  26. {
  27. //wyświetlanie rekordów z tabeli za pomocą zmiennej $row
  28. }
  29.  
  30. echo('<br>');
  31. echo('<<');
  32. if($page != 1){
  33. echo('<a href="?page='.$poprzenia.'">Poprzenia</a>');
  34. }
  35. for($str=1; $str<=$stron; $str++){
  36. echo(' <a href="?page='.$str.'">'.$str.'</a> ');
  37. }
  38. if($page != $stron){
  39. echo('<a href="?page='.$nastepna.'">Następna</a>');
  40. }
  41. echo('>>');
  42. ?>




news.php

wygląda tak

  1. <?
  2. #Informacje o bazie danych includowane z pliku news_cfg.php
  3. include("news_cfg.php");
  4.  
  5. #łączenie się z bazą danych. Wymagane do odczytania Newsów z bazy
  6. $connect = mysql_connect($host, $user, $haslo) or die('<h2>Błąd podczasz łączenia się z bazą danych');
  7. $wybieranie = mysql_select_db($base, $connect) or die("<h2>Błąd Wybierania bazy danych, Prawdopodobnie taka Baza nie istnieje");
  8. $stworz = mysql_query('CREATE TABLE IF NOT EXISTS `newsy` (
  9. `id` int(11) NOT NULL AUTO_INCREMENT,
  10. `tytul` text NOT NULL,
  11. `opis` text NOT NULL,
  12. `autor` text NOT NULL,
  13. `data` text NOT NULL,
  14. `tresc` text NOT NULL,
  15. PRIMARY KEY (id)
  16. )
  17. ') or die('Nie mogę stworzyć tabeli w bazie danych ! ');
  18.  
  19. #Pobieranie Newsów z bazy danych
  20. $pobierz = mysql_query("SELECT * from `newsy` ORDER BY `id` DESC LIMIT 0, $ile");
  21.  
  22. #pętla
  23. while($news = mysql_fetch_array($pobierz))
  24. {
  25. include("wyglad.php");
  26. }
  27.  
  28. ?>




a wyglad.php


  1. <?
  2.  
  3. #Dane
  4.  
  5. # {$news['autor']} = Autor Newsa
  6. # {$news['data']} = Data Dodania Newsa
  7. # {$news['opis']} = Opis Newsa
  8. # {$news['tytul']} = tytul newsa
  9. # {$news['tresc']} = Tresc Newsa
  10. # {$news['id']} = ID newsa
  11.  
  12. #Koniec danych
  13.  
  14.  
  15. #w znacznikach echo <<< wyglad umieszczacie czysty KOD HTML, z użyciem {$news['cos']} gdzie cos to AUTOR/DATA/OPIS/TYTUL/TRESC/ID
  16.  
  17.  
  18. echo <<< wyglad
  19. <div class="flower"></div>
  20. <div class="post"><div align="center">
  21. <h1 class="title">{$news['tytul']}</a></h1>
  22. <div class="entry">
  23.   <p> {$news['tresc']} </p>
  24.   <p> <strong><div align="right"><font size="1">dodano : {$news['data']} <br /> autor : {$news['autor']} </strong></font></div><p>
  25. <p class="links"><a href="#" class="more"></a></p></div>
  26.  
  27. </div>
  28. </div>
  29.  
  30. wyglad;
  31. ?>
Bateria
może czas najwyższy zgonić winę na bazę danych lub plik news.php (cokolwiek w nim masz).
Spróbuj stworzyć inną, niezależną tabelę i wniej uruchomić ten kod paginacji.
GryFF
edytowałem post wyżej proszę zobaczyć news.php oraz wyglad.php .

pomoże ktoś?
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.