Cześć. Mam formularz z polem select i pięcioma polami option. W kazde z tych pól wstawiam pętlą linie z teg samego pliku. Użytkownik ma mieć mozliwość wyboru ale jak się zabezpieczyć / wyłapać kiedy wybierze te same? Jest tylko możliwość sprawdzania pól "każdy z każdym" czy coś bardziej prostszego??
wesoly_pogrzeb napisał(a):
Cześć. Mam formularz z polem select i pięcioma polami option. W kazde z tych pól wstawiam pętlą linie z teg samego pliku. Użytkownik ma mieć mozliwość wyboru ale jak się zabezpieczyć / wyłapać kiedy wybierze te same? Jest tylko możliwość sprawdzania pól "każdy z każdym" czy coś bardziej prostszego??
if
-y ?
Czyli ifować kazdy z kazdym ? To trochę toporne rozwiązanie bo chcę sprawdzić czy:
Pierwszy rózni sie od drugiego, trzeciego i czwartego
Drugi rożni się od pierwszego, trzeciego i czwartego
Trzeci różni się od drugiego, pierwszego i czwartego
Czwarty różni się od trzeciego, drugiego i pierwszego
Wiesz, że to układ równań, może mógłbyś je policzyć w końcu to algebra boola.
A każdy układ równań można skrócić do najprostszej postaci, który da ci skrócony zapis.
wesoly_pogrzeb napisał(a):
Cześć. Mam formularz** z polem select** i pięcioma polami option. W kazde z tych pól wstawiam pętlą linie z teg samego pliku. Użytkownik ma mieć mozliwość wyboru ale jak się zabezpieczyć / wyłapać kiedy wybierze te same? Jest tylko możliwość sprawdzania pól "każdy z każdym" czy coś bardziej prostszego??
Ale te same co co?
Chyba, że masz formularz z pięcioma polami SELECT i w nich listy OPTION i każdy ten SELECT zawiera tę samą listę.
Jeśli o to właśnie chodzi, to sugeruję zrobić jedno SELECT z opcją wielokrotnego wyboru "multiple".
https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select_multiple
Nie. Mam jedno select i 5 x option. W każdym z tych pól jest kilkaset takich samych danych. I teraz chcę wyłapaćczy user nie wybrał czasami tego samego minimum raz czyli np. w pierwszym polu i drugim to samo. Tylko że trzeba sprawdzić wszelkie możliwości.
Może ja tępa jestem, ale dla mnie jedno select z pięcioma option wygląda tak:
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
Więc nie kumam, jak w każdym optiom zmieścić kilkaset różnych wartości.
Może pokaż przykładowy kawałek kodu, to cię zakumam :)
Nie, sory. Mam pięc pól select a w kżdymn jedno pole option. Poyebało mi się :)
Do serwera leci zestaw: Option_X = Y , gdzie X=1..5 , Y - dowolna wartość z jakiejś listy dopuszczalnych wartości.
Tworzysz mapę, które indeksowana jest wartościami wybranymi w formularzu, a przechowuje listę indeksów od option.
np. w formularzu leci:
Option1 = Y
Option2 = Z
Option3 = Y
Option4 = A
Option5 = Z
Utworzysz sobie mapę:
wybrane [ Y ] = {1,3}
wybrane [ Z ] = {2,5}
wybrane [ A ] = {4}
Przeglądasz tak skonstruowaną mapę i patrzysz na długość tablicy pod jakimś indeksem i jesli będzie > 1, to masz wykryty duplikat...
:)
Zatem ponownie sugeruję jedno select z opcją wielokrotnego wyboru "multiple".
Plus jakiś JS ograniczający możliwość wyboru do pięciu pozycji w stylu:
https://stackoverflow.com/questions/30474614/multiple-select-limit-number-of-selection
Alternatywą jest pięć selectów i JS dezaktywujący wybrane option w sąsiednich selectach.
Krwawy Lew napisał(a):
Tworzysz mapę, które indeksowana jest wartościami wybranymi w formularzu, a przechowuje listę indeksów od option.
A to nie prościej wrzucać dane z select_1 .. select_5 do tablicy
i przy każdym wrzucaniu sprawdzać przez in_array, czy danej wartości w tej tablicy już nie ma?
Freja Draco napisał(a):
Krwawy Lew napisał(a):
Tworzysz mapę, które indeksowana jest wartościami wybranymi w formularzu, a przechowuje listę indeksów od option.
A to nie prościej wrzucać dane z select_1 .. select_5 do tablicy
i przy każdym wrzucaniu sprawdzać przez in_array, czy danej wartości w tej tablicy już nie ma?
Zależy jak chcesz obsłużyć tę sytuację. Wyświetlić użytkownikowi "jest problem w wyborze X" (a później, "a teraz jest błąd w wyborze Y", a później "a teraz w wyborze Z"), czy raczej jednym strzałem pokazać wszystkie problemy -> "wykryto następujące błędy: ..." Można oczywiście implementować na różne sposoby.
Jednak in_array() nie jest dobrym rozwiazaniem bo ta funkcja porownuje -> igla , stóg siana a tutaj mamy same "igly"