Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]update tablicy session
Forum PHP.pl > Forum > Przedszkole
john_doe
Witam, mam tablice $_SESSION, print_r z niej daje
Array ( [3] => Array ( [id] => 1 [ile] => 1 ) [4] => Array ( [id] => 2 [ile] => 1 ) )

chcę edytować i updateować klucze 'ile'
narazie nie wychodzi ale mam tyle

  1. <form method="POST" action="editExec.php">
  2.  
  3. <?php
  4.    foreach($_SESSION['koszyk'] as $value)
  5.    {
  6.        print 'idP: ' . $value['id'].'=> ilosc: <input type="text" name="updateTab[]" value="' . $value['ile'].'" /><br>';
  7.    }
  8.  
  9. ?>
  10. <input type="submit" value="zmien" name="edytuj" />
  11. </form>


elementy w sumię będą się nadpisywać kolejno czyli 1szy z jednej tablicy = 1szy z drugiej tablicy

Myślałem, że przejdę przez to imlodem ale lipa. prosze o wskazówki

potem takie coś ale też nie działa

  1. <?php
  2. foreach($_SESSION['koszyk'] as $value)
  3.        {
  4.            $i = 0;
  5.            print $value['ile'].' = ' . $_POST['updateTab'][$i];
  6.            $value['ile'] = $_POST['updateTab'][$i];
  7.            $i++;
  8.        }
  9. ?>
Pawel_W
ale zaraz, zaraz
  1. <?php
  2. $_SESSION['koszyk']
  3. ?>

z tego co napisałeś to nie ma $_SESSION['koszyk'], tylko jest
  1. <?php
  2. Array ( [3] => Array ( [id] => 1 [ile] => 1 ) [4] => Array ( [id] => 2 [ile] => 1 ) )
  3. ?>

czyli $_SESSION[3] i $_SESSION[4], które są tablicami o elementach id i ile

może tu tkwi błąd?
john_doe
kurcze jak ja się z tym bujam koniec świata...

  1. <?php
  2. $_SESSION['koszyk'] = array();
  3. ?>


dodaje do tej tablicy koszyk w taki sposób

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


wyświetlam tak
  1. <?php
  2. foreach($_SESSION['koszyk'] as $value)
  3.    {
  4.        print 'idProduktu: ' . $value['id'].'=> ilosc: ' . $value['ile'] .'<br>';
  5. ?>


chciałbym ponowić temat smile.gif
erix
Cytat
chcę edytować i updateować klucze 'ile'

A jaśniej?

Cytat
chciałbym ponowić temat

Nie zes... się czasem, to nie helpdesk, nie musisz podbijać bezczelnie tematu po ledwo kilku godzinach bez odpowiedzi. Chcesz odpowiedzi na zawołanie? Daj ogłoszenie w giełdzie ofert, uszanowałbyś nasz czas, a nie podbijasz.
john_doe
erix nie musisz się unosić bo jestem ostatnią osobą jak to nazwałeś szukającą helpdesku. Nie mam takich intencji więc nie wciskaj mi tu czegoś czego nie ma smile.gif

edytować tzn. po to zrobiłem formularz. W pola input we value wpisuje wartości klucza ile z tablicy session.
i teraz np po zmianie tych wartości i przesłaniu POSTem nadpisać stare nowymi. Nie wiem czy dobrze oddałem to jak chciałbym aby to chodziło smile.gif
erix
A jak masz np. formularz:
  1. <input ... name="values[3][id]" />

(gdzie 3, to wygenerowany klucz tablicy pierwszego stopnia zagłębienia)

I potem:
  1. <?php
  2. $_SESSION['koszyk'] = array_merge($_SESSION['koszyk'], $_POST['values']);
  3. ?>

po uprzednim przefiltrowaniu oczywiście.
john_doe
dokładnie na tym stoję, leże i kwicze smile.gif
nie kumam jasno jak to wygenerować

  1. <input ... name="values[3][id]" />
erix
A gdzie generujesz formularz? tongue.gif

Ta trójka, to klucz-index tablicy w sesji.
john_doe
mam z tym kłopot. zobacz próbowałem tak by wydobyć ten klucz i edytować pojedynczy "ile" jednak wolę mieć w formularzu wszystkie pola input i tak to edytować. Jednak nie potrafie zakodować Twojej wskazówki Erix sad.gif

  1. <?php
  2. $iter = -1;
  3.        
  4.        foreach($_SESSION['koszyk'] as $product)
  5.        {    
  6.            $iter++;
  7.            
  8.            $id = $product['id'];    
  9.            
  10.            $sql = "SELECT product_id, product_name, product_price, product_volume
  11.                            FROM products
  12.                    WHERE product_id = " . $id;
  13.            //print $sql;
  14.            $result = mysql_query($sql);
  15.            
  16.            while ($row = mysql_fetch_array($result))
  17.            {
  18.                print '<tr>';
  19.                print '<td>' . $row[0] . '</td>';
  20.                print '<td>' . $row[1] . '</td>';
  21.                print '<td>' . $row[2] . '</td>';
  22.                print '<td>' . $row[3] . '</td>';
  23.                print '<td>' . $product['ile'] . '</td>';
  24.                print '<td><a href="java script:showEditForm('editForm.php?id=' . $iter . '')">edit</a></td>';
  25.            }
  26.            
  27.        }
  28.        print '</table>';
  29. ?>


czyli pod zmienna $iter miałem ten klucz aaale to mi działa jak w tablicy są klucze np od 0..... a gdy usunę np 2 1sze i zostają klucz 1...2..itd to już klops
erix
Cytat
jednak wolę mieć w formularzu wszystkie pola input i tak to edytować.

Toteż to mam na myśli.

Ale żadnego inputa w tym listingu nie widzę.
john_doe
no bo to jest mój poprzedni pomysł, który porzuciłem. Wtedy klikałem w link i podnosiłem do edycji jakby jeden wpis. Teraz chce w pliku edit miec możliwość edycji wszystkich na raz czyli wypisać w jakiejś pętli inputy tylko nie umiem ;p
erix
Przecież napisałem, wg jakiego nazewnictwa...
john_doe
napisałem coś takiego
  1. <form method="POST" action="editExec.php">
  2.  
  3. <?php
  4.    $iter = -1;
  5.    
  6.    foreach($_SESSION['koszyk'] as $value)
  7.    {
  8.        $iter++;
  9.        
  10.        print 'idP: ' . $value['id'].'=> ilosc: <input type="text" name="updateTab['.$iter.'][id]" value="' . $value['ile'].'" /><br>';
  11.        
  12.        
  13.    }
  14.  
  15. ?>
  16. <input type="submit" value="Zmien" name="edytuj" />
  17. </form>


po odebraniu formularza i zapodaniu

  1. <?php
  2. print_r($_POST['updateTab']);
  3.  
  4. print '<br>';        
  5.  
  6. print_r($_SESSION['koszyk']);
  7.  
  8. $_SESSION['koszyk'] = array_merge($_SESSION['koszyk'], $_POST['updateTab']);
  9.  
  10. print '<br>';        
  11.  
  12. print_r($_SESSION['koszyk']);
  13. ?>


Array ( [0] => Array ( [id] => 55 ) )
Array ( [0] => Array ( [id] => 2 [ile] => 1 ) )
Array ( [0] => Array ( [id] => 2 [ile] => 1 ) [1] => Array ( [id] => 55 ) ) //tutaj po merge

czyli nie kosi
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.