![]() |
![]() |
-mirik- |
![]()
Post
#1
|
Goście ![]() |
Witam
Chciałbym się skonsultować z doświadczonymi PHP pisarzami. Otóż muszę napisać koszyk na zakupy i zastanawiam się jak to zrobić. Przejrzałem kilka wpisów ale wszystkie dotyczą problemów a nie jak napisać. Myślę, żeby zrobić normalny koszyk w bazie danych mysql, tylko problemem wydaje mi się szybkie zapełnienie bazy. Otóż jeden koszyk by był tworzony przy każdorazowym wejściu na stronę (możliwość kupowania ma mieć nie tylko zarejestrowana osoba). Przy 100 wejściach dziennie daje mi to 2800 wpisów w bazie miesięcznie. Nie wiem czy w tym momencie to jest spory problem i czy dobry, gdyż nigdy nie zełniałem tak bazy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Myślałem ,aby dać crona ,żeby co miesiąc czyścił bazę, ale może istnieje prostsze rozwiązanie? Z góry dzięki za pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
w bazie ustaw tigger'a który będzie usuwał przedawnienia - np. po godzinie nieaktywności po co ma istnieć wpis koszyka?? - osobno wpisy dokonanego zamówienia...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Zrób tak, jak ja robię przy wyszukiwarce - użytkownik wpisuje kryteria i dostaje porcjowany wynik wyszukiwania, przewija sobie stronę a kryteria są pobierane z bazy i powiązane ze stroną id, adres ma postać: index.php?go=szukaj&id=123. Oczywiście nie pozwalam na zapychanie bazy i przechowuje tylko 100 ostatnich kryteriów wyszukiwania - Ty możesz zrobić podobnie ze swoim koszykiem.
Edit: nie trzeba żadnego triggera ani skomplikowanych akrobacji, nowy rekord nadpisuje najstarszy rekord i tyle - dane zawsze w miarę aktualne bez jakiegoś zachodu. Ten post edytował Pilsener 30.10.2008, 14:44:36 |
|
|
-mirik- |
![]()
Post
#4
|
Goście ![]() |
"Zrób tak, jak ja robię przy wyszukiwarce - użytkownik wpisuje kryteria i dostaje porcjowany wynik wyszukiwania, przewija sobie stronę a kryteria są pobierane z bazy i powiązane ze stroną id, adres ma postać: index.php?go=szukaj&id=123. Oczywiście nie pozwalam na zapychanie bazy i przechowuje tylko 100 ostatnich kryteriów wyszukiwania - Ty możesz zrobić podobnie ze swoim koszykiem.
Edit: nie trzeba żadnego triggera ani skomplikowanych akrobacji, nowy rekord nadpisuje najstarszy rekord i tyle - dane zawsze w miarę aktualne bez jakiegoś zachodu." Szczerze nie bardzo rozumiem jak to przekonwerować na mój koszyk (może jeszcze za newbe jestem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ), jeśli mógłbym trochę bardziej zobrazować. "w bazie ustaw tigger'a który będzie usuwał przedawnienia - np. po godzinie nieaktywności po co ma istnieć wpis koszyka?? - osobno wpisy dokonanego zamówienia..." Tigger - pierwsze szczerze słyszę, nie mam żadnego doświadczenia mógłbym może jakoś wytłumaczyć mi to albo źródło do polskiego przykładu? dzięki |
|
|
-mirik- |
![]()
Post
#5
|
Goście ![]() |
W jaki sposób nakazać bazę, żeby tworzyła tylko 100 wpisów po przekroczeniu czego zaczeła je nadpisywać od 1 i tak w kółko?
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Źle rozumujesz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Dla bazy danych koszyk nie istnieje. Istnieje tylko tabela zawierająca w najprostszej możliwej wersji 3 kolumny: 1. ID użytkownika (względnie identyfikator sesji, jeśli do koszyka może coś włożyć użytkownik niezarejestrowany) 2. ID produktu 3. Ilość Gdy użytkownik klika "dodaj do koszyka", w tej tabeli pojawia się nowy rekord. Gdy wyświetlasz koszyk, pobierasz rekordy powiązane z tym użytkownikiem po to, aby uzyskać identyfikatory produktów i pobrać z tabeli produktów nazwy, ceny itd. Gdy użytkownik składa zamówienie, kasujesz wszystkie rekordy powiązane z tym użytkownikiem z tabeli koszyk. Zawsze masz zatem tylko tyle rekordów, ile jest różnych produktów w koszykach różnych użytkowników. Może się zdarzyć, że ktoś doda 10 000 produktów do koszyka, ale to już musisz jakiś sensowny limit ustalić programowo, w php. Pozdrawiam. |
|
|
-mirik- |
![]()
Post
#7
|
Goście ![]() |
Nie no to jest zbyt dużo roboty, potrzebuję coś szybkiego i łatwe, koszyk na sesji można spokojnie zrobić ?
Przy okazji pomocy
Już białej gorączki dostaję, chcę zapetlić przycisk tak, że po kolejnym dodaniu produktu 1 do kosza wyświetlało mi 2 sztuki... a on cały czas wyświetla 1 niewiem czemu (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) |
|
|
-mirik- |
![]()
Post
#8
|
Goście ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat Gdy użytkownik składa zamówienie, kasujesz wszystkie rekordy powiązane z tym użytkownikiem z tabeli koszyk. - zgadza się, ale ja akurat zamówienia dodaję do oddzielnej tabeli, a te w tabeli koszyk trzymam pewien czas i przydaje się to też do różnych satystyk czy jak są jakieś problemy z koszykami/zamówieniami to łatwiej wyjaśnić - z kasowaniem mi się nie śpieszy, nigdy nie wiadomo, do czego to się może przydać, ten tysiąc rekordów mniej czy więcej mnie nie zbawi a i obciążenie bazy jest mniejsze.Cytat to jest zbyt dużo roboty, potrzebuję coś szybkiego i łatwe - nie przesadzaj, na sesji możesz czy plikach tymczasowych, ale moim zdaniem to wcale nie jest mniej pracy. I ile tych produktów upchasz w tej sesji? Z tego co pamiętam, to sesja ma ograniczoną pojemność...
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 7 Dołączył: 10.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
możne o to Ci chodzi:
Ja bym ten kod zrozumiał następująco: JEŻELI ISTNIEJE p1 to: wykonaj_to (i to ci robi, alternatywa jest pomijana), w przeciwnym wypadku JEŻELI ISTNIEJE p1... Po ludzku mówiąc albo rybki albo... Ten post edytował q3d 31.10.2008, 18:13:03 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 05:42 |