Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczny formularz w PHP (problem z listami rozwijanymi-select)
Forum PHP.pl > Forum > Po stronie przeglądarki
itseepawel
Witam serdecznie,
mam problem z dynamicznym formularze.
W skrócie mój problem:
https://zapodaj.net/cda7a7a27bf96.png.html
Mam sobie taki formularz.
Selecty działają na zasadzie disabled, czyli jeżeli w 1 select jest opcja numer 1 to w drugim możemy wybrać tylko takie opcje itd. itd.
Problem polega na tym, że po dodaniu kolejnego zamówienia selecty odwołują się tylko do selectów z 1 wiersza.
Jak zmienię w drugim wierszu wybiorę opcję to forma dostawy w 2 wierszu opcje są zablokowane, ale forma dostawy z 1 wiersza dostosowuje się do wyboru z 2 wiersza pomijając wybraną opcję z 1 wiersza.
Każdy kolejny select w wierszach cały czas odwołują się tylko do selectów z 1 wiersza.
Obstawiam pewnie, że chodzi o unikalność każdego wiersza, ale nie do końca wiem w jaki sposób to zrealizować. Czy id, czy name, czy jak?
Dziękuje za odpowiedzi
nospor
Moze byc ID, a mozesz rownie dobrze dzialac w obrebie jednego wiersza, czyli szukac elementow w danym wierszu na ktorym pracujesz


ps: przenosze. Problem z php nie ma zadnego zwiazku
itseepawel
Cytat(nospor @ 9.09.2020, 11:23:17 ) *
Moze byc ID, a mozesz rownie dobrze dzialac w obrebie jednego wiersza, czyli szukac elementow w danym wierszu na ktorym pracujesz


ps: przenosze. Problem z php nie ma zadnego zwiazku

Hmm a czym lepiej? Zrobić, a się nie narobić ( by nie pisać milion linijek kodu). Na czym mi zależy :
1) Po pierwsze jeden wiersz to jeden wiersz i odwołuje się on do samego siebie( jak zmieniam selecty w tym wierszu to one odwołują się do tego wiersza)
2) Walidacja zależności. Mam przycisk submit form i ten formularz tam jest. Przycisk jest zablokowany dopóki wszystko nie jest poprawnie, a o poprawności mówię właśnie w selectach, np. wybierzemy w 1 selecie jakąś opcje, a w drugim select można wybrać wszystkie opcje, ale tylko wybrane opcje są przypisane do opcji z 1 select, gdy ktoś wybierze inne niż może select zmieni kolor na, np. czerwony, że jest jakaś niezgodność, a na biały/ zielony gdy jest ok. Mógłbym to robić za pomocą hidden/disabled, ale ma to też służyć to nauczenia użytkownika co jest poprawne, a co nie. Na pewno bym musiał zliczać ilość błędów i w którym miejscu błędy są.
nospor
Ja osobiscie preferuje dzialanie na wierszach niz na ID. Robie tak od lat i nie ma z tym zadnych problemow
itseepawel
Cytat(nospor @ 10.09.2020, 09:53:41 ) *
Ja osobiscie preferuje dzialanie na wierszach niz na ID. Robie tak od lat i nie ma z tym zadnych problemow

Tylko w jaki sposób odczytać wiersz, gdy formularz jest wypełniany w zależności od danych zewnętrznych. Mam se plik gdzie są 3 wiersze i foreach jeźdzę po pliku i tworzę formularz wypełniając wiersze danymi.
Na początku jest ustawiana w selectach opcja, którą wybrał wpisał użytkownik w pliku. Po wejściu w weryfikuje czy nie doszło do złamania zależności, jeżeli tak to podkreśla selectboxa na czerwono i podczas zmiany informuje go kiedy będzie ok(kolor zielony lub biały) i tutaj wchodzi problem, który rozumiem i mniej więcej wiem na czym on polega, ale nie do końca wiem jak się za to zabrać, bo nigdy czegoś takiego nie pisałem i stoję w miejscu, bo selecty przypisują się cały czas do 1 wiersza. Za zmianę i weryfikację odpowiada skrypt js, a za tworzenie i wypełnianie php. mógłbym stworzyć zmienną " i " i ją przesyłać, ale nie wiem czy to dobry pomysł. Na pewno nie obejdzie się bez komunikacji
JS <--> PHP
Mam coś takiego:
https://zapodaj.net/4b88ec2978e63.png.html
Mam dwie funkcje. Pierwsza odpala się zaraz po załączeniu się skryptu, a druga podczas zmiany selecta. Nadałem dla wiersza <tr> id o identyfikatorze $i, ale nie wiem jak to w js ustawić, by działało dla każdego wiersza i każdy wiersz byłby osobny. Narazie skrypt działa tylko dla 1 wiersza.
nospor
Nie bardzo rozumiem w czym problem albo kazdy z nas mysli o czyms innym. Ja caly czas mowie o JS. a ty?
W js bez problemu wiesz ktore elementy sa z danego wiersza.

pokaza moze kod a nie jakies obrazki ciagle wysylasz
itseepawel
Można zamknąć. Poradziłem sobie. Zrobiłem klasy w tabeli. W JS wyciągnąłem wszystkie elementy o danej klasie i pętlą przeleciałem i wszystko śmiga. Dziękuje za odpowiedzi, podpowiedzi itd. smile.gif
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-2024 Invision Power Services, Inc.