Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Usuwanie pozycji z koszyka - $_GET ?, czy można to wykonać w takowy sposób? Jak?
shpaque
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Witam, dziś mam jeszcze zagwostkę - jeśli mój koszyk pobiera zmienne za pomocą $_GET
  1. function AddToCart()
  2. {
  3. $cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : '';
  4. $itemcount = isset($_SESSION['itemcount']) ? $_SESSION['itemcount'] : 0;
  5.  
  6. $cart[PRODUCTIMAGE][$itemcount] = $_GET['productimage'];
  7. $cart[CATEGORY][$itemcount] = $_GET['category'];
  8. $cart[PRODUCTCODE][$itemcount] = $_GET['productcode'];
  9. $cart[PRODUCTNAME][$itemcount] = $_GET['productname'];
  10. $cart[FIRMA][$itemcount] = $_GET['firma'];
  11. $cart[PRICE][$itemcount] = $_GET['price'];
  12. $itemcount = $itemcount + 1;
  13.  
  14. $_SESSION['cart'] = $cart;
  15. $_SESSION['itemcount'] = $itemcount;
  16. }


  1. $total = 0;
  2. for ($i=0; $i<$itemcount; $i++)
  3. {
  4. $strHTML .= "<tr>"."\n";
  5. $strHTML .= "<td align=center><img src='./db/images/tn".$cart[PRODUCTIMAGE][$i]."'></td>"."\n";
  6. $strHTML .= "<td align=center><h2>".$cart[CATEGORY][$i]."</td>"."\n";
  7. $strHTML .= "<td align=center><h2>".$cart[PRODUCTCODE][$i]."</td>"."\n";
  8. $strHTML .= "<td align=center><h2>".$cart[PRODUCTNAME][$i]."</td>"."\n";
  9. $strHTML .= "<td align=center><h2>".$cart[FIRMA][$i]."</td>"."\n";
  10. $strHTML .= "<td align=center><h2>"."".number_format($cart[PRICE][$i],2)."</td>"."\n";
  11. $strHTML .= "<td align=center><img src='./images/del.png' title='Usuń pozycję'></td>"."\n";
  12. $strHTML .= "<tr>"."\n";


to czy mógłbym zrobić coś takiego?
  1. $strHTML .= "<td align=center><a href='torba.php?action=delete'><img src='./images/del.png' title='Usuń pozycję'></a></td>"."\n";

Jeśli tak jak to powinno poprawnie brzmieć i jak zdefiniować akcję zeby usunąć pozycję (i jak usunąć wszystko z koszyka)?

dzięki za pomoc - z góry
Go to the top of the page
+Quote Post
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Dodaj po action=delete&id=id_pozycji

Potem w skrypcie sprawdzaj czy action == delete, sprawdzaj czy id_pozycji występuje - jeżeli tak to usuń (ew. zmień ilość o jeden [sprawdzając czy będzie > 0])

A co do wszystkich to:

action=delete_all

Najprościej i wtedy usuwaj koszyk.
Go to the top of the page
+Quote Post
shpaque
post
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


ale czy akcja zostanie spełniona? czy mam podawac w request method w akcji $_GET?

podam cały początek z definicjami akcji - tu na pewno jest błąd...
  1. <?php
  2.  
  3. define("PRODUCTIMAGE", 0);
  4. define("CATEGORY", 1);
  5. define("PRODUCTCODE", 2);
  6. define("PRODUCTNAME", 3);
  7. define("FIRMA", 4);
  8. define("PRICE", 5);
  9.  
  10. if ($_SERVER['REQUEST_METHOD'] == 'GET')
  11. {
  12. if (!empty($_GET['productimage']))
  13. {
  14. AddToCart();
  15. }
  16. else
  17. {
  18. $action = isset($_POST['action']) ? $_POST['action'] : '';
  19. $value = strtoupper(substr($action, 0, 6));
  20. switch ($value)
  21. {
  22.  
  23. // Opróżnij torbę
  24. case "Opróżnij torbę":
  25. unset($_SESSION['cart']);
  26. header("Location: "."torba.php");
  27. break;
  28.  
  29. // Dalej
  30. case "Dalej":
  31. header("Location: "."klient.php");
  32. break;
  33.  
  34. }
  35.  
  36. $action = isset($_GET['action']) ? $_GET['action'] : '';
  37. $value = strtoupper(substr($action, 0, 6));
  38. switch ($value)
  39. {
  40.  
  41. // Delete
  42. case "delete":
  43. echo "fakju";
  44. break;
  45. }
  46.  
  47. }
  48. }
  49.  
  50. function AddToCart()
  51. {
  52. $cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : '';
  53. $itemcount = isset($_SESSION['itemcount']) ? $_SESSION['itemcount'] : 0;
  54.  
  55. $cart[PRODUCTIMAGE][$itemcount] = $_GET['productimage'];
  56. $cart[CATEGORY][$itemcount] = $_GET['category'];
  57. $cart[PRODUCTCODE][$itemcount] = $_GET['productcode'];
  58. $cart[PRODUCTNAME][$itemcount] = $_GET['productname'];
  59. $cart[FIRMA][$itemcount] = $_GET['firma'];
  60. $cart[PRICE][$itemcount] = $_GET['price'];
  61. $itemcount = $itemcount + 1;
  62.  
  63. $_SESSION['cart'] = $cart;
  64. $_SESSION['itemcount'] = $itemcount;
  65. }
  66.  
  67. ?>


nikt mi nie pomoze..?
Go to the top of the page
+Quote Post
muk4
post
Post #4





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


  1. case 'delete':
  2. if(isset($_SESSION['itemcount'])) $_SESSION['itemcount'] -= 1;
  3. break;


Nie wiem czy o to chodzi. Dziwny masz ten koszyk...
Go to the top of the page
+Quote Post
shpaque
post
Post #5





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


w zasadzie nie jest zle, ale przy takim kodzie usuwa wszystko co jest dodane do tej konkretnej pozycji - to znaczy jesli mam rzecz A B C i D i kliknej usun pozycje na "B" ususnie mi B C i D
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


1. Wszystkie dane modyfikujące coś (dodanie, usunięcie, modyfikacja koszyka) muszą być wysyłane w żądaniu POST, a nie jako część URL-a.
2. Skąd taki dziwny pomysł na przechowywanie danych jako:
Kod
Array (
  [PRODUCTNAME] => Array (
    [0] => 'Produkt #1',
    [1] => 'Produkt #2'
  ),
  [PRICE] => Array (
    [0] => 59.99,
    [1] => 9.90
  )
)
Zamiast w normalnej formie:
Kod
Array (
  [0] => Array (
    [PRODUCTNAME] => 'Produkt #1',
    [PRICE] => 59.99
  ),
  [1] => Array (
    [PRODUCTNAME] => 'Produkt #2',
    [PRICE] => 9.90
  )
)
Sam sobie rzucasz kłody pod nogi.
Go to the top of the page
+Quote Post
shpaque
post
Post #7





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Wlasnie problem w tym, ze to nie moj pomysl tylko programu, ktory wygenerowal taki kod, ja usiluje jedynie go pod siebie podpasowac, nie chcac wiele zmieniac bo nie mam kompletnie prawie wiedzy na ten temat... Mniej wiecej rozumiem o co chodzi tylko teraz znow musialbym tydzien siedziec zeby dojsc do tego sposobu i pozmieniac wszystko...

Ad1. Dlaczego MUSZĄ być wysyłane za pomocą POST? Umnie w GET wszystko chodzi pięknie pozostaje tylko usuniecie konkretnej pozycji i calego koszyka (bo program wygenerowal sobie usuniecie koszyka kasowaniem calej sesji - wowczas pada mi logowanie, obsluga baz danych, i extrasy uzytkownika)

Ten post edytował shpaque 14.07.2011, 10:15:44
Go to the top of the page
+Quote Post
Crozin
post
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Ponieważ żądania typu GET mogą być cache'owne (na dowolnym poziomie), znacznie łatwiej jest wymusić na kimś nieświadome ich wywołanie (jeżeli takie rzeczy jak realizacja zamówienia również lecą GET-em to mogę właściwie zrealizować zamówienie z czyjegoś konta bez jego wiedzy) - w dużym skrócie: z ogólnych powodów bezpieczeństwa.
Go to the top of the page
+Quote Post
shpaque
post
Post #9





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


to jak mam kod zmodyfikowac zeby dzialalo?

  1. $total = 0;
  2. for ($i=0; $i<$itemcount; $i++)
  3. {
  4. $strHTML .= "<tr>"."\n";
  5. $strHTML .= "<td align=center><img src='./db/images/tn".$cart[PRODUCTIMAGE][$i]."'></td>"."\n";
  6. $strHTML .= "<td align=center><h2>".$cart[CATEGORY][$i]."</td>"."\n";
  7. $strHTML .= "<td align=center><h2>".$cart[PRODUCTCODE][$i]."</td>"."\n";
  8. $strHTML .= "<td align=center><h2>".$cart[PRODUCTNAME][$i]."</td>"."\n";
  9. $strHTML .= "<td align=center><h2>".$cart[FIRMA][$i]."</td>"."\n";
  10. $strHTML .= "<td align=center><h2>"."".number_format($cart[PRICE][$i],2)."</td>"."\n";
  11. $strHTML .= "<td align=center><a href='./torba.php?act=delete&id=$i'><img src='./images/del.png' title='Usuń pozycję'></a></td>"."\n";
  12. $strHTML .= "<tr>"."\n";
  13.  
  14. $act=$_GET['act'];
  15. $id=$_GET['id'];
  16.  
  17. if ($act == 'delete')
  18. {
  19. unset($_SESSION['itemcount']);
  20. unset($_SESSION['cart']['id']);
  21. break;
  22. }


a coś w ten deseń się nie da wykombinować? Jestem pewien że dla kogoś kto zna się na php to jest sekunda odnaleźć kod który usuwa konkretną pozycję... ;(
Go to the top of the page
+Quote Post
adbacz
post
Post #10





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


Odnaleźć? Albo nie napisałeś kodu "usuwania" aby go "odnaleźć" albo go po prostu nie ma i trzeba napisać.

Ja bym zrobił tak jak jeden użytkownik wyżej napsiał. W zmiennej $_GET['id'] dać ID danego produktu (ale tu nasuwa się pytanie - skąd wziąć te ID?) a w $_GET['action'] dać 'delete' i później sprawdzać za pomocą instrukcji warunkowej, czy istnieją te zmienne i jeśli tak, to za pomocą pętli, która przeleci po wszystkich rzeczach w schowku sprawdzając przy okazji warunek, czy któryś z tych rzeczy ma takie samo ID jak to w $_GET['id']. Jesli tak (faktycznie dziwnie jets ta tablica z rzeczami) to usunąć wszystkie dane głównych indeksów, gdzie podrzędne maja taki sam index jak ten ID.

Trosza namieszałem ale to dość proste jest...

PS.
Z tego co widać, to podczas dodawania czegoś do koszyka, nie ma gdzie się zapisać jakieś unikalny ID produktu więc musiałbyś dopisać jeszcze kilka linijek i dopiero to co napisałem będzie grało.

Ten post edytował adbacz 26.07.2011, 14:46:32
Go to the top of the page
+Quote Post
shpaque
post
Post #11





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Dziekuję za odzew w końcku ktoś z nowym pomysłem napisał - tyle że mi to nic nie mówi 'kilka linijek dopisac' ok gdybym sie na tym znal dopisalbym sobie kilka linijek - tyle ze ja nie wiem CO i GDZIE dopisac...

i dalej stoję z tematem - nie wiem co zrobic... ;/

  1. ... $strHTML .= "<td align=center><a href='./torba.php?action=delete&id=$i'><img src='./images/del.png' title='Usuń pozycję'></a></td>"."\n";
  2. $strHTML .= "<tr>"."\n";
  3.  
  4. $act = 'action';
  5. $id = 'id';
  6. if ($act == 'delete')
  7. {
  8. if(isset($_SESSION['itemcount'])) $_SESSION['itemcount'] -= 1;
  9. break;
  10. }

to nie działa i nie mam pojęcia dlaczego...

a może tak?:

  1. // Odejmij
  2. case "ODEJM":
  3. if(isset($_SESSION['itemcount']))
  4. {
  5. $_SESSION['cart'] -= $_SESSION['cart']['id'];
  6. }
  7. break;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 22:05