Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MySQL][PHP] Stronicowanie
mrk9109
post 13.02.2018, 11:12:28
Post #1





Grupa: Zarejestrowani
Postów: 445
Pomógł: 3
Dołączył: 4.06.2010

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


Witam według artykułu próbowałem zrobić sobie stronicowanie wersja była w mysql a ja używam mysqli to zacząłem przebierać i nie poradziłem sobie z tym :< do końca . Mam gdzieś błąd w lini 17 w zapytaniu ale nie wiem gdzie on jest
  1. <?php
  2.  
  3. $zapytanie = mysqli_query($polaczenie,"SELECT id, tytul, data, autor, tresc FROM aktualnosci ORDER by `id` DESC ");
  4. $ile = mysqli_num_rows($zapytanie);
  5. if($ile == 0) // Sprawdzanie czy jest cos dodane w bazie
  6. {
  7. echo '<br/><br/>Brak treści';
  8. }
  9.  
  10.  
  11. define('ILOSC_WYNIKOW_NA_STRONIE', 5); // ile ma być wyświetlanych rekordów na stronie
  12.  
  13. $zapytanie = mysqli_query($polaczenie,"SELECT COUNT(*) FROM aktualnosci"); // Zapytanie liczące ilość wpisów w bazie
  14. $wynik = mysqli_query($zapytanie);
  15. $iloscWpisow = mysqli_fetch_row($wynik)
  16.  
  17. $zapytanie = mysqli_query($polaczenie,"SELECT *
  18. FROM aktualnosci
  19. ORDER BY date ASC
  20. LIMIT ".mysqli_real_escape_string()((int)$_GET['str']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE);
  21.  
  22. $wynik = mysqli_query($zapytanie);
  23.  
  24. while($db = $zapytanie -> fetch_assoc($wynik) ) {
  25.  
  26. $id=$db['id'];
  27. $tytul=$db['tytul'];
  28. $data=$db['data'];
  29. $autor=$db['autor'];
  30. $tresc=$db['tresc'];
  31.  
  32. include("templatki/aktualnosci.html");
  33.  
  34. }
  35.  
  36. //jesli nie jesteśmy na pierwszej stronie
  37. if($_GET['str']>0){
  38. //wyswietlamy link do poprzedniej strony
  39. echo '<a href="?str='.($_GET['str']-1).'">Poprzednie</a> ';
  40. }
  41. for($i = 0;$i<=floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE);$i++){
  42. echo '<a href="?str='.($i).'">[ '.($i+1).' ]</a> ';
  43. }
  44. //jeśli nie jesteśmy na ostatniej stronie
  45. if($_GET['str']<floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE)){
  46. //wyswietlamy link do nastepnej strony
  47. echo ' <a href="?str='.($_GET['str']+1).'">następne</a>';
  48. }
  49.  
  50.  
  51. ?>
Go to the top of the page
+Quote Post
nospor
post 13.02.2018, 11:16:07
Post #2





Grupa: Moderatorzy
Postów: 36 429
Pomógł: 6289
Dołączył: 27.12.2004




Czemu piszesz na oslep? Uzywanie mysqli zamiast mysql tu nie ma zadnego znaczenia. Wypisujesz jakies dziwne kody i temu ci nie dziala
bo niby co ma robic ten kod
mysqli_real_escape_string()
? Wiesz w ogole co ta funkcja robi i jakie parametry ma przyjowac? W manualu masz wszystko napisane a ty radosnie sobie walisz cos takiego


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mrk9109
post 13.02.2018, 11:23:20
Post #3





Grupa: Zarejestrowani
Postów: 445
Pomógł: 3
Dołączył: 4.06.2010

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


zmieniłem na mysqli_escape_string

i nie wiem ale jechałem według tego poradnika

http://phpedia.pl/wiki/Stronicowanie a oni tu to zastosowali to się wzorowalem i zrobiłem wszystko krok po kroku to dla tego pytam o jakieś wskazówki

Ten post edytował mrk9109 13.02.2018, 11:24:00
Go to the top of the page
+Quote Post
nospor
post 13.02.2018, 11:28:55
Post #4





Grupa: Moderatorzy
Postów: 36 429
Pomógł: 6289
Dołączył: 27.12.2004




Nie chodzilo mi o zmiane funkcji... chodzilo mi byc zajrzal do manuala i zobaczyl jakich wymaga parametrow...

mysqli_real_escape_string(TU MAJA BYC JAKIES PARAMETRY A TY DALES NIC!)

Najlpieje wywal te funkcje stamtad bo jest ona tam totalnie zbedna

Cytat
http://phpedia.pl/wiki/Stronicowanie a oni tu to zastosowali to się wzorowalem i zrobiłem wszystko krok po kroku

No wlasnie nie zrobiles krok po kroku. Oni tam wywolali funkcje z parametrami a ty wywowales bez. Nawet skopiowac porzadnie nie umiesz... A nauka ma nie polegac na kopiowaniu tylko na zrozumieniu co dany kod robi.

To jest funkcja wywolana z parametrem:
mysqli_real_escape_string('jakis parametr');

A u ciebie jest bez parametru
mysqli_real_escape_string()


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mrk9109
post 14.02.2018, 10:07:08
Post #5





Grupa: Zarejestrowani
Postów: 445
Pomógł: 3
Dołączył: 4.06.2010

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


Masz racje już tak nie będę robił , a więc wziąłem się za to samemu powoli pisząc by się tego nauczyć według manuala i różnych poradników stworzyłem kod który działa ale nie do końca ponieważ na każdej stronie wyświetla mi wszystkie 10 pierwszych wyników a nie kolejnych dlaczego ? co pominołem

  1. <?php
  2.  
  3. $zapytanie = mysqli_query($polaczenie,"SELECT id, tytul, data, autor, tresc FROM aktualnosci ORDER by `id` DESC ");
  4. $ile = mysqli_num_rows($zapytanie);
  5. if($ile == 0)
  6. {
  7. echo '<br/><br/>Brak treści';
  8. }
  9.  
  10. $wynikow_na_stronie = 10;
  11.  
  12. $zapytanie='SELECT * FROM aktualnosci';
  13. $wynik = mysqli_query($polaczenie,$zapytanie);
  14. $liczba_wynikow = mysqli_num_rows($wynik);
  15.  
  16. $numer_strony = ceil($liczba_wynikow/$wynikow_na_stronie);
  17.  
  18. if (!isset($_GET['str'])) {
  19. $str = 1;
  20. }
  21. else {
  22. $str = $_GET['str'];
  23. }
  24.  
  25. $pierwsza_strona_wynik = ($str-1)*$wynikow_na_stronie;
  26.  
  27. $zapytanie = 'SELECT id, tytul, data, autor, tresc FROM aktualnosci ORDER by id DESC LIMIT ' . $pierwsza_strona_wynik . ',' . $wynikow_na_stronie;
  28. $wynik = mysqli_query($polaczenie,$zapytanie);
  29.  
  30. while($db = mysqli_fetch_array($wynik) ) {
  31.  
  32. $id=$db['id'];
  33. $tytul=$db['tytul'];
  34. $data=$db['data'];
  35. $autor=$db['autor'];
  36. $tresc=$db['tresc'];
  37.  
  38. include("templatki/aktualnosci.html");
  39.  
  40. }
  41.  
  42. for ($str=1;$str<=$numer_strony;$str++) {
  43. echo '<a href="index.php?strona=aktualnosci?str=' . $str . '">' . $str . '</a> ';
  44. }
  45.  
  46.  
  47.  
  48. ?>
Go to the top of the page
+Quote Post
nospor
post 14.02.2018, 10:46:43
Post #6





Grupa: Moderatorzy
Postów: 36 429
Pomógł: 6289
Dołączył: 27.12.2004




Co zwraca

  1. if (!isset($_GET['str'])) {
  2. $str = 1;
  3. }
  4. else {
  5. $str = $_GET['str'];
  6. }
  7. var_dump($str);
Dla np. drugiej strony?

edit: ach... dobra, juz widze

nie:
index.php?strona=aktualnosci?str=

a:
index.php?strona=aktualnosci&str=

podstawy html tym razem leza u ciebie wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mrk9109
post 14.02.2018, 10:50:05
Post #7





Grupa: Zarejestrowani
Postów: 445
Pomógł: 3
Dołączył: 4.06.2010

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


dzięki smile.gif użyłem taki link bo tak było w poradniku jednak było warto pomęczyć się samemu bo z tego kodu co dałem wyżej pierwszy raz nic nie kumałem dzięki smile.gif i zaglądam już częściej do manuala
Go to the top of the page
+Quote Post
nospor
post 14.02.2018, 10:55:35
Post #8





Grupa: Moderatorzy
Postów: 36 429
Pomógł: 6289
Dołączył: 27.12.2004




Cytat
bo tak było w poradniku
Tak, ? mozesz dac tylko gdy zaczynasz sekcje parametrow. A ty sekcje parametrow w swoim linki zaczales wczesniej i potem kazdy kolejny paramertr oddzielac masz przy pomocy &


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mrk9109
post 14.02.2018, 10:57:08
Post #9





Grupa: Zarejestrowani
Postów: 445
Pomógł: 3
Dołączył: 4.06.2010

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


oki zapamiętam dzięki smile.gif
Go to the top of the page
+Quote Post
nospor
post 14.02.2018, 11:01:28
Post #10





Grupa: Moderatorzy
Postów: 36 429
Pomógł: 6289
Dołączył: 27.12.2004




To skoro tak dobrze ci idzie to jeszcze jedna rada:

mowilem ci wczesniej bys wyrzucil te funkcje do escapowania. Ale mowilem tylko tak dlatego, ze pozniej i tak miales rzutowanie na liczbe wartosci z linka. Teraz u ciebie nie rzutujesz juz nic (ok, posrednio robisz to tutaj: $str-1). Generalnie wszystkie dane jakie ida z przegladarki sa niebezpieczne. Kiedys sie je escapowalo, teraz sie uzywa bindowania. Zas przy danych liczbowych, jak twoje str w linku warto rzutowac to jeszcze na liczbe
czyli nie
$str = $_GET['str'];
a:
$str = (int)$_GET['str'];

wiec nawet jak ktos ci recznie w linku za str wstawi niebezpieczny kod, to po zrzutowaniu na liczbe otrzymasz zawsze liczbe, np 0.

czyli jeszcze raz: kazda dana pochodzaca od uzytkownika/przegladarki jest potencjalnie niebezpieczna


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mrk9109
post 14.02.2018, 11:13:39
Post #11





Grupa: Zarejestrowani
Postów: 445
Pomógł: 3
Dołączył: 4.06.2010

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


rozumie smile.gif bardzo dobra rada dzięki tongue.gif mam jeszcze inne pytanko jak to rozgryźć patrz chciałem zrobić coś takiego

  1. echo '<a href="aktualnosci-strona-' . $str . '">' . $str . '</a> ';
  2. RewriteRule ^aktualnosci-strona-([^-]+)$ index.php?strona=aktualnosci&str=$str [L]


I wczytuje mi link itp ale mam komunikat

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\Users\PC_ACER\xampp\htdocs\system\moduly\aktualnosci.php on line 30
1 2
Go to the top of the page
+Quote Post
nospor
post 14.02.2018, 11:15:36
Post #12





Grupa: Moderatorzy
Postów: 36 429
Pomógł: 6289
Dołączył: 27.12.2004




juz mowilem:
var_dump($str);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mrk9109
post 14.02.2018, 11:24:39
Post #13





Grupa: Zarejestrowani
Postów: 445
Pomógł: 3
Dołączył: 4.06.2010

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


kombinowałem z tym i nie wiem dlaczego mi wywala błąd z mod write a zmienną przekazuję generuje link np: aktualnosci-strona-1 a komunikat ten sam
Go to the top of the page
+Quote Post
nospor
post 14.02.2018, 11:29:07
Post #14





Grupa: Moderatorzy
Postów: 36 429
Pomógł: 6289
Dołączył: 27.12.2004




zrobiles var_dump jak prosilem? Cos ten vardump wyswietla...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mrk9109
post 14.02.2018, 11:40:06
Post #15





Grupa: Zarejestrowani
Postów: 445
Pomógł: 3
Dołączył: 4.06.2010

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


w którym dokładnie miejscu bo mam

A non-numeric value encountered in 26 linia i 30 blad
Go to the top of the page
+Quote Post
nospor
post 14.02.2018, 11:41:38
Post #16





Grupa: Moderatorzy
Postów: 36 429
Pomógł: 6289
Dołączył: 27.12.2004




No przeciez pisalem

if (!isset($_GET['str'])) {
$str = 1;
}
else {
$str = $_GET['str'];
}
var_dump($str);

Taki kod masz tylko w jednym miejscu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mrk9109
post 14.02.2018, 11:45:42
Post #17





Grupa: Zarejestrowani
Postów: 445
Pomógł: 3
Dołączył: 4.06.2010

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


int(0)
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\Users\PC_ACER\xampp\htdocs\system\moduly\aktualnosci.php on line 31


to samo
Go to the top of the page
+Quote Post
nospor
post 14.02.2018, 11:48:56
Post #18





Grupa: Moderatorzy
Postów: 36 429
Pomógł: 6289
Dołączył: 27.12.2004




No nie to samo bo teraz widac ze str to 0 a nie 1....
Potem robisz 0 -1 i do LIMIT wkladasz -10 wiec nic dziwnego ze zapytanie sie wyklada. Cos ten htaccess ci zle dziala.

RewriteRule ^aktualnosci-strona-([^-]+)$ index.php?strona=aktualnosci&str=$str [L]
czemu w regulce wkladasz $str? Powinno byc $1

RewriteRule ^aktualnosci-strona-([^-]+)$ index.php?strona=aktualnosci&str=$1 [L]


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mrk9109
post 14.02.2018, 11:49:35
Post #19





Grupa: Zarejestrowani
Postów: 445
Pomógł: 3
Dołączył: 4.06.2010

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


no źle dla tego zadałem pytanie jak inaczej rozwiązać to chciałem zrobić fajne linki
Go to the top of the page
+Quote Post
nospor
post 14.02.2018, 11:59:39
Post #20





Grupa: Moderatorzy
Postów: 36 429
Pomógł: 6289
Dołączył: 27.12.2004




No to ci napisalem przeciez co masz zle


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Wersja Lo-Fi Aktualny czas: 19.03.2024 - 04:53