Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Paginacja do wyszukiwarki strony
Zenobiusz
post 17.05.2019, 09:15:19
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 17.05.2019

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


Czy jest ktoś w stanie podpiać pod ten skrypt paginacje typu numerowanego 1.2.3.4.5 ?


<?php
$output = NULL;

if(isset($_POST['submit'])) {
//connect to the databse

$mysqli = NEW MySQLi ("localhost", "", ", "");
$search = $mysqli->real_escape_String($_POST['search']);


//Query the database
$resultSet = $mysqli ->query("SELECT * FROM pistolety WHERE marka LIKE '%$search%' OR pistolet LIKE '%$search%'");

if($resultSet ->num_rows > 0) {
while($rows = $resultSet ->fetch_assoc() )
{
$pistolet= $rows['pistolet'];
$marka = $rows['marka'];

$output .= "Pistolet: $pistolet<br />Marka: $marka<br /><br />";
}
}else{
$output = "No results";
}
}
?>

<form method="POST">
<input type="TEXT" name="search" />
<input type="SUBMIT" name="submit" value="Search" />
</form>

<?php echo $output; ?>

Ten post edytował Zenobiusz 17.05.2019, 09:18:45
Go to the top of the page
+Quote Post
dublinka
post 17.05.2019, 11:36:37
Post #2





Grupa: Zarejestrowani
Postów: 348
Pomógł: 43
Dołączył: 22.02.2008

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


  1. <?php
  2.  
  3.  
  4.  
  5. function ReturnRows($ServerName, $UserName, $UserPassword, $DbName, $TableContent, $search)
  6. {
  7.  
  8. $Connection = mysqli_connect($ServerName, $UserName, $UserPassword);
  9.  
  10. if(!$Connection)
  11. {
  12.  
  13. die ('Nie można się polączyć z MySQL : ' . mysqli_connect_error());
  14.  
  15. }
  16.  
  17. $SelectDB = mysqli_select_db($Connection, $DbName);
  18.  
  19. if(!$SelectDB)
  20.  
  21. {
  22.  
  23. print 'Nie mozna polaczyc sie z baza danych ' . mysqli_connect_error();
  24.  
  25. }
  26.  
  27.  
  28.  
  29.  
  30. $sql = "SELECT marka, pistolet FROM $TableContent WHERE marka LIKE '%$search%' OR pistolet LIKE '%$search%'";
  31. $result = mysqli_query($Connection,$sql);
  32.  
  33. if (mysqli_num_rows($result) > 0)
  34. {
  35.  
  36. while($row = mysqli_fetch_assoc($result))
  37. {
  38.  
  39. $TabID[] = $row['marka'];
  40. $TabName[] = $row['pistolet'];
  41.  
  42. }
  43.  
  44.  
  45.  
  46. }
  47.  
  48. mysqli_close($Connection);
  49. $url = $_SERVER['SCRIPT_NAME'];
  50. $wyswietlaj=4;
  51. $ile_linkow=3;
  52. if(isset($TabID) && isset($TabName))
  53. {
  54. array_multisort($TabID, SORT_ASC, $TabName);
  55. }
  56. else{
  57. print 'Brak wynikow<br>';
  58. }
  59. if(empty($_GET['czytaj']))
  60. {
  61. $czytaj=0;
  62. }
  63. else{
  64. $czytaj=$_GET['czytaj'];
  65. }
  66. if(empty($_GET['dalej']))
  67. {
  68. $dalej=1;
  69. }
  70. else{
  71. $dalej=$_GET['dalej'];
  72. }
  73. if(isset($_GET['czytaj']))
  74. {
  75. $nr=$_GET['czytaj'];
  76. }
  77. if(empty($_GET['czytaj'])){
  78. $nr=0;
  79. }
  80.  
  81. $u=1;
  82. for($i=$czytaj;$i<$czytaj+$wyswietlaj;$i++)
  83. {
  84.  
  85. if(!empty($TabID[$i]))
  86. {
  87.  
  88.  
  89. print 'Marka: '.$TabID[$i].'<br>';
  90. print 'Pistolet: '.$TabName[$i].'<p>';
  91.  
  92. }
  93. }
  94. $out="";
  95. for($i=$dalej;$i<$dalej+$ile_linkow;$i++)
  96. {
  97. $k=($i-1)*$wyswietlaj;
  98. if($k<count(@$TabID))
  99. {
  100. if($k==$czytaj)
  101. {
  102. $out.=" [$i] ";
  103. }
  104. else{
  105. $out.=" <a href=\"$url?&czytaj=$k&dalej=$dalej\">[$i]</a> ";
  106. }
  107. }
  108. }
  109. if($dalej>1)
  110. {
  111. $cz=($dalej-1)*$wyswietlaj-$wyswietlaj;
  112. $dal=$dalej-$ile_linkow;
  113. print " <a href=\"$url?czytaj=$cz&dalej=$dal\"><<<</a>";
  114. }
  115. else{
  116. print " <<< ";
  117. }
  118. print $out;
  119. if($k+$wyswietlaj<count(@$TabID))
  120. {
  121. $cz=$k+$wyswietlaj;
  122. $dal=$dalej+$ile_linkow;
  123. print " <a href=\"$url?czytaj=$cz&dalej=$dal\">>>></a> ";
  124. }
  125. else{
  126. print " >>>";
  127. }
  128.  
  129.  
  130. }
  131.  
  132.  
  133.  
  134. ReturnRows('localhost', 'root', 'pwdi', 'militaria', 'giwery', 'costam');
  135. // 'server', 'user', 'pass', 'nazwa bazy', 'nazwa tabeli', 'szukana fraza')
  136.  
  137. ?>


Ten post edytował dublinka 17.05.2019, 13:11:55
Go to the top of the page
+Quote Post
nospor
post 17.05.2019, 11:41:39
Post #3





Grupa: Moderatorzy
Postów: 34 864
Pomógł: 5802
Dołączył: 27.12.2004




@dublinka czyli z tego co widze, twoim celem jest zarzniecie komus serwera? Bo teraz widze, ze pobierasz wszystkie rekordy, a dopiero potem w php je stronicujesz. Nie sadzisz ze to najgorsze z mozliwych rozwiazan? A co jesli wynik wyszukiwnia zwroci 100 tysiecy rekordow? ALbo milion? Strona wlasnie padla.

Po to sie robi poprawne stronicowanie na bazie by do takiego czarnego scenariusza nie dopuscic


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

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"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
viking
post 17.05.2019, 11:46:25
Post #4





Grupa: Zarejestrowani
Postów: 5 429
Pomógł: 925
Dołączył: 30.08.2006

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


https://codeshack.io/how-to-create-pagination-php-mysql/


--------------------
Go to the top of the page
+Quote Post
dublinka
post 17.05.2019, 11:49:51
Post #5





Grupa: Zarejestrowani
Postów: 348
Pomógł: 43
Dołączył: 22.02.2008

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


Cytat(nospor @ 17.05.2019, 12:41:39 ) *
@dublinka czyli z tego co widze, twoim celem jest zarzniecie komus serwera? Bo teraz widze, ze pobierasz wszystkie rekordy, a dopiero potem w php je stronicujesz. Nie sadzisz ze to najgorsze z mozliwych rozwiazan? A co jesli wynik wyszukiwnia zwroci 100 tysiecy rekordow? ALbo milion? Strona wlasnie padla.

Po to sie robi poprawne stronicowanie na bazie by do takiego czarnego scenariusza nie dopuscic


No chyba najpierw trzeba pobrac zeby cokolwiek moc stronicowac.
Pobierem wszystkie ktore chce autor. Wrzucam w tablice i jade po 'kartkach'

Inaczej tego nie robilem.
Go to the top of the page
+Quote Post
kapslokk
post 17.05.2019, 11:53:35
Post #6





Grupa: Zarejestrowani
Postów: 963
Pomógł: 284
Dołączył: 19.06.2015
Skąd: Warszawa

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


Cytat(dublinka @ 17.05.2019, 12:49:51 ) *
No chyba najpierw trzeba pobrac zeby cokolwiek moc stronicowac.
Pobierem wszystkie ktore chce autor. Wrzucam w tablice i jade po 'kartkach'

Inaczej tego nie robilem.


I jak będziesz miał 5 mln rekordów, to też tak?
Go to the top of the page
+Quote Post
nospor
post 17.05.2019, 11:54:57
Post #7





Grupa: Moderatorzy
Postów: 34 864
Pomógł: 5802
Dołączył: 27.12.2004




Cytat
No chyba najpierw trzeba pobrac zeby cokolwiek moc stronicowac.
Czyli generalnie o stronicowaniu malo wiesz....

Pobiera to sie i owszem, ale liczbe rekordow a nie rekordy.


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

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"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
dublinka
post 17.05.2019, 11:56:43
Post #8





Grupa: Zarejestrowani
Postów: 348
Pomógł: 43
Dołączył: 22.02.2008

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


Cytat(nospor @ 17.05.2019, 12:54:57 ) *
Czyli generalnie o stronicowaniu malo wiesz....

Pobiera to sie i owszem, ale liczbe rekordow a nie rekordy.


Byc moze malo wiem ale lepiej cos wiedziec niz nic nie wiedziec
Go to the top of the page
+Quote Post
kapslokk
post 17.05.2019, 11:57:51
Post #9





Grupa: Zarejestrowani
Postów: 963
Pomógł: 284
Dołączył: 19.06.2015
Skąd: Warszawa

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


Najlepiej, to się najpierw dowiedzieć smile.gif
Go to the top of the page
+Quote Post
dublinka
post 17.05.2019, 12:00:11
Post #10





Grupa: Zarejestrowani
Postów: 348
Pomógł: 43
Dołączył: 22.02.2008

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


Cytat(kapslokk @ 17.05.2019, 12:57:51 ) *
Najlepiej, to się najpierw dowiedzieć smile.gif

To moze ktos mnie oświeci. Co maja ilosci rekordow do tego jak i tak trzeba pobrac dane.
W moim przykladzie pobieram tylko te ktore pasuja w zapytaniu wiec jaka jest roznica ?
Go to the top of the page
+Quote Post
nospor
post 17.05.2019, 12:23:26
Post #11





Grupa: Moderatorzy
Postów: 34 864
Pomógł: 5802
Dołączył: 27.12.2004




Cytat
W moim przykladzie pobieram tylko te ktore pasuja w zapytaniu wiec jaka jest roznica ?
Zrozum wkoncu, ze jesli rekordow, ktore beda pasowac, jest w bazie MILION do zajedziesz serwer. Strona poprostu padnie

To sie robi tak, ze sie pobiera LICZBE rekordfow ktore pasuja. Majac liczbe rekordow jestes w stanie zbudowac stronicowanie bo do stronicowania ci jest potrzebna tylko liczba. A rekordy pobierasz tylko dla danej strony. Wiec nawet jak pasujacych rekordow jest MILION to ty dla danej strony pobierasz ich tylko 10 - roznica, chyba dosc widoczna golym okiem, nie sadzisz?


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

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"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
dublinka
post 17.05.2019, 13:39:15
Post #12





Grupa: Zarejestrowani
Postów: 348
Pomógł: 43
Dołączył: 22.02.2008

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


Cytat(nospor @ 17.05.2019, 13:23:26 ) *
Zrozum wkoncu, ze jesli rekordow, ktore beda pasowac, jest w bazie MILION do zajedziesz serwer. Strona poprostu padnie

To sie robi tak, ze sie pobiera LICZBE rekordfow ktore pasuja. Majac liczbe rekordow jestes w stanie zbudowac stronicowanie bo do stronicowania ci jest potrzebna tylko liczba. A rekordy pobierasz tylko dla danej strony. Wiec nawet jak pasujacych rekordow jest MILION to ty dla danej strony pobierasz ich tylko 10 - roznica, chyba dosc widoczna golym okiem, nie sadzisz?


Niebardzo czaje "ze sie pobiera LICZBE rekordfow ktore pasuja"

Ten post edytował dublinka 17.05.2019, 13:40:38
Go to the top of the page
+Quote Post
viking
post 17.05.2019, 13:46:28
Post #13





Grupa: Zarejestrowani
Postów: 5 429
Pomógł: 925
Dołączył: 30.08.2006

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


Wchodzisz na stronę która ma mieć paginację. Pobierasz numer strony jeśli był wcześniej wysłany albo 1 jeśli nie podano. Wiesz że masz mieć np 20 wyników na stronie. Robisz zapytanie z limit i offset ustalając odpowiednie warunki. Masz to wszystko w artykule który wcześniej zalinkowałem a to pierwszy z brzegu był.


--------------------
Go to the top of the page
+Quote Post
nospor
post 17.05.2019, 13:57:18
Post #14





Grupa: Moderatorzy
Postów: 34 864
Pomógł: 5802
Dołączył: 27.12.2004




Cytat
Niebardzo czaje "ze sie pobiera LICZBE rekordfow ktore pasuja"
A czaisz: pobranie wszystkiech rekordow ktore pasuja do zapytania wyszukiwania? To wlasnie teraz robisz. Wiec zamiast tych rekordow masz pobrac ich liczbe.

Cytat
Masz to wszystko w artykule który wcześniej zalinkowałem
@viking a przejrzales chociac co za glupoty tam wygaduja? Toz to nie jest lepsze od tego co tu dublinka nam sprezentowal

Cytat
$total_pages = $mysqli->query('SELECT * FROM students')->num_rows;

porazka jakas.


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

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"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
viking
post 17.05.2019, 14:25:53
Post #15





Grupa: Zarejestrowani
Postów: 5 429
Pomógł: 925
Dołączył: 30.08.2006

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


Tak tę głupotę widziałem ale reszta jest całkiem sensowna. Nawet binduje parametry.


--------------------
Go to the top of the page
+Quote Post
nospor
post 17.05.2019, 14:28:36
Post #16





Grupa: Moderatorzy
Postów: 34 864
Pomógł: 5802
Dołączył: 27.12.2004




Co z tego ze reszta sensowna jak przez te jedna glupote zajedzie komus serwer. Lepiej nie propagowac takich artow pisanych przez poczatkujacych bo wiecej robia krzywdy jak pozytku

Jego struktura tabel tez wiele pokazuje o jego wiedzy

`id` int(11) ,
`age` tinyint(100),
`joined` varchar(255)


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

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"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
dublinka
post 17.05.2019, 14:39:11
Post #17





Grupa: Zarejestrowani
Postów: 348
Pomógł: 43
Dołączył: 22.02.2008

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


Cytat(nospor @ 17.05.2019, 14:57:18 ) *
A czaisz: pobranie wszystkiech rekordow ktore pasuja do zapytania wyszukiwania? To wlasnie teraz robisz. Wiec zamiast tych rekordow masz pobrac ich liczbe.

Wez mnie popraw ale jesli mam pobrac liczbe najpierw musze sprawdzic ich poprawnosc wzgledem tego co chce sie znalesc a co za tym idzie chyba trzeba przeleciec tabele. Calą ?
Go to the top of the page
+Quote Post
nospor
post 17.05.2019, 14:40:10
Post #18





Grupa: Moderatorzy
Postów: 34 864
Pomógł: 5802
Dołączył: 27.12.2004




slowo klucz w mysql: COUNT


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

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"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
gitbejbe
post 17.05.2019, 17:06:56
Post #19





Grupa: Zarejestrowani
Postów: 466
Pomógł: 49
Dołączył: 27.08.2012

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


hehe spoko temat biggrin.gif dobra akcja

czekam na dalszy ciąg tłumaczenia paginacji, a zwłaszcza na TEN moment gdy @dublinka - mam nadzieje, zrozumie o co w tym chodzi i złapie się za głowę biggrin.gif Przed nami bardzo ważny moment w jego życiu
Go to the top of the page
+Quote Post
dublinka
post 17.05.2019, 17:20:09
Post #20





Grupa: Zarejestrowani
Postów: 348
Pomógł: 43
Dołączył: 22.02.2008

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


Cytat(nospor @ 17.05.2019, 15:40:10 ) *
slowo klucz w mysql: COUNT

Coś w tym stylu ?

  1. $sql = "SELECT marka, pistolet, count(*) as c FROM $TableContent WHERE marka LIKE '%$search%' OR pistolet LIKE '%$search%'";
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.12.2019 - 03:06