Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]update tablicy session
john_doe
post
Post #1





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Pawel_W
post
Post #2





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


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?
Go to the top of the page
+Quote Post
john_doe
post
Post #3





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
john_doe
post
Post #5





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
john_doe
post
Post #7





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


dokładnie na tym stoję, leże i kwicze smile.gif
nie kumam jasno jak to wygenerować

  1. <input ... name="values[3][id]" />
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A gdzie generujesz formularz? tongue.gif

Ta trójka, to klucz-index tablicy w sesji.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
john_doe
post
Post #9





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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

Ten post edytował john_doe 2.07.2009, 18:55:47
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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ę.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
john_doe
post
Post #11





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Przecież napisałem, wg jakiego nazewnictwa...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
john_doe
post
Post #13





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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

Ten post edytował john_doe 2.07.2009, 22:29:44
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: 19.08.2025 - 03:46