Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stronicowanie MySQL + PHP
Forum PHP.pl > Forum > Bazy danych > MySQL
damiansobolewski
Witam serdecznie. Mam dwa pliki: jeden index.php drugi szukaj.php. Chciałbym połączyć je oba. Tak więc w pliku index.php mam tabelę, w której są rekordy z bazy danych. W pliku szukaj.php jest do tej tabeli wyszukiwarka, która szuka nicku np. szukaj.php?szukaj=Damian. Chciałbym te dwa pliki ze sobą połączyć, aby w pliku index po wpisaniu zmiennej &szukaj=Coś zniknęła tamta główna tabela, a pokazała się nowa tylko z tymi wybranymi rekordami. Link do strony: http://prosperity.y0.pl/loot/

Plik index.php
  1. //Menu ..
  2.  
  3. <?php
  4.  
  5. IF($_GET['strona'] == ''){
  6. header('Location: ?strona=1');
  7. }
  8. // łączymy się z bazą danych
  9. $connection = @mysql_connect('mysql.cba.pl', 'login', 'haslo')
  10. OR die('Brak połączenia z serwerem MySQL');
  11. $db = @mysql_select_db('cos_cba_pl', $connection)
  12. OR die('Nie mogę połączyć się z bazą danych');
  13.  
  14. /* zapytanie do konkretnej tabeli */
  15.  
  16. echo '<center><table class="tablee"><tbody><tr class="tbheadd"><td>Item</td><td>Kto</td><td>Gdzie</td><td>Kiedy</td></tr>';
  17.  
  18. IF (is_numeric($_REQUEST['strona'])) {
  19. $page = (int) $_REQUEST['strona'];
  20. IF ($page < 2) {
  21. $page = 2;
  22. }
  23. } else {
  24. $page = 2;
  25. }
  26. $na_stronie = 60;
  27. $strona = ($page - 2) * $na_stronie;
  28. $wykonaj=mysql_query("SELECT * FROM lootall");
  29. $znaleziono=mysql_num_rows($wykonaj);
  30.  
  31. $query = "SELECT * FROM lootall ORDER BY id DESC LIMIT ".($strona).",".$na_stronie."";
  32. $result = mysql_query ($query);
  33. while ($data = mysql_fetch_array($result)){
  34. echo '<tr>';
  35. echo '<td><img src="http://prosperity.margonem.pl/obrazki/itemy/'.$data['grafika'].'" class="itemborder" tip=\''.$data['tip'].'\'> ';
  36. echo '<td>'.$data['nick'].' ('.$data['herolvl'].''.$data['heroprof'].')</td>';
  37. echo '<td>'.$data['mapname'].' '.$data['herox'].','.$data['heroy'].'</td>';
  38. echo '<td>'.$data['godziny'].'<br>'.$data['dni'].'</td>';
  39. echo '</tr>';
  40.  
  41. }
  42.  
  43.  
  44.  
  45. IF($znaleziono>$na_stronie) { // sprawdza czy ma wysywietlac pager
  46. $pages_count = ceil($znaleziono / $na_stronie); // oblicza ile ma wyswietlic stron
  47. $strona_prev = $_GET['strona'] - 1; // pobiera get i odejmuje 1
  48. $strona_next = $_GET['strona'] + 1; // pobiera get i dodaje 1
  49.  
  50.  
  51. $pages_count = $pages_count + 1;
  52. echo 'Strona '.$_GET['strona'].' z '.$pages_count.'<br> ';
  53.  
  54. IF ($_GET['strona'] < 1 || $_GET['strona'] > $pages_count){
  55. header ('Location: ?strona=1');
  56. }
  57.  
  58. IF ($_GET['strona'] > 1 && $_GET['strona'] <= $pages_count) {
  59. echo '<a href="?strona=1" tip="Pierwsza"><span style="color:red"><<</span></a> <a href="?strona='.($_GET['strona']-1).'" tip="Poprzednia"><span style="color:red"> < </span></a>';
  60. }
  61.  
  62. IF ($_GET['strona'] == $pages_count){
  63. echo '
  64. <form method="get" action="http://prosperity.y0.pl/loot">
  65. <input style="text-align:center" value="'.$_GET['strona'].'" name="strona" size="1">
  66. </form>';
  67. }
  68. IF ($_GET['strona'] == 1){
  69. echo '
  70. <form method="get" action="http://prosperity.y0.pl/loot">
  71. <input style="text-align:center" value="'.$_GET['strona'].'" name="strona" size="1">
  72. </form>';
  73. }
  74. IF ($_GET['strona'] > 1 && $_GET['strona'] < $pages_count){
  75. echo '
  76. <form method="get" action="http://prosperity.y0.pl/loot">
  77. <input style="text-align:center" value="'.$_GET['strona'].'" name="strona" size="1">
  78. </form>';
  79. }
  80.  
  81. IF ($pages_count > $_GET['strona'] && $_GET['strona'] >= 1) {
  82. echo '<a href="?strona='.($_GET['strona']+1).'" tip="Następna"><span style="color:red"> ></span></a> <a href="?strona='.($pages_count).'" tip="Ostatnia"><span style="color:red"> >></span></a>';
  83. }
  84.  
  85. }
  86.  
  87.  
  88. echo '</table>';
  89. echo 'Strona '.$_GET['strona'].' z '.$pages_count.' ';
  90. mysqli_close($base);
  91.  
  92. ?>
  93.  
  94.  
  95.  
  96. </center></body></html>



Plik szukaj.php
  1. //Menu ...
  2.  
  3. <?php
  4. $_GET['szukaj']=trim($_GET['szukaj']);
  5. IF(empty($_GET['szukaj']))
  6. die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!');
  7. else
  8. {
  9.  
  10. $query="Select * From lootall Where nick Like '%{$_GET['szukaj']}%' ORDER BY id DESC";
  11. $result=mysqli_query($base,$query);
  12. $obAmount=mysqli_num_rows($result);
  13. FOR($x=0;$x<$obAmount;$x++)
  14. {
  15. $row=mysqli_fetch_assoc($result);
  16. echo '<tr>';
  17. echo '<td><img src="http://prosperity.margonem.pl/obrazki/itemy/'.$row['grafika'].'" class="itemborder" tip=\''.$row['tip'].'\'> ';
  18. echo '<td>'.$row['nick'].' ('.$row['herolvl'].''.$row['heroprof'].')</td>';
  19. echo '<td>'.$row['mapname'].' '.$row['herox'].','.$row['heroy'].'</td>';
  20. echo '<td>'.$row['godziny'].'<br>'.$row['dni'].'</td>';
  21. echo '</tr>';
  22. }
  23. }
  24. mysqli_close($base);
  25. ?>
bpskiba
SELECT * FROM lootall - Nigdy tak nie pisz!!!! aby uzyskać liczbę rekordów: SELECT count(1) FROM lootall
w 37 linii wstaw echo"</table>";

A gdzie leży problem?questionmark.gif u mnie to stronicowanie działa ok.....
damiansobolewski
A i jeszcze jedno. Jak mam tylko jedną stronę , to wyświetla się: "Strona 1 z " . Jak to naprawić?
!*!
Cytat(damiansobolewski @ 31.03.2013, 23:52:41 ) *
A i jeszcze jedno. Jak mam tylko jedną stronę , to wyświetla się: "Strona 1 z " . Jak to naprawić?


  1. if($page_count > 1)
  2. {
  3. echo 'strona 1 z'.$pages;
  4. }
  5. else
  6. {
  7. echo 'strona 1';
  8. }


Tu masz dobry kod, jak to powinno się robić. http://www.phpro.org/tutorials/Pagination-...HP-and-PDO.html
damiansobolewski
Zauważyłem, że rekordy na pierwszej i drugiej stronie są takie same. Jak to naprawić?
!*!
Cytat(damiansobolewski @ 1.04.2013, 13:43:26 ) *
Zauważyłem, że rekordy na pierwszej i drugiej stronie są takie same. Jak to naprawić?


Napisać ten kod poprawnie (lub zlecić to komuś). W chwili obecnej jest to sieczka, której nawet nie chce się sprawdzać. Moim zdaniem, wyniki są takie same, bo nie zmieniasz wartości wyniku jaki chcesz sprawdzić (przynajmniej nie zauważyłem), cały czas jest to 2 ($page).
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.