2010-12-12 6 views
5

In meiner Dropdownliste habe ich zwei verschiedene Werte für jede Option. Wie kann ich beide abrufen? Lass mich illustrieren, was ich meine.PHP get dropdownlist Option auswählen Wert

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

Wenn das Formular geschrieben wird, möchte ich sowohl die $ value_id erhalten zu können und $ value_text der gewählten Option. Wie kann ich das machen?

$ _POST ['my_ddl'] erhält nur einen Wert nicht beide.

In asp.net könnte ich dies einfach durch Bezugnahme auf my_ddl.Value und my_ddl.Text tun.

Vielen Dank!

Antwort

5

Genau dies ist nicht möglich.

Was Sie tun können, ist ein Trennzeichen in Ihrem value Attribut verwenden:

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

Und ...

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

Vielen Dank! Das hat hervorragend funktioniert. So einfach kann ich es nicht glauben. –

0

Wenn Sie PHP verwenden den Text für die <option> zu füllen Dann kannst du wahrscheinlich den Wert auf dem Server nachschauen. Vielleicht müssen Sie nur die $ value_id verwenden, um den Text in einer Datenbanktabelle nachzuschlagen.

Wenn nicht, könnten Sie ein verstecktes Feld in Ihr Formular einfügen und JavaScript verwenden, um dieses versteckte Feld mit dem Text jedes Mal zu aktualisieren, wenn ein neuer Wert ausgewählt wird.

0

Sie können value_text nicht aus POST-Daten abrufen. Eine Lösung besteht darin, das versteckte Feld zu füllen, nachdem Sie die Option über JavaScript ausgewählt haben.

3

Eine weitere seltsame Art und Weise, es zu tun ist:

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

Dann, wenn Sie es bearbeiten, dies zu tun oder vielleicht sogar etwas einfacher:

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

Da PHP die [] dahin behandelt Die Zeichenfolge ist ein Array und Sie haben sofort ein assoziatives Array. Ich stimme jedoch zu, dass Sie, wenn Sie es an erster Stelle setzen, in der Lage sein sollten, es einfach im Code nachzuschlagen, anstatt sich darauf zu verlassen.