![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 19.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam problem z dodawaniem produktów do koszyka na zakupy. Niby zrobiłam że działa ale nie mam dalej pomysły jak dojść do finalnego rozwiązania. Problem polega na tym że gdy wybiore obojetnie jakie produkty z bazy danych to ten koszyk powiela mi tylko pierwszy element tablicy tak jakby innych nie było. Mógłbym ktoś zerknąć na ten kod byłabym wdzieczna (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 31 Dołączył: 10.01.2007 Skąd: Bydgoszcz/Inowrocław Ostrzeżenie: (0%) ![]() ![]() |
A co przechowujesz w tablicy $_SESSION['koszyk']? Identyfikatory z bazy danych, czy indeksy tablic PHP? Wstaw też kod dodawania czegoś do koszyka.
Próbuj debugować kod, wyświetl sobie print_r($_SESSION['koszyk']) - pokaże Ci, co zawiera ta zmienna, zrób to samo z $towary i $ceny. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 19.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
<?php session_start(); if(!isset($_SESSION['koszyk'])) { $_SESSION['koszyk']=array(); } if (isset($_GET['kup'])) { // jezeli dodajemy jaki¶ produkt do koszyka $_SESSION['koszyk'][] = $_GET['kup']; // przekierowanie z uwzględnieniem nie działaj±cych ciasteczek header('location: '.$_SERVER['PHP_SELF']. '?' .SID); exit(); } ?> <b>Twoj koszyk zawiera: <?php print count($_SESSION['koszyk']); ?> produktow.</b> <p><a href="koszyk.php">Zobacz koszyk</a></p> <?php //definicja tablic z towarami oraz cenami $lacz = mysql_connect('localhost','root','haslo') or die('Padl serwer'); $lacz = mysql_select_db('stronaphp') or die('Padla baza'); $wynik = mysql_query("SELECT ID, Nazwa_uslugi, Cena_za_metr FROM cennik_uslug ") or die('Błąd zapytania'); ?> <table border="1"> <thead> <tr> <th>Opis towaru</th> <th>cena</th> </tr> </thead> <tbody> <?php //wyswietlamy towary z tablicy $i= isset($_GET['i']) ? (int)$_GET['i'] : 0; $towary = array(); $ceny = array(); while ($row = mysql_fetch_array($wynik)) { $towary[]=$row['Nazwa_uslugi']; $ceny[]=$row['Cena_za_metr']; print '<tr><td>'.$row['ID'].'</td>'; print '<td>'.$row['Nazwa_uslugi'].'</td>'; print '<td>'.$row['Cena_za_metr'].'</td>'; print "<td><a href=\"".$_SERVER['PHP_SELF']."?kup=$i\">Kup produkt</a></td></tr>"; } ?> </tbody> </table> </body> </html> </body> </html> Ten post edytował Basia555 4.05.2015, 20:42:06 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 31 Dołączył: 10.01.2007 Skąd: Bydgoszcz/Inowrocław Ostrzeżenie: (0%) ![]() ![]() |
No i widzisz...
ustawiasz: więc na początku $i przyjmuje 0. Dalej wstawiasz: ale dla Ciebie $i jest cały czas = 0. Stąd dodajesz do koszyka w sesji kolejne 0, które pokrywa się z indeksem pierwszego towaru. Zamiast tego, w kodzie, w którym dodajesz do koszyka: a w kodzie z pierwszego posta:
Przed przetestowaniem opróżnij koszyk i jeszcze raz włóż do niego jakieś towary |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 19.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
salfunglandyare dzięki wielkie za pomoc (IMG:style_emoticons/default/smile.gif) koszyk działa (IMG:style_emoticons/default/smile.gif)
jeszcze jakbyś mógł mi wyjaśnić jak zrobić żebym mogła zrobić coś takiego, mam np usługę i do niej potrzebne są jakieś materiały. np montaż glazury i do niej potrzeba klej, fugę i nie wiem co tam jeszcze. jak wybiorę tą usługę i wpiszę ilość m^2 to mi wyświetli w koszyku ostatecznie wynik sumy: montaż glazury x ilość m^2+klej*ilość m^2+fuga*ilość m^2 da radę coś takiego zrobić? chyba najlepiej byłoby do każdej usługi i towaru przyporządkować oddzielne idkat i po tym identyfikować? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 31 Dołączył: 10.01.2007 Skąd: Bydgoszcz/Inowrocław Ostrzeżenie: (0%) ![]() ![]() |
Najlepiej umieścić pole, np w osobnym formularzu:
dalej w momencie gdy obsługujesz koszyk, będziesz mogła też obsłużych powierzchnię - można ją trzymać w sesji obok koszyka:
Później już przy obliczeniach możesz wykorzystać:
To oczywiście tylko zarys, pokazujący mniej więcej jedną z dróg do uzyskania tego co chcesz. Warunki itp. mogą być inne, dostosujesz to sobie wg. własnych potrzeb. //EDIT, a może po prostu nie zrozumiałem, o co zapytałaś (IMG:style_emoticons/default/wink.gif) Ten post edytował salfunglandyare 4.05.2015, 22:17:11 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 19.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Chodziło mi o dodanie pola w które bede wpisywała ilość i mnożyła przez cene danej usługi, a druga sprawa to ma sumować wszystkie pola z bazy z takim samym idkat i mnożyć przez to pole w którym wpisujemy ilość metrów kwadratowych. Chyba jeszcze nie to o co mi chodziło (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 31 Dołączył: 10.01.2007 Skąd: Bydgoszcz/Inowrocław Ostrzeżenie: (0%) ![]() ![]() |
To ta pierwsza część już jest (IMG:style_emoticons/default/biggrin.gif)
a gdzieś, gdzie chcesz to wszystko sumować
Podajesz ILOSC_M2 i IDKAT w zwrocie dostajesz $row['Cena_za_powierzchnie'] Czy o to chodzilo? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 19.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
To ta pierwsza część już jest (IMG:style_emoticons/default/biggrin.gif) a gdzieś, gdzie chcesz to wszystko sumować
Podajesz ILOSC_M2 i IDKAT w zwrocie dostajesz $row['Cena_za_powierzchnie'] Czy o to chodzilo? To chyba jeszcze nie jest to o co mi chodzi. Da radę zrobić abym mogła do każdego wiersza w koszyku oddzielnie wpisywać powierzchnię w m^2 lub cene za metr? A jeśli chodzi o tą drugą część to chodzi mi o to co na obrazku http://naforum.zapodaj.net/6bab60629335.jpg.html Ten post edytował Basia555 7.05.2015, 20:29:18 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 31 Dołączył: 10.01.2007 Skąd: Bydgoszcz/Inowrocław Ostrzeżenie: (0%) ![]() ![]() |
Jak najbardziej, ale będzie trzeba trochę przerobić całość. Generalnie, zamiast dodawania do koszyka przez url:
trzebaby całość zmodyfikować:
W takim przypadku dostaniesz $_GET['kup'] = ID (tak jak do tej pory), ale dodatkowo $_GET['powierzchnia'], którą będziesz musiała również zachować w sesji, np jako $_SESSION['koszyk_powierzchnia'][$_GET['kup']]=$_GET['powierzchnia']; wtedy na tej samej zasadzie co produkt ($_SESSION['koszyk']) będziesz miała informacje o $_SESSION['koszyk_powierzchnia'] (ten sam klucz). |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 19.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Jak najbardziej, ale będzie trzeba trochę przerobić całość. Generalnie, zamiast dodawania do koszyka przez url:
trzebaby całość zmodyfikować:
W takim przypadku dostaniesz $_GET['kup'] = ID (tak jak do tej pory), ale dodatkowo $_GET['powierzchnia'], którą będziesz musiała również zachować w sesji, np jako $_SESSION['koszyk_powierzchnia'][$_GET['kup']]=$_GET['powierzchnia']; wtedy na tej samej zasadzie co produkt ($_SESSION['koszyk']) będziesz miała informacje o $_SESSION['koszyk_powierzchnia'] (ten sam klucz). A jak zrobić żeby można było w koszyku dopiero zmieniać ilość i nie dla wszystkich pól taka sama powierzchnie tylko dla pól o danym IDKAT? I jeszcze jedno jak dodać do pliku towary.php fukcję która będzie mi wypisywała wszystkie potrzebne materiały z innej tabeli do danej usługi? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 20:16 |