Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
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 (IMG:http://forum.php.pl/style_emoticons/default/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.
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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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.
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 (IMG:http://forum.php.pl/style_emoticons/default/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? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ta trójka, to klucz-index tablicy w sesji.
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 (IMG:http://forum.php.pl/style_emoticons/default/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ę.
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...
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.12.2025 - 10:10