Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] checkbox w sesji
Forum PHP.pl > Forum > Przedszkole
lukash82
Witam,

Mam problem z przesyłaniem checkbox-a w sesji. Może na przykładzie będzie łatwiej to wytłumaczyć:

Jest sobie jakiś tam formularz:

  1. <input name='produkty[]' type='checkbox' value='1' />
  2. <input name='produkty[]' type='checkbox' value='2' />
  3. <input name='produkty[]' type='checkbox' value='3' />
  4. </form>


i kilka innych pól ale upraszczam to do tych checkboxów

Ok, wysyłam to dalej, gdzie następuje weryfikacja. I wtedy jeśli coś jest nie tak to zmienne $_POST są zapisywane do $_SESSION i wracamy do formularza powyżej.

  1. $_SESSION['produkty'] = $_POST['produkty'];


Pytanie, jak zaznaczyć te checkbox-y, które zostały we wcześniejszym kroku zaznaczone przez użytkownika, aby nie musiał ich znów od nowa zaznaczać?

Próbuję tak:

  1. if($_SESSION['produkty'][$row['id']]==$row['id']) echo " checked='checked'";


Ale to nie działa. Pewnie dlatego, że $row['id'] leci od 1, a tablica zapisana w sesji od 0. Próbowałem już na różne sposoby +-1 ale chyba coś źle kombinuję. No chyba, że jest tu jakiś błąd albo wogóle sama koncepcja jest błędna? Jeśli ktoś może coś podpowiedzieć to będę dźwięczny. Pozdrawiam, Ł.

PS. Ten powyższy formularz generuje się w pętli na podstawie danych z bazy. Tutaj jest tylko jego uproszczona wersja.
fastlone
Zamiast nazywać posta produkty[], po czym dawac wartość liczbową jako przesyłaną wartość, zrobiłbym jakieś value="yes", po czym sprawdził warunkiem
  1. if($_SESSION['produkty'][$row['id']]=="yes" echo " checked='checked'";

Tak w ogóle, po co zapisujesz dane produkty do sesji, skoro przechodząc do następnej podstrony te posty się przesyłają? Zamiast tego używaj <input type="hidden" name=".." value=".." />.
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.