Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Tablice a pętle
matyskiewicz
post
Post #1





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

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


Witam
Mam tablicę $_SESSION['cart']:
  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [id] => 6
  6. [ilosc] => 12
  7. )
  8.  
  9. [1] => Array
  10. (
  11. [id] => 23
  12. [ilosc] => 23
  13. )
  14.  
  15. [2] => Array
  16. (
  17. [id] => 28
  18. [ilosc] => 23
  19. )
  20.  
  21. )


Przepisuje ją do $zam[$i]:
  1. <?php
  2. for($i = 0; $i < count($_SESSION['cart']); $i++)
  3.        {
  4.            if(isset($_SESSION['cart'][$i]['id']))
  5.            {
  6.                $row = $db -> dbSelect("SELECT * FROM `Products` WHERE id = ".$_SESSION['cart'][$i]['id']);    
  7.                $zam[$i]['lp'] = $i+1;
  8.                $zam[$i]['id'] = $_SESSION['cart'][$i]['id']; //sesja
  9.                $zam[$i]['ean'] = $row[0]['ean']; //baza danych            
  10.                $zam[$i]['name'] = $row[0]['name']; //baza danych
  11.                $zam[$i]['ilosc'] = $_SESSION['cart'][$i]['ilosc']; //sesja
  12.                $zam[$i]['price'] = $row[0]['price']; //baza danych
  13.                $zam[$i]['price2'] = $row[0]['price'] * 1.22; //baza danych
  14.                $zam[$i]['priceIlosc'] = $row[0]['price'] * $_SESSION['cart'][$i]['ilosc']; //baza i sesja
  15.                $zam[$i]['priceIlosc2'] = $row[0]['price'] *$_SESSION['cart'][$i]['ilosc'] * 1.22; //baza i sesja
  16.            }
  17.  
  18.        }
  19. ?>

następnie $zam[$i] przekazuje do SMARTY i wyświetlam.
Operacja funkcjonuje poprawnie do momentu usunięcia powiedzmy środkowego elementu (nieostatniego):
$_SESSION['cart']:
  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [id] => 6
  6. [ilosc] => 12
  7. )
  8.  
  9. [2] => Array
  10. (
  11. [id] => 28
  12. [ilosc] => 23
  13. )
  14.  
  15. )

W tej sytuacji wyświetla się się tylko [0] natomiast [2] istnieje w tablicy ale się nie wyświetla.
W jaki sposób mogę rozwiązać ten problem?

Zapewne wykorzystanie foreach jest bardziej optymalne lecz niestety nie umiem przekształcić mego kodu na tą pętlę.


--------------------
eclipse :)
Go to the top of the page
+Quote Post
porady-it.pl
post
Post #2





Grupa: Zarejestrowani
Postów: 89
Pomógł: 20
Dołączył: 13.05.2007
Skąd: Warszawa

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


Przekształcenie jest bardzo proste i taka pętla będzie wyglądała następująco:

  1. <?php
  2. foreach($_SESSION['cart'] as $produkt)
  3.       {
  4.           if(isset($produkt['id']))
  5.           {
  6.               $row = $db -> dbSelect("SELECT * FROM `Products` WHERE id = ".$produkt['id']);    
  7.               $zam[$i]['lp'] = $i+1;
  8.               $zam[$i]['id'] = $produkt['id']; //sesja
  9.               $zam[$i]['ean'] = $row[0]['ean']; //baza danych            
  10.               $zam[$i]['name'] = $row[0]['name']; //baza danych
  11.               $zam[$i]['ilosc'] = $produkt['ilosc']; //sesja
  12.               $zam[$i]['price'] = $row[0]['price']; //baza danych
  13.               $zam[$i]['price2'] = $row[0]['price'] * 1.22; //baza danych
  14.               $zam[$i]['priceIlosc'] = $row[0]['price'] * $produkt['ilosc']; //baza i sesja
  15.               $zam[$i]['priceIlosc2'] = $row[0]['price'] *$produkt['ilosc'] * 1.22; //baza i sesja
  16.           }
  17.  
  18.       }
  19. ?>


Proponuje zapoznać się bardzo dokładnie z tą pętlą gdyż jest ona bardzo przydatna w operacjach na tablicach.


--------------------
Kurs Video PHP i MySQL, porady-it.pl - gotowe rozwiązania dla webmasterów
Go to the top of the page
+Quote Post
matyskiewicz
post
Post #3





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

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


Ok, zapomnieliśmy jeszcze o liczniku


  1. $i=0;
  2. <?php
  3. foreach($_SESSION['cart'] as $produkt)
  4.      {
  5.          if(isset($produkt['id']))
  6.          {
  7.              $i++;
  8.              $row = $db -> dbSelect("SELECT * FROM `Products` WHERE id = ".$produkt['id']);    
  9.              $zam[$i]['lp'] = $i+1;
  10.              $zam[$i]['id'] = $produkt['id']; //sesja
  11.              $zam[$i]['ean'] = $row[0]['ean']; //baza danych            
  12.              $zam[$i]['name'] = $row[0]['name']; //baza danych
  13.              $zam[$i]['ilosc'] = $produkt['ilosc']; //sesja
  14.              $zam[$i]['price'] = $row[0]['price']; //baza danych
  15.              $zam[$i]['price2'] = $row[0]['price'] * 1.22; //baza danych
  16.              $zam[$i]['priceIlosc'] = $row[0]['price'] * $produkt['ilosc']; //baza i sesja
  17.              $zam[$i]['priceIlosc2'] = $row[0]['price'] *$produkt['ilosc'] * 1.22; //baza i sesja
  18.          }
  19.  
  20.      }
  21. ?>


--------------------
eclipse :)
Go to the top of the page
+Quote Post
porady-it.pl
post
Post #4





Grupa: Zarejestrowani
Postów: 89
Pomógł: 20
Dołączył: 13.05.2007
Skąd: Warszawa

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


Jasne zadziała tylko po co dodatkowa zmienna jak można zrobić to tak:

  1. <?php
  2. foreach($_SESSION['cart'] as $produkt)
  3.     {
  4.         if(isset($produkt['id']))
  5.         {
  6.             $row = $db -> dbSelect("SELECT * FROM `Products` WHERE id = ".$produkt['id']);    
  7.             $zam[] = array('id'          => $produkt['id'],
  8.                            'ean'         => $row[0]['ean'],
  9.                            'name'        => $row[0]['name'],
  10.                            'ilosc'       => $produkt['ilosc'],
  11.                            'price'       => $row[0]['price'],
  12.                            'price2'      => $row[0]['price'] * 1.22,
  13.                            'priceIlosc'  => $row[0]['price'] * $produkt['ilosc'],
  14.                            'priceIlosc2' => $row[0]['price'] * $produkt['ilosc'] * 1.22);
  15.         }
  16.  
  17.     }
  18. ?>


Zaś lp. którą wpisywałeś jako element tablicy nie jest potrzebna bowiem pętla foreach w smarty a także w php udostępnia dostęp do klucza który może śmiało posłużyć jako lp.


--------------------
Kurs Video PHP i MySQL, porady-it.pl - gotowe rozwiązania dla webmasterów
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: 20.08.2025 - 14:13