Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] znikajaca sesja po przeladowaniu
lnn
post 16.01.2010, 23:47:49
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 11
Dołączył: 17.12.2008
Skąd: LU

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


witam

nie mialem tego problemu dopoki nie wstawilem tego (ponizej), mysle ze chodzi o to ze tablica $_POST po przeladowaniu ulega "wyczyszczeniu" :/

  1. <div class="row">
  2. <div class="cell_left"><label for="wyposazenie_ilosc">wyposażenie pokoi:</label></div>
  3. <div class="cell_right">
  4. <?php
  5. $ilosc = (isset($_GET['ilosc']) ? $_GET['ilosc'] : 0);
  6.  
  7. $mozliwosci = array('wybierz ilo?ć pól do wstawienia',1,2,3,4,5,6,7,8,9,10);
  8.  
  9. ?>
  10.  
  11. <select name="wyposazenie_ilosc" onchange="location = 'index.php?p=add2&ilosc=' + this.options[this.selectedIndex].value;">
  12. <?php
  13. foreach($mozliwosci as $mozliwosc):
  14. if($mozliwosc==$_GET['ilosc'])
  15. {
  16. $zaz='selected';
  17. } else {
  18. $zaz='';
  19. }
  20. ?>
  21. <option value="<?php echo $mozliwosc; ?>" <?php echo $zaz?>><?php echo $mozliwosc; ?></option>
  22. <?php endforeach; ?>
  23. </select></div>
  24. </div>
  25. <div class="row">
  26. <div class="cell_left"><label for="wyposazenie"></label></div>
  27. <div class="cell_right">
  28. <?php for($i=0,$j=$ilosc;$i<$j;$i++): ?>
  29. <input type="text" value="Input nr <?php echo ($i+1); ?>" /> <br />
  30. <?php endfor; ?>
  31. </div>
  32. </div>


normalnie domyslnie sobie wyswietlam zawartosc sesji i jest:
$_SESSION['nazwa']=
$_SESSION['adres1']=
$_SESSION['adres1_nr']=
$_SESSION['adres2']=
$_SESSION['adres2_kod']=
$_SESSION['wojewodztwo']=dolnośląskie
$_SESSION['tel1']=
$_SESSION['tel2']=
$_SESSION['fax']=
$_SESSION['www']=
$_SESSION['opis']=
$_SESSION['ok']=Przejdz dalej

po zmienie ilosci tego pola wartosci sie kasuja :/
zmienne przekazuje z poprzedniej strony za pomoca POST do SESJI
  1. $_SESSION['etap_1'] = serialize($_POST);
  2. $etap_1 = $_SESSION['etap_1'];
  3.  
  4. $unserialize = unserialize($etap_1);
  5.  
  6. foreach($unserialize as $klucz => $element)
  7. {
  8. echo '$_SESSION[\''.$klucz.'\']='.$element.'<br />';
  9. }


czy da sie jakos tego javascripta zrobic tak zeby pamietal dane z sesji?

jeszcze zobrazuje sytuacje moze bedzie latwiej zrozumiec:




Ten post edytował lnn 17.01.2010, 00:00:07
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
thek
post 17.01.2010, 00:36:48
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Masz błąd bo wywołujesz przeładowanie strony w zdarzeniu onchange. POST nie zostaje wtedy wysłany bo zdarzenie submit nie zostaje wywołane. By tak się nie działo powinieneś przebudować skrypt by tworzył dynamicznie te pola bez przeładowania (w JS) a same wyniki były odebrane jako tablica, czyli najlepiej niech to będą input z name="nazwa_twoja[]" winksmiley.jpg No a ponadto samo dodawanie i odejmowanie powinno być nie na SELECT, bo każda zmiana tego skasuje Ci poprzednie wartości wpisane przy tworzeniu nowych. A przecież user mógl wiąć 5 tylko choć potem przypomni mu się jeszcze 3. I co wtedy? Ma wpisywać wszystkie od nowa? winksmiley.jpg

EDIT: Tobie powinno chodzić o coś takiego jak na tym serwisie gdzie są oferty pracy Zobacz jak tam mają pola Oferujemy, Obowiązki, Oczekujemy. Tam jest to mniej więcej tak rozwiązane jak Ci opisuję

Ten post edytował thek 17.01.2010, 00:40:49


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
lnn
post 17.01.2010, 00:45:53
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 11
Dołączył: 17.12.2008
Skąd: LU

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


Cytat(thek @ 17.01.2010, 00:36:48 ) *
Masz błąd bo wywołujesz przeładowanie strony w zdarzeniu onchange. POST nie zostaje wtedy wysłany bo zdarzenie submit nie zostaje wywołane. By tak się nie działo powinieneś przebudować skrypt by tworzył dynamicznie te pola bez przeładowania (w JS) a same wyniki były odebrane jako tablica, czyli najlepiej niech to będą input z name="nazwa_twoja[]" winksmiley.jpg No a ponadto samo dodawanie i odejmowanie powinno być nie na SELECT, bo każda zmiana tego skasuje Ci poprzednie wartości wpisane przy tworzeniu nowych. A przecież user mógl wiąć 5 tylko choć potem przypomni mu się jeszcze 3. I co wtedy? Ma wpisywać wszystkie od nowa? winksmiley.jpg

EDIT: Tobie powinno chodzić o coś takiego jak na tym serwisie gdzie są oferty pracy Zobacz jak tam mają pola Oferujemy, Obowiązki, Oczekujemy. Tam jest to mniej więcej tak rozwiązane jak Ci opisuję

no dokladnie cos takiego szukalem :/ ale chyba gotowego rozwiazania nie znajde..
to jest chyba jQuery?? z tego co ze zrodla wyczytalem.. czyli wyzsza szkola jazdy :/
no ale dzieki mimo wszystko

Ten post edytował lnn 17.01.2010, 00:48:17
Go to the top of the page
+Quote Post
thek
post 17.01.2010, 00:52:08
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Radzę Ci dokładnie się przyjrzeć źródłu strony dzięki czemu poznasz strukturę tworzenia. Jeśli pomyślisz trochę, znasz ociupinkę jQuery (ale w czystym JS to też żaden problem) i przeczytasz uważnie mój opis jak należy to zrobić, to taki skrypt powinieneś po krótkim czasie napisać samodzielnie. Uwierz, że to się tylko wydaje trudne.

EDIT: jQuery to tutaj pomoc tylko do tworzenia i usuwania elementów w zasadzie winksmiley.jpg

Ten post edytował thek 17.01.2010, 00:54:14


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 09:03