Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zwiększanie tablicy
Forum PHP.pl > Forum > Przedszkole
narki1
Od początku.
Mam formularz ,którym przesyłam dwie zmienne $id i $name.
Formularz:
  1. <form action='dodaj.php' method='POST'>
  2. <input type='submit' value='DODAJ' /><br />
  3. <input name='id' type='text' value='1' maxlength='2' size='1'/><br />
  4. <input name='name' type='text' />
  5. </form>


następnie w pliku dodaj.php chcę użyć sesji do zbudowania tablicy:
dodaj.php:
  1. <?php
  2. if (!isset($_SESSION['counter']))
  3. $_SESSION['counter']=(0);
  4. $tablica=$_SESSION['counter'];
  5. $_SESSION['id'][$tablica]['ide']=$_POST['id'];
  6. $_SESSION['name'][$tablica]['nam']=$_POST['name'];
  7. $_SESSION['counter']=++$_SESSION['counter'];
  8.  
  9. print_r($_SESSION['id']);
  10. ?>

Dostaję komunikat
Cytat
Cannot use string offset as an array

Chcę osągnąć tablicę ,która za każdym kliknięciem na formularzu "DODAJ" zwiększała się o elementy "id" oraz "name".
Próbowałem też push_array ale nie chce ruszyć.
Pomóżcie bo poległem na indeksowaniu tablicy.
Oczywiście zmienne w sesji są zarejestrowane a jak wywalę tablice i zrobię
  1. <?php
  2. echo $_SESSION['id']
  3. ?>
to jest OK.
erix
  1. <?php
  2. $_SESSION['counter']=++$_SESSION['counter'];
  3. ?>

Ale kombinujesz. tongue.gif

  1. <?php
  2. $_SESSION['counter']++;
  3. ?>

przecież wystarczy...

Cytat
Cannot use string offset as an array

Cytat
to jest OK.

To wychodzi na to, że to nie jest tablicą. Ja bym robił to na odwrót:
  1. <?php
  2. $_SESSION[$tablica]['id']['ide']=$_POST['id'];
  3. ?>

Będzie logiczniej; trzymaj rekord w kupie, a nie tak rozsypujesz.
narki1
Cytat
Ale kombinujesz.

Przepraszam - stare nawyki z turbo pascala.
Co do błędu to już go nie ma ale chyba wciąż to nie jest tablica ponieważ gdy zrobię
  1. <?php
  2. print_r($_SESSION['id']);
  3. ?>
po dodaniu kilku elementów powinienem uzyskać całą tablicę a dostaję tylko ostatnio dodany element.
erix
Skoro tak, to wychodzi na to, że licznik indeksu w tablicy jest cały czas ten sam. winksmiley.jpg

Przejdź na moje rozwiązanie.
narki1
Przeszedłem na licznik ++ od razu.
Jak echuję licznik to się zwiększa prawidłowo.

yahoo.gif Zrobiłem trochę inaczej niż zakładałem na początku ale jest dobrze:
  1. <?php
  2. if (!isset($_SESSION['counter']))
  3. $_SESSION['counter']=(0);
  4. $tablica=$_SESSION['counter'];
  5.  
  6. $_SESSION['name']= $_POST['name'];
  7. $_SESSION['id'][$tablica]=Array($_SESSION['name'],'może być następna zmienna');
  8. $_SESSION['counter']++;
  9.  
  10. print_r($_SESSION['id']);
  11. ?>

Mała rzecz a cieszy
Dzięki za pomoc
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.