Mam wybrany tag z kilkoma opcjami w formie HTML:
(dane będą zbierane i przetwarzane za pomocą PHP)
Testowanie:
<select name="Testing">
<option value="1"> One
<option value="2"> Two
<option value="3"> Three
</select>
Czy jest możliwa opcja przenoszenia wielu wartości, np. Gdy użytkownik wybierze „One”, wówczas do Bazy Danych zostanie zapisanych kilka innych wartości związanych z tą opcją.
Jak zaprojektować select
tag, aby każda z opcji mogła mieć jedną wartość, taką jak ta:
<select name="Testing">
<option value="1" value="2010"> One
<option value="2" value="2122"> Two
<option value="3" value="0"> Three
</select>
Odpowiedzi:
Jeden sposób, aby to zrobić, najpierw tablica, a następnie obiekt:
Edytowano (3 lata po udzieleniu odpowiedzi), aby umieścić obie wartości w formacie JSON (używając
JSON.stringify()
) z powodu skargi, że moja odpowiedź dotycząca weryfikacji koncepcji „może zmylić początkującego programistę”.źródło
Właściwie zastanawiałem się nad tym dzisiaj i osiągnąłem to, używając funkcji eksplozji php, na przykład:
Formularz HTML (w pliku o nazwie „doublevalue.php”:
Akcja PHP (w pliku o nazwie doublevalue_action.php)
Jak widać w pierwszym fragmencie kodu, tworzymy standardowe pole wyboru HTML z 2 opcjami. Każda opcja ma 1 wartość, która ma separator (w tym przypadku „|”), który rozdziela wartości (w tym przypadku model i kolor).
Na stronie akcji eksploduję wyniki do tablicy, a następnie wywołuję każdy z nich. Jak widać, oddzieliłem je i oznaczyłem, abyś mógł zobaczyć, jaki to powoduje.
Mam nadzieję, że to komuś pomoże :)
źródło
możliwe jest posiadanie wielu wartości w opcji wyboru, jak pokazano poniżej.
możesz uzyskać wybraną wartość na zdarzeniu zmiany za pomocą jquery, jak pokazano poniżej.
Więcej szczegółów znajdziesz w tym LINKU
źródło
Jedną z opcji jest umieszczenie wielu wartości oddzielonych przecinkami
lubić
a po stronie serwera rozdziel je
źródło
Kiedy muszę to zrobić, tworzę inne wartości dane-wartości, a następnie używam js, aby przypisać je do ukrytych danych wejściowych
źródło
Jeśli Twoim celem jest zapisanie tych informacji w bazie danych, to dlaczego potrzebujesz mieć podstawową wartość i „powiązane” wartości w
value
atrybucie? Dlaczego nie po prostu wysłać wartości podstawowej do bazy danych i pozwolić, aby relacyjny charakter bazy danych zajął się resztą.Jeśli potrzebujesz wielu wartości w swoich
OPTION
, wypróbuj separator, który nie jest zbyt powszechny:...
lub dodaj literał obiektu (format JSON):
...
To naprawdę zależy od tego, co próbujesz zrobić.
źródło
podaj wartości dla każdej opcji, takiej jak
po stronie serwera w przypadku php, użyj funkcji takich jak eksploduj [tablica] = eksploduj ([ogranicznik], [podana wartość]);
powyższy kod zwraca tablicę zawierającą tylko liczby, a znak „:” zostaje usunięty
źródło
Zrobiłem to za pomocą atrybutów danych. Jest dużo czystszy niż inne metody eksplozji itp.
HTML
JS
źródło
A co z atrybutami danych HTML? To najłatwiejszy sposób. Odniesienie z w3school
W Twoim przypadku
źródło
Użyj separatora, aby oddzielić wartości.
źródło
W HTML
Dla JS
LUB DLA PHP
źródło
Zduplikowane parametry tagów nie są dozwolone w HTML. Co możesz zrobić, to
VALUE="1,2010"
. Ale musiałbyś przeanalizować wartość na serwerze.źródło
Zamiast przechowywać opcje po stronie klienta, innym sposobem jest przechowywanie opcji jako elementów tablicy asocjacyjnej / indeksowanej po stronie serwera. Wartości tagu select zawierałyby wtedy po prostu klucze używane do wyłuskiwania podtablicy.
Oto przykładowy kod. Jest napisane w PHP, ponieważ OP wspomniał o PHP, ale można je dostosować do dowolnego języka po stronie serwera, którego używasz:
PHP:
źródło
Może to być przydatne lub nie dla innych, ale w moim konkretnym przypadku po prostu chciałem, aby dodatkowe parametry były przekazywane z formularza po wybraniu opcji - te parametry miały takie same wartości dla wszystkich opcji, więc ... moje rozwiązanie polegało na dołączeniu do formularza ukrytych danych wejściowych z zaznaczeniem, np .:
Może oczywiste ... bardziej oczywiste, kiedy to zobaczysz.
źródło
możesz użyć wielu atrybutów
źródło