Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: nie działa koszyk
Forum PHP.pl > Forum > PHP
Cliassi
Cześć.

mam taki oto problem

plik add_cart.php dostaje dane:
  1.  
  2.  
  3. $productId=strip_tags($_POST['id']);
  4. $ilosc=strip_tags($_POST['ilosc']);
  5. $numer_wymiaru=strip_tags($_POST['numer_wymiaru']);
  6.  



i teraz sprawdzam czy taki produkt istnieje w tablicy:
  1.  
  2. if (isset($_SESSION['cart'][$productId]) && $_SESSION['cart'][$productId]['numer_wymiaru']==$numer_wymiaru ) {
  3. echo "dodano o $ilosc. Dla produktu o id:$productId";
  4. $amount=$_SESSION['cart'][$productId]['amount'];
  5. $amount=$amount+$ilosc;
  6. $_SESSION['cart'][$productId]['amount']=$amount;
  7.  



i to nie wiem czy jest dobrze bo nie wiem czy z plikiem viev_cart.php jest zwalone czy tutaj

i teraz dla else
  1.  
  2. else{
  3.  
  4. $productInfo = array
  5. (
  6. 'id'=>"$productId",
  7. 'numer_wymiaru'=>"$numer_wymiaru",
  8. 'amount'=>"$ilosc"
  9. );
  10.  
  11. $_SESSION['cart'][$productId] = $productInfo;
  12. // header('Location: index.php?v=cart');
  13. }



nie działa i nie wiem co. Potrzebuje sprawdzic czy produkt o id i numerze wymiarow istnieje. czy ten kod jest ok ?

bo w pliku view_cart.php

  1. $cart = $_SESSION['cart'];
  2.  
  3. if(empty($cart))
  4. echo"<div class=\"msg_info\">Brak produktów w koszyku</div>";
  5. else{
  6.  
  7. echo"<table width=\"670\" border=\"0\">
  8. <tr height=\"40\" bgcolor=\"#433C3C\">
  9. <td width=\"50\" align=\"center\">Nr Kat</td>
  10. <td align=\"center\">Nazwa</td>
  11. <td width=\"90\" align=\"center\">Cena</td>
  12. <td width=\"60\" align=\"center\">Ilość</td>
  13. <td width=\"90\" align=\"center\">Razem</td>
  14. <td width=\"60\" align=\"center\">Usuń</td>
  15. ";
  16. $total=0;
  17. foreach($cart as $product){
  18.  
  19. $id=$product['id'];
  20. echo"$id";
  21.  



nadpisuje jesli dam inny numer wymiaru w show_product.php
tehaha
1. Nie pomagam na PW, ale niech już stracę.
2. Przede wszystkim występuje u Ciebie fundamentalny błąd logiczny - id to unikalny identyfikator rekordu w bazie, więc jeżeli identyfikujesz coś na podstawie id i rozmiaru to znaczy, że coś jest nie tak. Być może chodzi tu o jakiś numer katalogowy produktu, ale id to id i ma być unikalne.
3. To początkowe strip_tags() jest bez sensu, jeżel mają to być liczby całkowite to lepiej zrobić tutaj rzutowanie na int
  1. $productId= (int)$_POST['id'];
  2. $ilosc= (int)$_POST['ilosc'];
  3. $numer_wymiaru= (int)$_POST['numer_wymiaru'];

4. Jak zakładasz temat to powinieneś dokładnie opisać co próbujesz osiągnąć i w jakim formacie są zmienne przesyłane z formularza. Z tego co widzę to identyfikacja produktu dokonywana odbywa się na podstawie numer produktu i numeru wymiaru. Jeżeli użytkownik już ma taki produkt w koszyku to ilość ma być powiększona, a jak nie to ma zostać dodany. W takim przypadku praktyczniejsze, będzie aby kluczem był hasz z tego numeru i wymiaru

  1. $productId = (int)$_POST['id'];
  2. $ilosc = (int)$_POST['ilosc'];
  3. $numer_wymiaru = (int)$_POST['numer_wymiaru'];
  4.  
  5. $productKey = md5($productId.$numer_wymiaru);
  6.  
  7. if(isset($_SESSION['cart'][$productKey]))
  8. {
  9. echo "dodano o $ilosc. Dla produktu o id:$productId";
  10. $_SESSION['cart'][$productKey]['amount'] += $ilosc;
  11. }
  12. else
  13. {
  14.  
  15. $productInfo = array
  16. (
  17. 'id'=>"$productId",
  18. 'numer_wymiaru'=>"$numer_wymiaru",
  19. 'amount'=>"$ilosc"
  20. );
  21.  
  22. $_SESSION['cart'][$productKey] = $productInfo;
  23. }

chociaż ten Twój kod wydawał się dobry i powinien działać, może błąd leży gdzie indziej? Może przekazujesz różne id produktu? Bo z tego co pokazałeś to wynika, że dla kilku wymiarów jest to samo id.
Cliassi
Dzieki!
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.