Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: koszyk PHP i MySql
Forum PHP.pl > Forum > PHP
przemko77
mam zamiar zrobic koszyk w php z pomoca MySql, nie bardzo wiem w jaki sposob zapisywac do bazy danych to co chce dodac do koszyka. czy ktos moze mi z tym pomoc i mi to wytlumaczyc moze na jakims malym przykladzie?
przemko77
a mozesz mi podac przyklad w php ktorym dodam zamowione produkty do tabeli 'koszyk' ?
zbig13
  1. <?php
  2.  
  3. $add_query = &#092;"INSERT INTO koszyk (uid, pid, ilosc) VALUES ('id_usera', 'id_produktu', 'ilosc_produktu')\";
  4. $add = mysql_query($add_query);
  5.  
  6. ?>

?
przemko77
mam dwa pliki

jeden to produkty.php

  1. <?
  2. ?>
  3. <html>
  4. <head>
  5. <meta http-equiv=\"Content-type\" content=\"text/html; charset=iso-8859-2\">
  6. </head>
  7. <body>
  8. <?php
  9.  
  10. mysql_connect (&#092;"127.0.0.1\",\"xxx\",\"xxx\");
  11. mysql_select_db (torst_torst); 
  12.  
  13. $zapytanie = &#092;"SELECT * FROM produkty \";
  14. $wykonaj = mysql_query ($zapytanie) or die(mysql_error());
  15.  
  16. while($wiersz=mysql_fetch_array ($wykonaj)) {
  17. echo &#092;"<form action=\"koszyk.php\" method=\"post\">
  18. <font size=&#092;"2\">\".$wiersz['id'].\"</font>
  19. <font size=&#092;"2\">\".$wiersz['nazwa'].\"</font>
  20. <font size=&#092;"2\">\".$wiersz['cena'].\" zł</font>
  21. <input type=&#092;"submit\" name=\"koszyk\" value=\"Dodaj\"><br><br></form>
  22. &#092;";
  23.  
  24. }
  25.  
  26. ?>
  27. </body>
  28. </html>


drugi to koszyk.php

  1. <?
  2. ?>
  3. <html>
  4. <head>
  5. <meta http-equiv=\"Content-type\" content=\"text/html; charset=iso-8859-2\">
  6. </head>
  7. <body>
  8. <?php
  9.  
  10. mysql_connect (&#092;"127.0.0.1\",\"xxx\",\"xxx\");
  11. mysql_select_db (torst_torst); 
  12.  
  13. $add_query = &#092;"INSERT INTO koszyk (user_id, product_id, ilosc_id) VALUES ('session_id', 'id_produktu', '$ilosc')\";
  14. $add = mysql_query($add_query);
  15.  
  16. ?>
  17. </body>
  18. </html>


w tym drugim pliku cos pokrecilem chyba, jak zrobic aby w drugim pliku koszyk.php dodalo mi do tabeli koszyk dane zamowionego produktu z pliku produkty.php czyli id usera, produktu, ilosc questionmark.gif
nospor
Cytat
$add_query = "INSERT INTO koszyk (user_id, product_id, ilosc_id) VALUES ('session_id', 'id_produktu', '$ilosc')";
ehhh, podano ci przykładowy kod, który tymiales danymi wypelnić. Nie text 'id_produktu' a konkretne id produktu, które gostek wybral.
Aby to zrobić musisz dać np. na liście chcekboxy przy produktach, gostek zaznaczy co bierze, wysyla formularz, a ty patrzysz co zaznaczyl i to dodajesz.

tu masz przyklad jak ktos uzywa chcekbox i cos tam wpisuje do bbazy:
http://forum.php.pl/index.php?showtopic=32...=0&#entry183466

na podobnej zasadzie ty masz zrobic. Pozatym jest jeszcze wiele przykladówe na forum, poszukaj
przemko77
ale ja nie chce korzystac z checkboxow tylko tak jak w pliku produkty.php ktory podalem, klikasz dodaj i przechodzi do pliku koszyk.php i pobiera tam dane z tabeli produkty i dodaje je do tabeli koszyk i pozniej wyswietla zawartosc tabeli koszyk czyli podaje co jest juz w koszyku, ja tak to przynajmniej rozumuje moze zle cool.gif
nospor
no to ty gościowi wyswietlasz wszystkie produkty dostępne w bazie i chcesz żeby do koszyka mu dodało? Oj, źłe rozumujesz. A jak gościu chce tylko jeden produkt a nie wszystkie?
przemko77
w pierwszym pliku produkty.php wyswietlam wszystkie produkty jakie sa w bazie, a on za pomoca przycisku dodaj decyduje co bierze i to sie pojawia w pliku koszyk.php
nospor
eh, faktycznie, źle rzucilem okiem. Ale i tak brak podstawowych danych co bierze. Musi być jakieś pole ukryte w którym będzie id produktu, ilośc. Pozatym ty tobisz dla każdego produktu formularz. oj nie optymalnie. A co gdy gościu chce więcej niż jedne produkt - nalata się po twojej stronie.

Daj jeden formularz, jeden przycik wyslij i checkboxy przy produktach. Jako value dla checkboxa daj id produktu.
przemko77
tylko ze produktów bedzie ok 30, wolałbym typowe dodawanie po kolei do koszyka, pozniej zamowienie, musze sobie jakos z tym poradzic, w sieci jest duzo gotowych sklepów, ale ja chce stworzyc cos sam smile.gif przy waszej pomocy tongue.gif
jak twoim zdaniem to najlepiej rozwiazac
nospor
ehhh, skoro się upierasz biggrin.gif . jak już pisalem pole ukryte

  1. <?php
  2.  
  3. while($wiersz=mysql_fetch_array ($wykonaj)) {
  4. echo &#092;"<form action=\"koszyk.php\" method=\"post\">\";
  5. echo &#092;"
  6. <input type=&#092;"hidden\" name=\"id\" value=\"\".$wiersz['id'].\"\" />
  7. <font size=&#092;"2\">\".$wiersz['id'].\"</font>
  8. <font size=&#092;"2\">\".$wiersz['nazwa'].\"</font>
  9. <font size=&#092;"2\">\".$wiersz['cena'].\" zł</font>
  10. <input type=&#092;"submit\" name=\"koszyk\" value=\"Dodaj\"><br><br>
  11. &#092;";
  12. echo &#092;"</form>\";
  13. }
  14.  
  15. ?>



a odbierasz i wkladasz do kosszyka:
  1. <?php
  2.  
  3. //....
  4. $add_query = &#092;"INSERT INTO koszyk (user_id, product_id, ilosc_id) VALUES ('session_id', {$_POST['id']}, 'ilosc')\";
  5. $add = mysql_query($add_query);
  6.  
  7. ?>
a session_id i ilosc_id (bzdurna nazwa pola) sam se zrób.
przemko77
jak zrobic w tych dwoch plikach aby po dodaniu produktu do koszyka i powrocie do zakupów po ponownym dodaniu do koszyka innego produktu pamietalo wczesniej dodane produkty :]

produkty.php

  1. <?
  2. ?>
  3. <html>
  4. <head>
  5. <meta http-equiv=\"Content-type\" content=\"text/html; charset=iso-8859-2\">
  6. </head>
  7. <body>
  8. <?php
  9.  
  10. mysql_connect (&#092;"127.0.0.1\",\"xxx\",\"xxx\");
  11. mysql_select_db (torst_torst); 
  12.  
  13. $zapytanie = &#092;"SELECT * FROM produkty \";
  14. $wykonaj = mysql_query ($zapytanie) or die(mysql_error());
  15.  
  16. while($wiersz=mysql_fetch_array ($wykonaj)) {
  17. echo &#092;"<form action=\"koszyk.php\" method=\"post\">\";
  18. echo &#092;"
  19. <input type=&#092;"hidden\" name=\"id\" value=\"\".$wiersz['id'].\"\" />
  20. <input type=&#092;"hidden\" name=\"nazwa\" value=\"\".$wiersz['nazwa'].\"\" />
  21. <input type=&#092;"hidden\" name=\"cena\" value=\"\".$wiersz['cena'].\"\" />
  22. <input type=&#092;"hidden\" name=\"ilosc\" value=\"\".$wiersz['ilosc'].\"\" />
  23. <font size=&#092;"2\">\".$wiersz['id'].\"</font>
  24. <font size=&#092;"2\">\".$wiersz['nazwa'].\"</font>
  25. <font size=&#092;"2\">\".$wiersz['cena'].\" zł</font>
  26. <input type=&#092;"text\" name=\"ilosc\" style=\"width: 25px\">
  27. <input type=&#092;"submit\" name=\"koszyk\" value=\"Dodaj\"><br><br>
  28. &#092;";
  29. echo &#092;"</form>\";
  30. }
  31.  
  32. ?>
  33. </body>
  34. </html>


koszyk.php

  1. <?
  2. ?>
  3. <html>
  4. <head>
  5. <meta http-equiv=\"Content-type\" content=\"text/html; charset=iso-8859-2\">
  6. </head>
  7. <body>
  8. <?php
  9.  
  10. mysql_connect (&#092;"127.0.0.1\",\"xxx\",\"xxx\");
  11. mysql_select_db (torst_torst); 
  12.  
  13. $add_query = &#092;"INSERT INTO koszyk (product_id, nazwa_id, cena_id, ilosc_id)
  14.                          VALUES ({$_POST['id']}, '$nazwa', '$cena', '$ilosc')&#092;";
  15. $add = mysql_query($add_query);
  16.  
  17. $zapytanie1 = &#092;"SELECT * FROM koszyk \";
  18. $wykonaj1 = mysql_query ($zapytanie1) or die(mysql_error());
  19. $wiersz1 = mysql_fetch_array ($wykonaj1);
  20. echo &#092;"
  21. <table border=&#092;"1\"><tr>
  22. <td><font size=&#092;"2\">\".$_POST['id'].\"</font></td>
  23. <td><font size=&#092;"2\">\".$nazwa.\"</font></td>
  24. <td><font size=&#092;"2\">\".$cena.\" zł</font></td>
  25. <td><font size=&#092;"2\">\".$ilosc.\" szt.</font></td>
  26. </tr></table>
  27. &#092;";
  28. ?>
  29. <a href=\"produkty.php\">Produkty</a>
  30. </body>
  31. </html>


dajcie mi jakies wskazowki do tego przykladu :] bede wdzieczny za pomoc
regis87
To nie jest OT, bo do tematu koszykow smile.gif Do rzeczy:
Czy Waszym zdaniem lepiej robic tak jak na przykladzie powyzej koszyk na zasadzie twardego przypisywania w bazie danych wszystkich produktow w koszyku do usera, czy lepiej zrobic bardziej "ulotny" koszyk na sesjach/cookies? Na tej zasadzie, ze po wylaczeniu przegladarki (a przed wyslaniem zamowienia:P ) i powrocie na strone koszyk pusty a my z radoscia od nowa zaczynamy zakupy smile.gif Jakie sa plusy i minusy obu rozwiazan?
przemko77
czytałem juz sporo na temat sesji ale jakos nie moge tego do konca zrozumiec sad.gif moze mi ktos to wytlumaczy prostymi slowami :]
nospor
Cytat
jak zrobic w tych dwoch plikach aby po dodaniu produktu do koszyka i powrocie do zakupów po ponownym dodaniu do koszyka innego produktu pamietalo wczesniej dodane produkty :]
Przecież po dodaniu do koszyka, wyswietlasz jego zawartość za tabeli więc chyba pamięta. Sęk w tym, że ty w koszyku nie masz identyfikacji kto dodał. Wszyscy uzytkownicy walą do tego samego koszyka i nie wiadomo kto tam wrzucił. Brakuje pole identyfikującego użytkownika. Jeśli tak bardzo chcesz to mieć w tabeli musisz dorobić albo rejestrację i logowanie użytkownika i potym identyfikować. Możesz też próbować po IP, ale ono może być zmienne i już problem.

Tutaj rozwiązaniem może być właśnie sesja. Zamiast do tabeli wkładać do sesji produkty. Na czas włączonej przeglądarki gościu cały czas będzie miał produkty w koszyku (sesji). Zazwyczaj ludzie jak robią zakupy i wkładają do koszyka to od razu płacą anie wychodzą ze sklepu, po dwóch dniach wracają biarą swój koszyk i dopiero płacą. Także sesja byłaby tu chyba nawet bardziej na miejscu. Ale to rzecz gustu. Jak niechcesz sesji to dorób rejestrację użytkowników.

Cytat
czytałem juz sporo na temat sesji ale jakos nie moge tego do konca zrozumiec  moze mi ktos to wytlumaczy prostymi slowami :]
Sesja trwa na czas włączonej przeglądarki przez użytkownika (no chyba że przez 20 minut nic nie robi to sesja wygasa). Każdy użytkownik ma swoją sesję i można do niej wkładać rózne rzeczy, które będą pamiętane w czasie jej "życia". Ułatwia to wiele rozwiązań. W sesji pamiętane jest, czy gostek jest zalogowany, wrzucane są rzeczy do koszyka itp.
przemko77
wlasnie chce to zrobic na sesjach ale zupelnie nie moge sie w tym polapac a tyule juz sie naczytalem, nigdzie nie moge znalesc jakiegos konkretnego przykladu wytlumaczonego normalnym jezykiem tylko sam kod php :]
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.