![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 18.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam taki problem.
Chcę zrobić coś takiego, żeby gdy użytkownik wchodzi na stronę to skrypt mieszał dane i je porcjował po 30 na stronę. Wiem jak się porcjuje, ale nie chciałbym czegoś takiego, że jak user da na kolejną stronę wyników, że pokaże mu się ten sam wynik co wcześniej. Konkret: Raz roatuje wyniki i na każdej stronie pokazuje inne. Problem jeszcze polega na tym, że by jak wróci do poprzednich stron to lista wyników była taka jak wcześniej. REAKCJA PRAWIDŁOWA strona 1: 5, 8, 30, 29, 78, 654, ... następna strona strona 2: 7, 11, 2, 364, 85, ... poprzednia strona strona 1: 5, 8, 30, 29, 78, 654, ... Z góry dzięki za pomoc. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Może zapisz dane do sesji ?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 18.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
W jaki sposób... nie rozumiem co masz na myśli
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem co prawda jaki pomysł miał Ociu, ale ja zrobiłabym to w ten sposób, że po sprawdzeniu, czy sesja nie istnieje tworzyłabym ją i mieszała tablicę przyporządkowując kolejne 30 wylosowanych liczb poszczególnym zmiennym sesyjnym nazywając je strona1, strona2, strona3, ...
przyjmując: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 "mieszanie": 12, 1, 4, 5, 11, 15, 2, 9, 6, 13, 3, 7, 8, 10, 14 i teraz: strona1: 12, 1, 4, 5, 11 strona2: 15, 2, 9, 6, 13 strona3: 3, 7, 8, 10, 14 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 18.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czyli w sesji ma zapisywać która strona ma przyporządkowane dane wyniki, tak?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ja bym to tak zrobiła. Podkreślam, że php sama się dopiero uczę i jest to moja wizja - czy optymalna nie wiem i śmiem twierdzić, że pewnie znajdą się lepsze
![]() Ten post edytował Shili 11.07.2008, 12:13:16 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 18.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem coś takiego:
Kod <? $strona = $_GET['s']; // Wynikow Na Strone $wns = 10; settype($strona, "integer"); $tresc_zapytania_max = 'SELECT id FROM `nadmorzem`'; $zapytanie_max = mysql_query($tresc_zapytania_max); // $r_max zawiera ilosc wszystkich rekordow w tabeli $r_max = mysql_num_rows($zapytanie_max); session_start(); if(!isset($_SESSION['wyniki'])) // Sprawdza czy istnieje taka sesja { $wyniki = array(1 => $tresc_zapytania = 'SELECT id FROM `nadmorzem` WHERE id ORDER BY rand() LIMIT '.($strona*$wns).','.$wns; $zapytanie = mysql_query($tresc_zapytania); while ($w = mysql_fetch_row($zapytanie)) { array('id' => $w[0], 'strona' => $strona), } // Wypełnia tabelę danymi i przyporządkowuje każdemu id jego stronę ); $_SESSION['wyniki'] = $wyniki; // Zapisuje całą tabelę do sesji } ?> Jak możecie to powiedzcie czy coś jest źle. Żeby było łatwiej to powiem co to miało zrobić. Miało przemieszczać wyniki w bazie tylko raz podczas pierwszego wejscia na stronę i poporcjować je po 10 na stronę a następnie przyporządkować w tablicy każdemu id z mysql stronę na której powinno się znajdować. A cała tablica miała zostać wysłana do sesji. A teraz pytanie dodatkowe. Co musiałbym zrobić aby mając w adresie index.plp?page=1 pokazało mi wyniki przyporządkowane dla strony pierwszej? |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
A może by tak wykorzystać srand" title="Zobacz w manualu PHP" target="_manual? Wtedy w zmiennej sesji wystarczy zapisać tylko jedną liczbę - ziarno. Ziarno można zapisywać w pliku, żeby mieć pewność że się nie powtórzy, lub losować. Przykład zastosowania:
[EDIT] Nie doczytałem, że chodzi o wyniki z bazy danych. Ale to też żaden problem -> mysql.com -> dokumentacja -> RAND() Użycie "ORDER BY RAND( $seed )" w zapytaniu będzie działało tak jak srand" title="Zobacz w manualu PHP" target="_manual i shuffle" title="Zobacz w manualu PHP" target="_manual w powyższym kodzie. http://dev.mysql.com/doc/refman/5.1/en/mat...l#function_rand Ten post edytował Kicok 12.07.2008, 15:18:17 -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 07:16 |