Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sesja oraz dodawanie do tablicy
Forum PHP.pl > Forum > Przedszkole
dazer91
Witam
Jestem nowy i proszę nie jeździjcie po mnie jeśli ktoś miał już taki problem.
Mianowicie sprawa wygląda tak:
tutaj mam skrypcik który ma byc odpowiedzialny za dodawanie do tablicy pobierając z formularza pewne dane:
  1. <?
  2. if(!isset($_SESSION['dodaj']))
  3. {
  4. $_SESSION['dodaj'] = 1;
  5. $i=1;
  6. }
  7. else{
  8. $i = $_SESSION['dodaj'];
  9.  
  10.  
  11. $nazwa[$i]=$_POST['nazwa'];
  12. $_SESSION['dodaj'] = $_SESSION['dodaj'] +1;
  13. }
  14.  
  15. ?>

Teraz troszkę wytłumaczę.
Te kombinacje z $i i $_SESSION wynikają z tego że gdy dam $i++ to nie zwiększa mi wartości.
skrypt dodawac dodaje do tablicy ale dodaje tylko dla aktualnej wartości $i, ale jak będę chciał wyświetlic coś ręcznie i zamiast $i w tablicy wpiszę 3 a $i będzie różne od tej liczby to nie wyświetli nic. W C++ z tablicami nie mam problemu. Tutaj męcze już 3 dzień. Czytałem sporo. Kombinowałem i nic...
Prosił bym o pomoc...
Sokon
Używaj tagów [ php ] [ /php ], z tego co widzę, to
  1. $nazwa[$i]=$_POST['nazwa'];
jest po każdym wykonaniu submit resetowany więc nic dziwnego, że nie działa.
mortus
Do poczytania:
Jak poprawnie zadać pytanie
Tematyka i zasady panujące na forum Przedszkole

Zauważ, że w sesji zapisujesz tylko indeks tablicy, a nie dane przesłane przez formularz. Zmienna $nazwa[$i] jest natomiast tworzona za każdym razem, kiedy uruchamiasz skrypt i zawsze jest to tablica z jednym tylko elementem o indeksie $i.
  1. if(!isset($_SESSION['dodaj'])) {
  2. $_SESSION['dodaj'] = 1;
  3. }
  4. if(isset($_POST['nazwa']) && $_POST['nazwa'] != '') {
  5. $_SESSION['nazwa'][$_SESSION['dodaj']] = $_POST['nazwa'];
  6. $_SESSION['dodaj']++;
  7. }
  8.  
  9. // sprawdźmy zawartość zmiennej $_SESSION['nazwa']
  10. echo '<pre>';
  11. print_r($_SESSION['nazwa']);
dazer91
Czyli jak ma to wyglądac, nie wiem właśnie dlaczego mi nie zapamiętuje danych. Co mam zrobic alby submit był zarejestrowany tylko raz ?
Sokon
Ja bym to np. zrobił tak:
  1. $_SESSION['nazwa'] .= $_POST['nazwa']."|";
  2. $nazwaArray = explode( $_SESSION['nazwa'], "|" );
  3.  
  4. echo $nazwaArray[$i];

Fifi209
Sokon a po co zabawy z explode? Nie można od razu do tablicy wpisywać? $_SESSION['name'][] = 'wartosc'; ?
dazer91
Dobra dzięki Panowie. Pomęczę i spróbuje coś zrobic.
Dzięki za tak szybką odpowiedź i pomoc wink.gif
Jak coś to pozwolę sobie zadac kolejne pytanie smile.gif
Sokon
Można, ale po co się ograniczać do jednego rozwiązania :-)?
Fifi209
Cytat(Sokon @ 10.09.2011, 16:34:30 ) *
Można, ale po co się ograniczać do jednego rozwiązania :-)?

Bo tak tracisz mniej zasobów na serwerze?
Sokon
Trochę zaczynamy offtopować, ale odpowiem Ci na pytanie - nie zapominajmy, że to jest przedszkole i co do optymalizacji kodu i oszczędzania zasobów to chyba lekka przesada w tym dziale ? Ty mi pewnie odpiszesz, że dobrych nawyków trzeba nabierać od przedszkola, na co ja napiszę, że masz rację i więcej już nic nie napiszę bo się moderatorzy zaczną czepiać :-)
Cytat
Dobra dzięki Panowie. Pomęczę i spróbuje coś zrobic.

Nie ma co męczyć, dostałeś gotowe rozwiązania :-)
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.