Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Przeszkuwianie tablicy pod katem istniejącej zmiennej, Dane się dodają do tablicy pomimo warunku
rozny
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


Witam,

mój problem jest z goła błahy, ale nie zmienia to faktu, że się z nim pieszczę już zdecydowanie za długo, dlatego postanowiłem poszukać pomocy u Was (IMG:style_emoticons/default/smile.gif)

Temat - koszyk sklepowy
Problem - Dodaję towar do koszyka - trzymam to w dwuwymiarowej tablicy. Skrypt ma sprawdzić, czy taki towar już istnieje, jeżeli tak, to wyświetla info, jeżeli nie to dodaje do koszyka. Problem w tym, że nawet jeśli skrypt znajdzie już produkt w tablicy, to wyświetla info i dodaje kolejny raz ten sam produkt do tablicy.
Szukamy towaru po "$prod_id".

Tablica:

  1. array
  2. 0 =>
  3. array
  4. 'prod_id' => string '3' (length=1)
  5. 'amount' => string '1' (length=1)
  6. 1 =>
  7. array
  8. 'prod_id' => string '1' (length=1)
  9. 'amount' => string '1' (length=1)
  10. 2 =>
  11. array
  12. 'prod_id' => string '1' (length=1)
  13. 'amount' => string '1' (length=1)


Próbowałem na dwa sposoby chapnąć to zagadnienie, ale oba działają tak samo, dlatego stwierdzam że to problem mojego podejścia do tematu. Prosiłbym o przeanalizowanie tych skryptów i podzielenie się ze mną solucją jak to zjeść i nie zwrócić (IMG:style_emoticons/default/wink.gif)

Sposób 1:

  1. $product_id = trim(htmlspecialchars($_POST['product_id']));
  2. $amount_of_product = trim(htmlspecialchars($_POST['amount_of_product']));
  3.  
  4. $tab = array('prod_id' => ''.$product_id.'', 'amount' => ''.$amount_of_product.'');
  5.  
  6. $iloscrekordow = count($_SESSION['sklep.koszyk']);
  7.  
  8. if ($iloscrekordow == 0) {
  9. $_SESSION['sklep.koszyk'][] = $tab;
  10. }
  11.  
  12. else {
  13.  
  14. for($i = 0; $i<$iloscrekordow; $i++){
  15. if (in_array($product_id, $_SESSION['sklep.koszyk'][$i])) {
  16. echo 'Produkt istnieje w koszyku';
  17.  
  18. }
  19.  
  20. else {
  21. $_SESSION['sklep.koszyk'][] = $tab;
  22. break;
  23. }
  24. }
  25.  
  26. }


Sposób 2:

  1. $product_id = trim(htmlspecialchars($_POST['product_id']));
  2. $amount_of_product = trim(htmlspecialchars($_POST['amount_of_product']));
  3.  
  4. $tab = array('prod_id' => ''.$product_id.'', 'amount' => ''.$amount_of_product.'');
  5.  
  6. $iloscrekordow = count($_SESSION['sklep.koszyk']);
  7.  
  8. if ($iloscrekordow == 0) {
  9. $_SESSION['sklep.koszyk'][] = $tab;
  10. }
  11.  
  12. else {
  13.  
  14. $result=-1;
  15. foreach($_SESSION['sklep.koszyk'] as $key=>$val){
  16. if($val['prod_id']==$product_id){
  17. $result=$key;
  18. }
  19. else {
  20. $_SESSION['sklep.koszyk'][] = $tab;
  21. }
  22. }
  23. echo $result;
  24. }


Będę wdzięczny za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 23.08.2025 - 03:33