Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] 5 ostatnio oglądanych produktów
Forum PHP.pl > Forum > Przedszkole
pavelb
Witam!
Proszę o pomoc w napisaniu skryptu 5 ostatnio oglądanych produktów przez użytkownika.
Załóżmy że to jest id produktu $id = $_GET['id'];
Nie mam pomysłu jak je zapisać aby móc wywołać później 5 ostatnich.

Pozdro
graft
Zapisuj do bazy daty dodania rekordów

  1. <?php
  2. SELECT * FROM tabela WHERE id_produktu='$id' ORDER BY data_dodania desc limit 5
  3. ?>
pavelb
@graft, nie zrozumiałeś mnie.
Chodziło mi oto że jestem sobie na stronie otwieram jakiś produkt i w okienku ostatnio oglądane zapisze mi się ten produkt, i otwieram inny produkt i kolejny się dopisuje do tego okienka itd i chcę widzieć 5 ostatnio przeglądanych produktów.
tiraeth
@pavelb: Zapisuj sobie identyfikatory tych produktów do Cookie, albo Sesji (względnie do używanego sposobu identifykacji użytkownika).
pavelb
Tylko w jednej sesji się chyba tego nie da tego zapisać, a jak zapisze w kilku to później jak je wszystkie wywołać.
I jeszcze chce wyświetlić tylko 5 ostatnich.
tiraeth
Jak się nie da, jak się da?
W session_register" title="Zobacz w manualu PHP" target="_manual daj zserializowaną tablicę z identifykatorami produktów + data odwiedzenia i wsio... przecież sesja wygasa po zamknięciu przeglądarki, a jeśli chcesz trzymać także po jej zamknięciu, to cookies (także zserializowana tablica) na np. 2-3 godziny.

Poczytaj manual i pobaw się, bo akurat to, co chcesz osiągnąć to rzecz banalna...
RaNdaLLHD
Może się czepiam ale w manualu jest napisane, że nie powinno się już używać session_register()" title="Zobacz w manualu PHP" target="_manual. Oraz jeśli skrypt korzysta z session_register()" title="Zobacz w manualu PHP" target="_manual, nie będzie on działać w środowisku z wyłączoną dyrektywą register_globals()" title="Zobacz w manualu PHP" target="_manual.
tiraeth
A czy ja napisałem, że się powinno? Podałem to jako przykład dla sesji. Ja, na przykład, korzystam z sesji trzymanych w sql, obsługiwanych przez swoją klasę - ewentualnie przez frameworka.

Cytat
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered(), and session_unregister().


Proste, jeśli ktoś czyta manuala, to się zorientuje, że należy korzystać z $_SESSION smile.gif

PS. Tak, czepiasz się tongue.gif
pavelb
Mam problem, zapisuje sobie id i date produktu tak:
$_SESSION['ostatnio'][$id] = '1';

i problem jest w tym że ostatnio oglądany produkt jest na końcu.
Jak przesortować to tak żeby ostatni id był pierwszy
Kicok
zapisujesz ostatnio oglądane przedmioty w takiej tablicy:
Kod
$_SESSION['ostatnio'][0] = $id;
$_SESSION['ostatnio'][1] = $id;
$_SESSION['ostatnio'][2] = $id;
$_SESSION['ostatnio'][3] = $id;
$_SESSION['ostatnio'][4] = $id;



Podczas dodawania nowego "ostatnio oglądanego":
1. Sprawdzasz czy $_SESSION['ostatnio'] jest tablicą, jeśli nie (jeszcze nic do niej nie dodano) to ID przedmiotu zapisujesz w: $_SESSION['ostatnio'][0] = $id;
2. Jeśli jest tablicą, to sprawdzasz ile ma elementów (count" title="Zobacz w manualu PHP" target="_manual). Jeśli mniej niż 5, to ID przedmiotu zapisujesz w kolejnym elemencie: $_SESSION['ostatnio'][] = $id;
3. Jeśli ma już 5 elementów, to:
- usuwasz pierwszy element tablicy array_shift" title="Zobacz w manualu PHP" target="_manual
- zapisujesz nowe ID tak jak w pkt. 2


Gdy będziesz chciał wyświetlić te strony, to nie zapomnij, że najpierw będziesz posortować je od tyłu: array_reverse" title="Zobacz w manualu PHP" target="_manual
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.