2017-05-27 3 views
1

Ich hole ein Array von Daten aus einer Datenbank ein select Element erstellen, aber ich kann nicht die Seite zu einem Link basierend auf dem ausgewählten Echo Option, die ich habe.echo einen Link basierend auf ausgewählten Objekt in einem Formular vor dem Senden des Formulars

-Code zur Ausgabe der select Box:

$options1 = json_decode($row['options'], true); 
echo "<select name='" . $row['name'] . "'>"; 

foreach($options1 as $key => $location)//foreach loop 
{ 
    echo "<option value='" . $location['org'] . "' selected='selected'>" . $location['org'] . "</option><br />"; 
} 

echo "</select>"; 

ich es will $location['address']; Echo aus, sobald eine Option ausgewählt wird (nicht eingereicht).

Das Format des Arrays vor der Verwendung von json_decode ist;

[ {"org":"Org Name","address":"Address of org"}, {"org":"Org Name","address":"Address of org"}, {"org":"Org Name","address":"Address of org"}, {"org":"Org Name","address":"Address of org"}, {"org":"Org Name","address":"Address of org"}, {"org":"Org Name","address":"Address of org"}] 
+0

Zeigen Sie uns Ihre Javascript/jquery Code so weit. – Gerry

+0

@Gerry entfernte alles aus Ärger lol. Ich versuche immer noch eine Menge verschiedener Methoden und es scheint nicht zu funktionieren. – user2562492

Antwort

0

Wie von @ Dave-S angegeben, müssen Sie ein Array erstellen. Wie ich weiß nicht, wie es aussieht, ist es nicht in dem Beispiel enthalten, Sie haben gerade Linien im Skript darüber kommentiert ...

EDIT: nach Array gegeben wurde, ist hier eine schnelle Lösung jQuery .change() ->Binden Sie einen Ereignishandler an das JavaScript-Ereignis "change", oder lösen Sie dieses Ereignis für ein Element aus.

undjQuery.parseJSON() ->nimmt eine wohlgeformte JSON-Zeichenfolge und gibt den resultierenden JavaScript-Wert zurück.

jQuery (verwendet v. 3.2.1)

$(document).ready(function() { 

var addresses = '[ {"org":"Org Name 1","address":"Address of org 1"}, {"org":"Org Name 2","address":"Address of org 2"}, {"org":"Org Name 3","address":"Address of org 3"} ]'; 

$("#changeit").change(function(){ // we use the function 'on change' 

    $('select#changeit option:selected').each(function() { // the select 
    selectedval = $(this).val(); // we catch the value of the selected option 

    var obj = jQuery.parseJSON(addresses); // we parse the array (see link to DOC) 
    var address = obj[selectedval-1].address; // we access the data 
    // note that 'selectedval' is minus 1 as array start with 0 

    $('#output').html(address); // we print it in the div 
    }); 

    }); 
}); 

HTML

<select class="form-select" id="changeit" name="changeit"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    </select> 

<p>Selected: <span id="output" name="output"></span></p> 
+0

[ {"org": "Org Name", "Adresse": "Adresse der Org"}, {"org": "Org Name", "Adresse": "Adresse der Org"}, {"org ":" Org Name "," Adresse ":" Adresse der Organisation "}, {" org ":" Org Name "," Adresse ":" Adresse der Organisation "}, {" org ":" Org Name " , "Adresse": "Adresse der Organisation"}, {"org": "Organisationsname", "Adresse": "Adresse der Organisation"} ] ist das Format, bevor ich json_decode verwende. – user2562492

+0

Es scheint nichts auszugeben, nachdem ich es an das angepasst habe, was ich habe. Ich habe auch das oben auf JSFiddle - https://jsfiddle.net/kv85fbyr/1/ – user2562492

+0

enthaltene jQuery getestet und es funktioniert mit meinem Code, siehe [FIDDLE] (https: // jsfiddle.net/kv85fbyr/8 /) – OldPadawan

0

Erstellen Sie eine Reihe von (org> Adresse) als globale Javascript Variable in der HTML-Seite, wenn zuerst die Nachschlag-Datenbank verarbeitet.

Lassen Sie eine Javascript-Funktion aufgerufen werden, indem Sie den inneren Schein des div/span umschreiben, wo die Adresse angezeigt wird.

Kein Code hier, da dies eine Hausaufgabe ist.

+0

Ich respektiere das lol. Hatte bereits die Logik dafür und haben das Array in JS-Form, nur kann es nicht basierend auf der Auswahl erscheinen. Ich habe es aber so, dass es den ausgewählten Text ausgibt. – user2562492

Verwandte Themen