2010-12-12 11 views
5

Na mojej liście rozwijanej mam dwie różne wartości dla każdej opcji. Jak mogę je odzyskać? Pozwól mi zilustrować, co mam na myśli.PHP get droplistlist wybierz wartość opcji

<select name="my_ddl"> 
    <option value="<?php $value_Id ?>"><?php $value_text ?></option> 
    <option value="<?php $value_Id ?>"><?php $value_text ?></option> 
</select> 

Gdy formularz jest księgowana, chcę być w stanie uzyskać zarówno $ value_id i $ value_text od wybranej opcji. Jak mogę to zrobić?

$ _POST ['mój_ddl'] otrzymuje tylko jedną wartość, nie obie.

W asp.net mogę zrobić to po prostu przez odniesienie do my_ddl.Value i my_ddl.Text.

Dziękujemy!

Odpowiedz

5

Ściśle nie jest to możliwe.

Co może zrobić jest stosowanie separatora w atrybucie value:

<select name="my_ddl"> 
    <option value="<?php echo $value_Id ?>|<?php echo $value_text ?>"><?php echo $value_text ?> 
    </option> 
</select> 

I ...

<?php  
    list($id, $text) = explode('|', $_POST['my_ddl']); 
    //... 
?> 
+0

Dziękujemy! To działało doskonale. Tak prosty, że nie mogę w to uwierzyć. –

0

Jeśli używasz PHP, aby wypełnić tekst dla <option> wtedy prawdopodobnie możesz po prostu sprawdzić wartość na serwerze. Być może wystarczy użyć wartości $ value_id, aby wyszukać tekst w tabeli bazy danych?

Jeśli nie, możesz dołączyć ukryte pole do formularza i użyć JavaScript do aktualizacji tego ukrytego pola z tekstem za każdym razem, gdy wybierzesz nową wartość.

0

Nie można uzyskać wartości tekstowej z danych POST. Jednym z rozwiązań jest wypełnienie ukrytego pola po wybraniu opcji za pomocą JavaScript.

3

Kolejny dziwny sposób to zrobić to:

<select name="my_ddl"> 
    <option value="<?php echo $value_Id ?>[<?php echo $value_text ?>]"> 
    <?php echo $value_text ?> 
    </option> 
</select> 

Wtedy, kiedy przetwarza je można to może nawet coś więcej proste zrobić:

foreach ($_POST['my_dd1'] as $value_Id => $value_text) { 
    $value_Id = $value_Id; 
    $value_text = $value_text; 
} 

Ponieważ PHP traktuje [] w ten sposób, ciąg jest tablicą, więc od razu masz tablicę asocjacyjną. Zgadzam się jednak, że jeśli umieścisz to tam na pierwszym miejscu powinieneś móc po prostu sprawdzić to w kodzie, zamiast polegać na tym.