Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Stronicowanie danych pobranych z msql


kubekow

Rekomendowane odpowiedzi

Opublikowano

Witam czy jest ktoś w stanie przerobić mi ten kawałek kodu by wyświetlało się 5 rekordów z bazy danych msql (pobiera dane) a po 5 na dole by była strzałeczka po kliknięciu której zmienią się rekordy  i pokaże się następne 5 itp.. Zupełnie nie wiem jak się za to zabrać, z góry dziękuję ;)

 

Profesjonalnie jest to paginacja 

		<?php

							$gamenum = fetchinfo("value","info","name","current_game");
							$rs = mysql_query("SELECT * FROM `games` WHERE `id` < $gamenum ORDER BY `id` DESC LIMIT 10");
							while($row = mysql_fetch_array($rs)) {
							$lastwinner = $row["userid"];
							$winnercost = $row["cost"];
							$winnerpercent = $row["percent"];
							$winneravatar = fetchinfo("avatar","users","steamid",$lastwinner);
							$winnername = fetchinfo("name","users","steamid",$lastwinner);
		echo '
		<article>
		<ul>
			<li><p>'.$msg[$lang]["gamehistory"].': <a>#'.$row["id"].'</a> <span></span></p></li>
			<li><p>'.$msg[$lang]["gamewinhistory"].': <a style="text-decoration:none" href="http://steamcommunity.com/profiles/'.$lastwinner.'">'.$winnername.'</a> <span>(<?php echo $msg[$lang]["chanse"]; ?> '.round($winnerpercent,1).'%)</span></p></li>
			<li><p>'.$msg[$lang]["wonhistory"].': <a>'.round($winnercost,2).'<span class="ezpz-price" style="color: #db073d;"></span></a></p></li>
		</ul>
		<span class="winning"></span>
		<div class="stuff" style="float: none; padding: 5px; width: 100%">';
								$rs2 = mysql_query("SELECT * FROM `game".$row["id"]."` ORDER BY `value` DESC");
								while($row2 = mysql_fetch_array($rs2)) {
									echo '
				<div style="float: left;">
					<a href="http://steamcommunity.com/market/listings/730/'.$row2["item"].'">
						<img src="http://steamcommunity-a.akamaihd.net/economy/image/'.$row2["image"].'/60fx60f" title="'.$row2["item"].' - $'.$row2["value"].'" width="40" height="40">
					</a>
				</div>';
				}
			echo '
			<div style="height: 180;"></div>
		</div>
		</article>';
																}
		?>

671411485514457941894.png

Opublikowano

1. Nie prosimy o gotowce

2. Za pomocą GET'a pobierz z linku, którą stronę skrypt "ma załadować"

3. Stwórz sobie zmienną, np. $perPage = 5;

4. Stwórz sobie tzw. "offset", podpowiem Ci, że $offset = $page * $perPage;

5. Teraz wystarczy zapytanie, do stronicowania w zapytaniu użyjesz funkcji LIMIT, czyli ograniczenie rekordów do x wyników. Dodatkowo ustawiasz OFFSET, żeby wskazać miejsce, od którego ma ograniczyć rekordy.

 

Przykład w praktyce:

Strona 2.

$page = 2;
$perPage = 5;
$offset = $perPage * ($page - 1);

$pagiantion = $db->prepare('SELECT id
FROM users
LIMIT :offset, :perPage');
$pagination->bindValue(':offset', $offset, PDO::PARAM_INT);
$pagination->bindValue(':perPage', $perPage, PDO::PARAM_INT);
$pagination->execute();

Oczywiście nie jest to kod całego pliku (nazwałbym to bardziej pseudokodem), masz tylko zarys jakby to wyglądało. W tym przykładzie

  1. Pobierana jest strona (tutaj na sztywno ustawiona strona nr. 2)
  2. Ustawiamy offset (czyli numer, od którego zaczyna nam ograniczać wyniki, można to nazwać punktem startowym lub miejscem zaczepu)
  3. Wykonujemy zapytanie i mamy wyniki 5, 6, 7, 8, 9 (bo pierwszy wynik jest oznaczony zerem).

Mogłem coś tu napisać zbyt chaotycznie lub niezrozumiale. Jak masz jakieś pytania lub wątpliwości po prostu napisz, a postaram wyjaśnić Ci daną kwestię jaśniej.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...