Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]odwołanie do elementu w tablicy wielowymiarowej
Forum PHP.pl > Forum > Przedszkole
john_doe
Witam,

dodaję do tablicy sesyjnej wartosci w taki sposób

  1. <?php
  2. $_SESSION['koszyk'][$_SESSION['id']] = array('id' => $_GET['productId'], 'ile' => 1);
  3.        
  4.        $_SESSION['id']++;
  5. ?>


print_r z tej tablicy wyglada tak

Array ( [0] => Array ( [id] => 1 [ile] => 2 ) [1] => Array ( [id] => 2 [ile] => 1 ) )

czyli pod 0 mam id=1 i ile =2
pod 1 mam id=2 i ile =1

jak się dostać do tego 0 lub 1 ?
masakra mam braki w tablicach wielowymiarowych

chce zrobić edycje koszyka zakupów pod względem ilości

koszyk wyświetlam tak
  1. <?php
  2. foreach($_SESSION['koszyk'] as $product)
  3.        {
  4.            $id = $product['id'];    
  5.            
  6.            $sql = "SELECT product_id, product_name, product_price, product_volume
  7.            
  8.                            FROM products
  9.                    
  10.                    WHERE product_id = " . $id;
  11.            
  12.            $result = mysql_query($sql);
  13.            
  14.            while($row = mysql_fetch_array($result))    
  15.            {
  16.                print '<tr>';
  17.                print '<td>' . $row[0] . '</td>';
  18.                print '<td>' . $row[1] . '</td>';
  19.                print '<td>' . $row[2] . '</td>';
  20.                print '<td>' . $row[3] . '</td>';
  21.                print '<td>' . $product['ile'] . '</td>';
  22.                print '<td><a href="edit.php?id='.I TUTAJ CHCE TO ID I NIE WIEM JAK :).'">edit</a></td>';
  23.                print '</tr>';
  24.            }
  25.            
  26.        }
  27. ?>
r4nd4ll
Spróbuj:
  1. <?php
  2. echo $_SESSION['koszyk'][$_SESSION['id']]['id'];
  3. ?>
kefirek
  1. <?php
  2. $_SESSION['id'] = 12;
  3. $_GET['productId'] = 30;
  4.  
  5. $_SESSION['koszyk'][$_SESSION['id']] = array('id' => $_GET['productId'], 'ile' => 1);
  6.  
  7.  
  8.  
  9.  
  10. foreach($_SESSION['koszyk'] AS $nazwa){
  11.  echo $nazwa['id'].' '. $nazwa['ile'];
  12. }
  13. ?>
john_doe
niestety...

potrzebuje poprzez GET przesłać środkową wartość
  1. <?php
  2. print $_SESSION['koszyk'][1]['ile'];
  3. ?>


print_r daje

Array ( [0] => Array ( [id] => 1 [ile] => 2 ) [1] => Array ( [id] => 2 [ile] => 1 ) )

czyli ten mój GET musi w tej chwili przyjąć wartość 0 lub 1
l0ud
Jeżeli przechodzisz przez wszystkie elementy tablicy, zaczynasz od zera, a każdy następny ma 'środkową wartość' większą o 1. Spróbuj tak:
  1. <?php
  2. $iter = -1;
  3. foreach($_SESSION['koszyk'] as $product)
  4.       {
  5.       $iter++;
  6. ?>


a później

  1. <?php
  2. print '<td><a href="edit.php?id='.$iter.'">edit</a></td>';
  3. ?>


Najprościej jednak byłoby użyć tutaj pętli for tongue.gif
vokiel
Możesz tworzyć wielowymiarowe tablice, z zagłębieniem wielokrotnie większym, a odwoływać się najlepiej przez foreach. Przykładowo:
Kod
$_SESSION['koszyk'] = Array (
[0] => Array (
    [id] => 1
    [ile] => 2 )
[1] => Array (
    [id] => 3
    [ile] => 4 )
)

Pętle:
  1. <?php
  2. foreach ($_SESSION['koszyk'] as $id => $val){
  3.    // $id będzie kolejno 0, 1, $val będzie tablicą pod tym 0 i 1
  4.    foreach ($val as $id_v => $val_v){
  5.        //$id_v będzie id i ile, a $val_v będzie 1,2
  6.          echo "\n".$id.' | '.$id_v.' : '.$val_v;
  7.    }
  8. }
  9. ?>

w wyniku otrzymasz:
1 | id : 1
1 | ile: 2
2 | id : 3
2 | ile: 4
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.