Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [1][2][3][4][5]... itd. strony.
waqmaz
post
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.01.2011
Skąd: Murowana Goślina

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


Cześć. Nie mam pojęcia jak to zrobić, a siedzę przy tym już od 15:00 =/ Algorytmów już wymyślać też próbowałem masę, ale na nic.
Np. jednym z nich miało być:
zalóżmy ze jest strona [2] wtedy
maximum=9*numerstrony= 18
minimum=maximum-9=9
for (i=minimum;i=maximum;i++)
tutaj daje funkcje która wyświetla ci przedmiot i jako argument podajesz zmienna i)


Chodzi o to, że mam skrypt wyświetlający ilość przedmiotów na stronie.
Maksymalnie na 1 stronie może mieścić się 9 przedmiotów (dodam jeszcze, że są pobierane z bazy), i kiedy umieścimy 10 przedmiot, to powinien znajdować się na kolejnej stronie. Powinniśmy widzieć przedmiot z numerem 10, ale tlyko ten 1 przedmiot, bez reszty 9, które są na stronie jeden. I tak samo za każdym razem, aby osiągnąć efekt podobny do tego:

Pierwsza strona, 1,2,3,4,5... 100,101,102, Ostatnia strona.

Użyłem czegoś takiego.
  1. if($i<=9){
  2. $ilosc_stron=1;
  3. echo '<a href="index.php?action=kategorie/przedmioty">'. "Str:" . $ilosc_stron . ' ' . '</a>';
  4. }
  5. elseif($i>9 && $i<=18){
  6. echo '<a href="index.php?action=kategorie/przedmioty">'. "Str:" . $ilosc_stron++. ' ' . '</a>';
  7. }


Jednak nawet to nie działa, poza tym jest niedokończone, gdyż i tak by nie wyświetlało na kolejnych stronach przedmiotów, które są zmienną $i.
Pokaże może kawałek kodu:
  1. echo "<center><p>Ilość znalezionych pozycji: ".$ile_znalezionych."</p></center>";
  2.  
  3. for ($i=0; $i <$ile; $i++) {
  4.  
  5. $wiersz = $wynik->fetch_assoc();
  6.  
  7. echo '<center><div class="rwo">';
  8. echo "<p><b>".($i+1).". Tytuł: ";
  9. echo ($wiersz['tytul']);
  10. echo "</b></p>";
  11. echo "</div></center>";
  12. }
  13.  
  14. //tutaj powinien zostac umieszczony kod ze stronami typu [1],[2],[3] itd...
  15.  
  16. $wynik->free();
  17. $db->close();
  18.  
  19. ?>


Wie ktoś jak zrobić, aby przedmioty $i były wyświetlane odpowiednio na każdej stronie po 9 sztuk?
Powiedzmy, że dodaje w bazie 22 przedmioty.
na stronie pierwszej powinno znajdować się 9, na drugiej 9, i na trzeciej 4.

Nie mogę wymyślić, to jest zbyt dla mnie skomplikowane. Przeglądałem angielskie fora, jednak tam też sporo rzeczy nie potrafię zrozumieć.
Będę bardzo wdzięczny.

Ten post edytował waqmaz 19.05.2011, 21:41:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
waqmaz
post
Post #2





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.01.2011
Skąd: Murowana Goślina

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


Wszystko wygląda fajnie, tylko, że zamiast 8 przedmiotów pokazuje tylko 1.
(IMG:http://tinypic.pl/i/00094/qajxoxkp9bjy_t.jpg)
W kodzie brakuje wzmianki określającej funkcję zmiennej $ile_na_stronie np.
  1. $i=$nr_str*$ile_na_stronie;
. To chyba powinno nam pokazywać nr przedmiotu przy przedmiocie.
Po za tym, coś jest pokręcone, gdyż po dodaniu
  1. $maxstr=$nr_str*$ile_na_stronie;
, wyświetlają się wszystkie strony, a nie wszystkie przedmioty (IMG:style_emoticons/default/haha.gif)
btw. $ile na stronie tez nie dziala =/

Ogólnie to pozmieniałem twój kod i teraz działałby idealnie, gdyby wyświetlał po 9 przedmiotów, a nie po jednym.
  1. <?php
  2.  
  3. @ $db = new mysqli('localhost', 'root', 'haslo', 'biblioteka');
  4. $zapytanie = "select * from przedmiot";
  5. $wynik = $db->query($zapytanie);
  6. $ile_znalezionych = $wynik->num_rows;
  7. $wynik->free();
  8. echo "<center><p>Ilość znalezionych pozycji: ".$ile_znalezionych."</p></center>";
  9. $ile_na_stronie=1;
  10.  
  11. $max_stron=(int)(ceil($ile_znalezionych/$ile_na_stronie));
  12. $nr_str=(int)$_GET['numer_strony'];
  13.  
  14. //zabezpieczenie - tego nie sprawdzajcie
  15. if($nr_str<1){$nr_str=1;}else if ($nr_str>$max_stron){$nr_str=$max_stron;}
  16. //koniec zabezpieczenia
  17.  
  18. if ($ile_na_stronie>0)
  19. {
  20. $zapytanie = "select * from przedmiot LIMIT ".(($nr_str-1)*$ile_na_stronie).", ". $ile_znalezionych;
  21. $wynik = $db->query($zapytanie);
  22. $wiersz = $wynik->fetch_assoc();
  23. echo '<center><div class="rwo">';
  24. echo "<p><b>".$nr_str.". Tytuł: ";
  25. echo ($wiersz['tytul']);
  26. echo "</b></p>";
  27. echo "</div></center>";
  28. }
  29. else
  30. {
  31. echo 'Brak przedmiotow.';
  32. }
  33.  
  34. for($i=1;$i<=$max_stron;$i++)
  35. {
  36. echo '<a href="index.php?action=kategorie/przedmioty&numer_strony='.$i.'">['.$i.']'.'</a>'.' ';
  37. }
  38. $wynik->free();
  39. $db->close();
  40.  
  41. ?>


"drugi pokazuje tylko które mieszczą się na odpowiedniej stronie za pomocą klauzuli LIMIT." - to chyba nie działa.
Wiem, brakuje pętli wyświetlającej ilość przedmiotów na jednej stronie, ale nie wiem jak to zrobić. Właściwie to zmienna $ile_na_stronie nie jest tą, na jaką wskazuje jej nazwa, a raczej, co, które wyświetlenie powinno być przedmiotu. Do zmiennej $ile_na_stronie trzeba przypisać jakąś pętle. Kurde...
Dlatego drugie zapytanie równie dobrze, może być bez tego ile na stronie, gdyz to nic nie daje - pomnozenie razy 1:
  1. $zapytanie = "select * from przedmiot LIMIT ".($nr_str-1).", ". $ile_znalezionych;

Mmm... trzeba coś wymyślić.

Równie dobrze kod w skrócie może wyglądać tak, czyli nie potrzeba w ogóle zmiennej $ile na stronie ;/

  1. @ $db = new mysqli('localhost', 'root', 'haslo', 'biblioteka');
  2. $zapytanie = "select * from przedmiot";
  3. $wynik = $db->query($zapytanie);
  4. $ile_znalezionych = $wynik->num_rows;
  5. $wynik->free();
  6. echo "<center><p>Ilość znalezionych pozycji: ".$ile_znalezionych."</p></center>";
  7.  
  8. $max_stron= $ile_znalezionych;
  9. $nr_str= $_GET['numer_strony'];
  10.  
  11. if($nr_str<1){$nr_str=1;}else if ($nr_str>$max_stron){$nr_str=$max_stron;}//zabezpieczenie - tego nie sprawdzajcie
  12.  
  13. $zapytanie = "select * from przedmiot LIMIT ".($nr_str-1).", ". $ile_znalezionych;
  14. $wynik = $db->query($zapytanie);
  15. $wiersz = $wynik->fetch_assoc();
  16.  
  17. echo '<center><div class="rwo">';
  18. echo "<p><b>".$nr_str.". Tytuł: ";
  19. echo ($wiersz['tytul']);
  20. echo "</b></p>";
  21. echo "</div></center>";
  22.  
  23. for($i=1;$i<=$max_stron;$i++)
  24. {
  25. echo '<a href="index.php?action=kategorie/przedmioty&numer_strony='.$i.'">['.$i.']'.'</a>'.' ';
  26. }
  27.  
  28. $wynik->free();
  29. $db->close();


Jak dopisać zmienną tak, aby wyświetlała np. po 9 przedmiotów na stronie?

Ten post edytował waqmaz 25.05.2011, 17:13:25
Go to the top of the page
+Quote Post

Posty w temacie
- waqmaz   [1][2][3][4][5]... itd. strony.   19.05.2011, 21:39:41
- - Spawnm   Poczytaj o paginacji   19.05.2011, 21:41:41
- - aeaeae   Po pierwsze masz dwie dane: 1 - ilość przedmiotów ...   20.05.2011, 01:12:45
- - waqmaz   Dziękuję ślicznie, naprawdę dobry algorytm. A mam ...   20.05.2011, 17:36:33
- - aeaeae   Zrób z tego plik index.php i uruchom, to może Ci s...   20.05.2011, 17:57:36
- - waqmaz   Dzięki wielkie. 'Wyjaśniło mi się'. PS. C...   20.05.2011, 18:34:33
- - aeaeae   No cóż ... na pewno nie miałbyś z tym aż takich tr...   20.05.2011, 18:38:35
- - waqmaz   Dobra, już patrzę. Masz rację: "bardzo trudn...   20.05.2011, 19:02:01
- - aeaeae   Chodzi o to, że chcesz mieć ten kod, który dałem w...   20.05.2011, 19:19:56
- - waqmaz   Dzięki, już sobie poradziłem Kurde, właśnie odkr...   20.05.2011, 22:00:53
- - WebCM   Źle ci powiedzieli. Pokaż zapytanie do bazy. Nie w...   20.05.2011, 22:45:47
- - waqmaz   Cały kod wyciągania przedmiotow z bazy wygląda tak...   20.05.2011, 23:35:37
- - WebCM   Najlepiej gdzieś zapisać ilość rekordów, aby nie l...   21.05.2011, 11:29:27
|- - waqmaz   WebCM - nie działą =/ efekt: [PHP] pobierz, pl...   23.05.2011, 15:50:20
- - aeaeae   Cytat(WebCM @ 20.05.2011, 23:45:47 ) ...   21.05.2011, 12:50:58
- - radziopoke   Przerobiłem troszkę twój kod: [PHP] pobierz, plai...   24.05.2011, 14:23:09
- - waqmaz   Wszystko wygląda fajnie, tylko, że zamiast 8 przed...   25.05.2011, 17:10:43
- - radziopoke   Zauważyłem moje błędy które zrobiłem ale to dopier...   31.05.2011, 15:38:46


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: 3.10.2025 - 15:04