Skocz do zawartości
tomek3232

[php] Pola Checkbox I Php

Rekomendowane odpowiedzi

Próbuje stworzyć formularz w którym wybieramy za pomocą pól chckbox zainteresowania które chce zapisać w tablicy zainteresowania[], a następnie próbuje je odczytać za pomocą pętli for. Niestety w żaden sposób nie potrafię wyświetlić wyświetlić wybranych pozycji.

<form method="post" action="index.php">
		Zainteresowania:<br>
		<input type="checkbox" name="zainteresowania[]" value="sport">sport<br>
		<input type="checkbox" name="zainteresowania[]" value="sport">motoryzacja<br> 
		<input type="checkbox" name="zainteresowania[]" value="motoryzacja">motoryzacja<br> 
		<input type="checkbox" name="zainteresowania[]" value="gotowanie">gotowanie<br> 
		<input type="checkbox" name="zainteresowania[]" value="turystyka">turystyka<br>
		<input type="checkbox" name="zainteresowania[]" value="informatyka">informatyka<br> 
		<input type="checkbox" name="zainteresowania[]" value="muzyka">muzyka<br> 
		<input type="checkbox" name="zainteresowania[]" value="film">film<br> 
		<input type="checkbox" name="zainteresowania[]" value="fotografia">fotorafia<br> 
		<input type="checkbox" name="zainteresowania[]" value="mechanika">mechanika<br> 
		<input type="submit" value="ok"><br>
</form>

 

<?phpfor ($i=0; $i<9; $i++)					{													echo $_POST[zainteresowania[$i]];												}?>
Edytowane przez tomek3232

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zamień to:

echo $_POST[zainteresowania[$i]];

na to:

echo $_POST['zainteresowania'][$i];

 

Poza tym masz błąd w formularzu, w drugim checkboxie (wartość sport dla pola motoryzacja - chyba że tak miało być).

 

Musisz mieć indeksy, jeżeli chcesz pobierać wartość zawsze z konkretnym indeksem w tablicy.

Inaczej php dostanie tablicę z wszystkimi zaznaczonymi elementami, wyglądającą mniej więcej tak:

0 => wartość zaznaczona 1

1 => wartość zaznaczona 2

2 => wartość zaznaczona 3

 

Po dopisaniu indeksów w formularzu będziesz mieć coś takiego w php:

2 => motoryzacja

4 => turystyka

7 => film

 

Drugą wersję tablicy łatwiej kontrolować przy forowaniu, chociaż ja skłaniałbym się ku pierwszej wersji i pętli while.

 

Btw, Checkboxy robi się zwykle trochę inaczej:

<input type="checkbox" name="zainteresowania[]" value="cośtam" id="id_costam"/><label for="id_costam">tekst przy checkboxie</label>

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dziękuje kolego m4r metoda z $_POST['zainteresowania'][$i] rozwiązała mój problem.

Jednak teraz mam pytanie w jaki sposób wprowadzić dane ze zmiennej do pola typu text w formularzu, ewentualnie wprowadzić liczbę za pomocą przycisków typu submit w tym samym formularzu również do pola text.

Czy w takim wypadku jestem zmuszony do podstawienia pola formularza do skryptu php i za pomocą echo i łączenia stringów generować zawartość ?

Edytowane przez tomek3232

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jak chcesz w formularzu wpisać w pole tekstowe wartość z $zmienna, to możesz zrobić tak:

<input type="text" name=jakas_nazwa" value="<? echo $zmienna ?>" />

Jeszcze dopiszę coś od siebie...

 

Wszystkie zmienne które wyświetlasz powinieneś najpierw przefiltrować, np. za pomocą takich funkcji jak htmlspecialchars(), strip_tags(), intval() dla liczb, etc.

 

Dlaczego? Przykład:

Masz formularz z polem "tekst" i "coś". Jeśli wypełnisz nieporpawnie pole "coś" to pokazuje się infromacja że trzeba poprawić a reszta pół automatycznie się uzupełnia żeby nie trzeba było przepisywać od nowa. Kod wygląda tak:

<input type="text" name="tekst" value="<? echo $_POST['tekst']; ?>" />
Jesli wpiszesz w formularzu np. "x"> <script> ... </script> <x " otrzymasz w wyniku:

<input type="text" name="tekst" value="x"> <script> ... </script> <x "" />
Jak widać, jest to klasyczna luka XSS. W przypadku polegania na register_globals i wpisywaniu bezpośrednio $tekst, atakujacy może umieścić swój kod w linku. Można także stworzyć własną stronę z formularzem i ukrytymi polami z kodem JS, która wyśle POSTa bez wiedzy użytkownika.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...