![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
Pytanie dotyczy modyfikacji mojego formularza.
W tej chwili moje checkbox'y w formularzu wygladają tak:
Chciałbym jednak dla części z checkbox uzyskać zwiększoną funkcjonalność. Chodzi o to. żeby użytkownik formularza mógł zmodyfikować domyślną wartość tego checkboxa "przykłądowy tekst z wartością" na inną. Czyli chciałbym przesyłać wartość pola textarea, jeżeli odpowiadający mu checkbox został zaznaczony (przesłąć textarea jako wartość checkbox). Założenia: 1) Chciałbym, aby powiązane pary checkbox - textarea znalazły się w tablicy check[], aby uniknąć nadawania każdemy z checkboxów innej nazwy i niepotrzebnego zwielokrotnienia liczby danych przesyłąnych z formularza. Jeżeli nazwa musi być indywidualna dla kazdego checkbox to jak wstawić zaznaczone checkboxy do tabeli check[] przed wysłaniem danych z formularza. Rozumiem że pary checkbox - textarea powinny być powiązane jakimś id ![]() ![]() Proszę o podpowiedź jak to zrealizować. Dziekuję |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy o to Ci chodzi ale naskrobałem coś takiego. Poza tym nie rozumiem dlaczego porostu nie prześlesz wszystkich pól i nie obrobisz ich w PHP.
JS - generuje ci automatycznie n-elementowy formularz [ustaw zmienne checkboxex_qty oraz name_prefix
PHP - przekazuje Ci tablicę checkboxów indexem jest lp. w formularzu 'sent' - boolean czy checkbox został zaznacozny 'text' - wartość <textarea> pominąłem sprawdzanie poprawności danych i bezpieczeństwo
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
Super to napisałeś tylko, że ja potrzebuje podać domyślną wartość wpisaną już w każdy z tych textarea i każda z tych wartości będzie inna.
Chodzi o to, że to jest formularz, gdzie ja podaje pewne zdania/opcje do zaznaczenia poprzez checkbox, a uzytkownik klika sobie wybrane checkboxy i wynikiem jest raport zawierający wybrane przez użytkownika checkboxy (zdania). Teraz chodziło mi o to, żeby dać użytkownikowi jeszcze wieksza dowolność i moc zmodyfikować podane przeze mnie przykładowe zdania. W tym co ty zrobiłeś mam za pomocą pętli stworzone 5 checkbox (lub wiecej) i przypisne im textarea (puste). I to jest to o co prosiłem. Jednak w moim przypadku nie może to być tworzone za pomocą pętli, bo każdy ma mieć inne zdanie już wpisane ... //EDIT// (oczywiście że nie mam racji, bo może, a nawet powinno być tworzone za pomocą pętli - patrz niżej ) Teraz sobie główkuje że było by super jak bym miał zrobioną tablicę od 1 do 10 tych zdan i one byly by przyporządkowywane i wstawiane w kolejne textarea...To by był wypas. //EDIT// czyli żeby wstawić moje zdania umieszczone w tablicy tutaj Bede wdzieczny za pomoc Puszy. ---- Ps. Część z danych do formularza ciągne z bazy danych i wstawiam do formularza. Już kiedyś myślałem nad tym żeby zbudować bazę w której kolejne rekordy były by moimi wartościami dla checkbox. Tym bardziej, że chciałem dodać możliwość tworzenia tego raportu w innym jezyku i wtedy w bazie miałbym pod kolejnymi Lp odpowiedniki zdań dla różnych języków. Ten post edytował pela222 2.10.2014, 15:42:49 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
W takim razie dorzuciłem tablicę Twoich wartości, co najlepsze nie musisz podawać ilości checkboxów, wystarczy że wypełnisz tablicę. Dodatkowo bezpieczniej jest przerzucić JS na PHP czyli wygenerować HTML z poziomu PHP, nie wiem dlaczego zrobiłem to w JS o.O
W zależności ile podasz tekstów w tablicy ta_defaults tyle checkboxów się pojawi, jeżeli chces zjakiś <textarea> mieć pusty, wstaw pusty string.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
Powiedz mi jeszcze jak mam takie coś rozwiązać dla zmiennej ta_defaults.
Czyli jak wprowadzić warunek że np. Zdanie pierwsze jest "abc" gdy zmienna $type == 'single' ale "ABC" gdy zmeinna $type == 'dual' EDIT --- Resolved mam teraz takie coś i działa ;-) wiec chyba sam sobie odpowiedziałem na pytanie pierwsze (chyba że jest jakiś bład lub lepszy sposób to czekam na info):
czyli że jak zastąpie var type = 1; takim czymś var type = "<?php echo $type; ?>"; to pewnie bedzie git ---- EDIT I na koniec jeszcze jedno lamerskie pytanie. Do tej pory wyświetlałem moje zmienne poprzez: $str = implode($check); echo $str; A jak to bedzie teraz? To znaczy wyświetl te <textarea> dla których sent = 1 ? ----- EDIT --- Resolved :-) No to jeszcze na koniec jeszcze jedno pytanko: Czy nie moge tego zrealizować w całości w php zamiast z wykorzystaniem js? no to chyba z tym też sobie poradziłem :-)
Ten post edytował pela222 3.10.2014, 00:21:18 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem do końca o co chodzi z tym Ryszardem, więc raczej nie pomogę. Nie widzę zastosowania tego co napisałeś.
Cytat EDIT I na koniec jeszcze jedno lamerskie pytanie. Do tej pory wyświetlałem moje zmienne poprzez: $str = implode($check); echo $str; A jak to bedzie teraz? To znaczy wyświetl te <textarea> dla których sent = 1 ? nie wiem czy Ci o to chodzi: przeleć foreachem i sprawdź czy check był zaznacozny
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
No i o to chodziło mistrzu ;-) Ryszard to tylko przykładowa zmienna którą dla potrzeb testów sobie stworzyłem.
Super dzieki za pomoc. Naprawdę dużo się nauczyłem. Najbardziej byłem w szoku, jak sam zrobiłem (przerobiłem z twojego js) pętle dla php. Znaczy że coś sie nauczyłem, bo rok temu, to nie wiedziałem nic na temat php, a jak łątwo się domyślić nie zajmuję się tematem zawodowo, a hobbystycznie. :-) Ten post edytował pela222 3.10.2014, 09:34:09 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za kolejną wskazówkę.
Na koniec (chyba już ostatnie pytanie). Czy jak chcę użyc tablicy 2 krotnie (chcę mieć 2 zestawy zmiennych) to należy to zrobić w taki sposób?
a plik z rezultatami będzie wygladał tak:
Czy istnieje jakieś porostsze rozwiązanie. Jako efert ostateczny czcę otrzymać 2 zestawy zmiennych $list i $list2. ... chyba że można puścić to raz (jedna tablica) i na końcu rozdzielić na 2 tablice...??dla przykładu pierwszy zestaw od $ch1 do $ch99, drugi od $ch100 do $ch199 itd. Piszę 2 choć tak naprawdę potrzebuję 4, no ale zasada działania taka sama.:-) Ten post edytował pela222 3.10.2014, 16:59:22 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wrzuć to sobie w funkcję, stwórz jakąś klasę. Podany przeze mnie skrypt nei zawiera filtrowania danych oraz sprawdzania ich poprawności, co jest wymagane w przypadku korzystania z funkcji, inaczej możesz sobie namieszać
funkcja do tworzenia:
funkcja do sczytywania:
przykładowe odpalenie: Ten post edytował Puszy 7.10.2014, 15:25:33 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
@Puszy Strasznie doceniam twoj czas i pomoc... niestety jeszcze raz muszę prosić o pomoc.
Mam teraz takie dwa pliki form.php
oraz plik checkbx.php
Plik form.php prawidłowo generuje formularz z 8 checkbox + 8 textarea. var_dump ($prefixes); zwraca prawidłowo: array(3) { [0]=> string(4) "qwer" [1]=> string(4) "asdf" [2]=> string(4) "zxcv" } Nie rozumiem do czego służy to??: bo zmienna '.$prefix.'_prefix nie jest przetwarzana w pliku docelowym. Przechodząc do pliku checkbx.php to tutaj już rozumiem niewiele :-( Podam co moge odczytać: zwraca "3" zwraca "on" dla zaznaczonego pierwszego checkboxa, zwraca "" gdy niezaznaczony zwraca "pytanie 1" zwraca "3" ale jak wylistować zaznaczone checkbox i odpowiadające im textarea to juz nie wiem. Z góry dziękuję za pomoc. Ten post edytował pela222 7.10.2014, 19:05:11 |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tak, tego fragmentu nie powinno być, pozostałość po starym kodzie. Linijka do wyrzucenia. Wyjaśnienie funkcji getFromData
ostateczna tablica wygląda tak:
W zależności co chcesz z nią zrobić możesz użyć np foreach i wybrać tylko interesujące Cię checkboxy czy też znaleźć konkretną wartość <textarea> i sprawdzić przy jakim checkbox się znajdowała. Dla przykładu tak jak napisałeś, wylistujemy checkboxy które zostały zaznaczone i pobierzemy nową tablicę, tylko zaznaczonych checkboxów:
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
To co robisz to jest dla mnie inna liga...
Powiem tak potrafię w dużej mierze czytać napisany przez ciebie kod. Szczególnie jak już wszystko działą. Niestety, ale na ten moment w pliku checkbx.php dla mam NULL czyli, że tam się żadna tablica nie tworzy (przynajmniej u mnie). Ten post edytował pela222 10.10.2014, 09:49:13 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
W którym miejscu uzywasz var_dump?
Jeżeli w funkcji to jest to niemożliwe bo na starcie $output jest zdefiniowany jako pusta tablica. Jeżeli poza funkcją to nie robisz var_dump ($output); tylko var_dump (getFormData($list_prefixow)); Zmienne wewnątrz funkcji są osiągalne tylko i wyłącznie wewnątrz funkcji. Jedyne "wyjście" zmiennej wykonuje się poprzez return $zmienna, ale wtedy zmienna nie posiada tej samej nazwy jaką posiadała wewnątrz funkcji.
Ten post edytował Puszy 10.10.2014, 10:37:11 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
zwraca array(0) { } czyli chyba dobrze... ![]() ![]() |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
I tak i nie, funkcja działa poprawnie, ale widocznie podajesz puste dane. Tutaj jest ten sam problem z zasięgiem, parametr funkcji czyli funkcja($parametr) jest również dostępny tylko wewnątrz funkcji.
Analizując ogólnie: 1. Plik form.php generuje formularz 2. Plik checkbx.php pracuje na danych z forumlarza Lista prefixów musi w w obu plikach być taka sama, ewentualnie listę prefixów musisz przekazać z form.php do checkbx.php. Rozumiesz w czym rzecz? |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
Już rozumiem dlaczego nie wyświetlało mi struktury tabeli...
Po dodaniu do pliku checkbx.php tablicy z listą prefixów otrzymałem wyświetloną prawidłowo strukturę...(tak jak już raz wrzuciłeś więc nie będę przyklejał). Co do ostatecznego rozwiązania (wyświetlenia zaznaczonych checkboxów (tradycyjnie już) mam problem.
Nic mi nie wyświetla. Niestety. Ten post edytował pela222 10.10.2014, 13:16:44 |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Znowu podajesz jako parametr zmienną która nie istnieje, funkcja musi przyjąć za parametr istniejące dane:
może tak będzie dla Ciebie czytelniej
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
Ok...mam to :-)
Na koniec jeszcze raz super dziękuje za pomoc. Twoją cierpliwość mocno nadwyrężyłem i następnym razem, chyba się dwa razy zastanowisz, zanim komuś pomożesz :-) Tak jak pisałem jesteśmy na dwóch rożnych poziomach. Uwierz, że jak widzę takie rozwiązanie jak to, to mam banan na tworzy od ucha do ucha...coś co ja bym skrobał 200 linijkami kodu ty rozwalasz systemem w 10 linijkach. Pozdrawiam i dziękuje. |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Nie ma problemu. Nie jestem specjalistą. Jakbyś szczegółowo przedstawił o co chodzi w tym skrypcie to można by zrobić tego ładną klasę ale nie wiem jak u Ciebie z OOP. Szczerze to nie widzę zastosowania checkboxów z edytowalnymi textarea, ale czy to ważne
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.05.2025 - 07:14 |