tomek3232 Opublikowano 5 Maja 2009 Zgłoś Opublikowano 5 Maja 2009 (edytowane) 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 5 Maja 2009 przez tomek3232 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
stivo Opublikowano 5 Maja 2009 Zgłoś Opublikowano 5 Maja 2009 IMO w formularzu musisz mieć wpisane index'y w tabeli zainteresowania.. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 5 Maja 2009 Zgłoś Opublikowano 5 Maja 2009 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> Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
tomek3232 Opublikowano 7 Maja 2009 Zgłoś Opublikowano 7 Maja 2009 (edytowane) 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 7 Maja 2009 przez tomek3232 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
stivo Opublikowano 7 Maja 2009 Zgłoś Opublikowano 7 Maja 2009 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 ?>" /> Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
tomek3232 Opublikowano 7 Maja 2009 Zgłoś Opublikowano 7 Maja 2009 (edytowane) Dzięki, a już zacząłem pisać formularz za pomocą poleceń echo :) Edytowane 7 Maja 2009 przez tomek3232 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
tomek3232 Opublikowano 16 Czerwca 2009 Zgłoś Opublikowano 16 Czerwca 2009 Jakim poleceniem mogę zniszczyć element znajdujący się w tablicy zmniejszając jednocześnie liczbę jej elementów ? Polecenie unset() kasuje jedynie zawartość pozostawiając pustą wartość w tablicy. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kuebk Opublikowano 17 Czerwca 2009 Zgłoś Opublikowano 17 Czerwca 2009 Polecam lekture manuala: http://pl.php.net/manual/en/ref.array.php. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Sh4dow Opublikowano 21 Czerwca 2009 Zgłoś Opublikowano 21 Czerwca 2009 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. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kuebk Opublikowano 21 Czerwca 2009 Zgłoś Opublikowano 21 Czerwca 2009 Na wiekszosci normalnych serwerow register_globals jest wylaczone, aczkolwiek filtrowania zmiennych trafna uwaga. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...