Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Stronicowanie - następna strona pusta
MaryonD
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 30.10.2012

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


Witam, proszę o sprawdzenie skryptu. Nie moge sobie dać rady z tym, żeby prawidłowo stronicowało mi znalezione rekordy.
Funkcja pokazuje mi wszystkie znalezione wartości z danych wierszy w jednej lini, i po kliknięciu na następną strone to ona jest pusta, a powinna wyświetlić dalsze rekordy.

  1. function pokaz() {
  2.  
  3. $error = array();
  4.  
  5. if (isset($_POST["przycisk"])) {
  6. if (empty($_POST["szukaj"])) {$error[1] = true;} else {
  7.  
  8. $ip="localhost";
  9. $login="root";
  10. $haslo="";
  11. $baza="mysql";
  12. $tabela="towary";
  13. $szukaj = mysql_escape_string($_POST["szukaj"]);
  14.  
  15. mysql_connect ($ip,$login,$haslo);
  16. mysql_query("SET NAMES 'utf8'");
  17.  
  18. $na_stronie = 1; //każda strona ma wyświetlać po jednym wyniku
  19. $wynik = mysql_query("SELECT COUNT(id) FROM $tabela WHERE pole1='$szukaj' OR pole2='$szukaj' OR pole3='$szukaj'");
  20. //sprawdzam ile razy występuje rekord z szukanym słowem w bazie w celu przeliczenia na wyświetlane strony.
  21. $a = mysql_fetch_array($wynik);
  22. $liczba_wpisow = $a[0];
  23. $liczba_stron = ceil($liczba_wpisow / $na_stronie); echo $liczba_stron.' --- ';
  24.  
  25. if (isset($_GET['strona'])) {
  26.  
  27. if ($_GET['strona'] < 1 || $_GET['strona'] > $liczba_stron) $strona = 1;
  28. else $strona = $_GET['strona'];
  29. }
  30.  
  31. else $strona = 1;
  32. $od = $na_stronie * ($strona - 1);
  33.  
  34. $zapytanie2 = mysql_query("select id from $tabela WHERE pole1='$szukaj' OR pole2='$szukaj' OR pole3='$szukaj'");
  35. //sprawdzam ID rekordów z których pola chcę wyświetlić
  36. while ($tablica = mysql_fetch_row($zapytanie2)) {
  37.  
  38. $wykonaj = mysql_query ("select * from $tabela WHERE id='$tablica[0]' LIMIT $od , $na_stronie");
  39. $show = mysql_fetch_array($wykonaj);
  40.  
  41. echo($show['pole1'].' ');
  42. echo($show['pole2'].' ');
  43. echo($show['pole3'].' ');
  44.  
  45. }
  46. if ($liczba_wpisow > $na_stronie) {
  47.  
  48. $poprzednia = $strona - 1;
  49. $nastepna = $strona + 1;
  50.  
  51. if ($poprzednia > 0) {
  52. echo '<a id="POPRZEDNIA" href="test.php?strona='.$poprzednia.'">poprzednia strona</a>';
  53. }
  54.  
  55. if ($nastepna <= $liczba_stron) {
  56. echo '<a id="NASTEPNA" href="test.php?strona='.$nastepna.'">następna strona</a>';
  57. }
  58.  
  59. }
  60. }
  61. }


Z góry dziękuje za pomoc!

Ten post edytował MaryonD 20.11.2012, 11:29:34
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Do zapytania zapodajesz dane z formularza. Klikając na następną stronę, tych danych już nie ma panie kolego.
Musisz te dane przekazać również na następną stronę. Możesz to zrobić przez sesję, ale przez url. Obie metody opisałem tutaj:
http://nospor.pl/formularz-i-stronicowanie...anie-stanu.html
Go to the top of the page
+Quote Post
MaryonD
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 30.10.2012

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


Ok, ale ten formularz i tak wyświetla mi wszystkie rekordy na raz na pierwszej stronie, jeden po drugim.
Nie "porcjuje" na poszczególne podstrony

JEszcze jedno pytanie:

Chcąc wykorzytsać sesje to czy wszystko tzn.
  1.  
  2. $_SESSION['form'] = array(
  3. 'szukaj' => $_POST['szukaj'],
  4. );
  5.  
  6. $formData = array(
  7. 'szukaj' => !isset($_SESSION['form']) ? null : $_SESSION['form']['szukaj'],
  8. );
  9.  
  10. echo $formData['szukaj'];

Definiuje w obrębie moje funkcji czy poza?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ad1) Jaki formularz? Twój oryginalny?
ad2) Definiujesz tam, gdzie z tego korzystasz. Jak korzystasz w funkcji to moze byc w funkcji
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 16:30