Wie man den ausgewählten Wert der option in einem Dropdown-Feld in PHP-code

Ich habe ein dropdown-Feld listet eine Reihe von logos, wie Blume, Schmetterling etc.

<p class="title1">Logo</p>
<select name="logoMenu" class="select" size="7">
    <?php foreach($logos as $logo):?>
        <option id="<?php echo $logo['Subproperty']['id'];?>" value="<?php echo $logo['Subproperty']['values'];?>">
            <?php echo $logo['Subproperty']['values'];?>
        </option>
    <?php endforeach;?>
</select>

Angenommen, ich wähle den logo 'Blume' aus der drop-down-box, ich will die Blume Bild angezeigt werden soll in ein div. Dies ist der div, dass ich um die Bilder zu zeigen:

<div id="theme_logos" class="float_left spaceleft" style="display:none;">
    <?php foreach($defaultLogos as $logo):
        //if($logo['Subproperty']['values']==clicked option value){?>
        <img height="50" width="50" src="/FormBuilder/app/webroot/img/themes/<?php echo $logo['Subproperty']['images'];?>" class="float_left user_profile_image user_profile_image" alt="Default50"/> 
    <?php endforeach;?>
</div>

Das problem bei diesem code ist, dass es zeigt alle Bilder in der Tabelle. Weil in meinem controller-code gebe ich nur die property-id als 'Logo', aber geben Sie nicht das logo.

$this->set('defaultLogos',$this->Subproperty->find('all',array('conditions'=>array('Subproperty.property_id'=>1,'Subproperty.values'=>"Flower"))));

Hier habe ich hart codiert 'Blume', so dass ich nur die Blume Bild.

Wenn ich wählen Sie das logo aus der drop-down-box, wie kann ich pass den ausgewählten Wert an den controller-code? Oder wenn ich die ausgewählte logo-Namen mit jQuery, wie kann ich den Wert in der if-Bedingung innerhalb der foreach-Schleife?

Ich bin mit der CakePHP Rahmen.

$("#logoMenu option").click(function(){
    selectedLogo=$(this).attr("value");
    $('#subproperty_id').val($(this).attr("id"));   

    if(selectedLogo=="Your logo"){
        $("#themes_upload").show();
    }
    else{
        alert(selectedLogo);
        $("#themes_upload").hide();
        $("#theme_logos").show();
    }
});

EDIT:

Nun habe ich versucht einen AJAX-POST, wo ich pass das gewählte logo, um die gleiche Aktion des Controllers. Ich bekomme den Wert, wenn ich alert-der übergebene Wert in der success-Funktion der ajax-Funktion, aber das Bild erscheint nicht.

$("#logoMenu option").click(function(){
    selectedLogo=$(this).attr("value");
    $('#subproperty_id').val($(this).attr("id"));   

    if(selectedLogo=="Your logo"){
        $("#themes_upload").show();
    } else {
        alert(selectedLogo);
        $.ajax({
            type: "POST",
            url: "http://localhost/FormBuilder/index.php/themes/themes/",
            async: false,
            data: "selectedLogo="+selectedLogo,
            success: function(msg){
            alert( "Data Saved: " + msg);
    }
});

$("#themes_upload").hide();
$("#theme_logos").show();
}

function themes(){  
    $this->set('themes',$this->Theme->find('all'));
    $logo=$this->params['form']['selectedLogo']; 
    echo "logo:".$logo;  
    $this->set('defaultLogos',$this->Subproperty->find('all',array('conditions'=>array('Subproperty.property_id'=>1,'Subproperty.values'=>$logo))));
}

Wenn ich versuche das Bild in die Seite, es erscheint nicht. Ist es, weil der div-zeigen-Befehl wird nach dem AJAX-request?

  • Sollten Sie nicht AJAX verwenden für das?
  • Es ist nicht klar, ob Sie dies tun wollen, mit Ajax oder einfach Formular Absenden
  • Ich möchte bleiben auf der gleichen Seite,so dass ich nicht wollen-Formular Einreichen. Wenn ich wählen Sie ein bestimmtes logo,Ihr Bild angezeigt werden soll. TheVillageIdiot die Antwort klingt vernünftig,aber es funktioniert nicht.
  • Wird das senden einer ajax-post an die gleiche Seite arbeiten?
  • Wenn die Bilder wirklich klein sind und nicht langsam erste laden, dann brauchen Sie nicht ajax.
InformationsquelleAutor Angeline | 2009-09-18
Schreibe einen Kommentar