Comment faire pour obtenir l'option sélectionnée de la valeur d'une liste déroulante dans le code PHP

J'ai une liste déroulante qui énumère un ensemble de logos, comme la fleur, papillon 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>

Suppose que j'sélectionnez le logo de la Fleur, à partir de la liste déroulante, je veux la fleur de l'image à afficher dans un div. C'est le div que j'ai pour afficher les photos:

<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>

Le problème avec ce code, c'est qu'il affiche toutes les images trouvées dans la table. Parce que dans mon contrôleur de code que je donne seulement l'id de propriété comme celle de "Logo", mais ne donne pas le logo.

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

Ici, j'ai codé en dur "fleur" de sorte que je ne reçois que la fleur de l'image.

Si je sélectionne le logo de la zone de liste déroulante, comment puis-je passer cette valeur sélectionnée pour le contrôleur de code? Ou si j'ai le logo retenu le nom à l'aide de jQuery, comment puis-je utiliser cette valeur dans la condition if dans la boucle foreach?

Je suis en utilisant le CakePHP cadre.

$("#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:

Maintenant, j'ai essayé un AJAX POST où je passe le logo retenu pour la même action du contrôleur. J'obtiens la valeur quand j'alerte la valeur passée dans le succès de la fonction de l'ajax fonction, mais l'image ne s'affiche pas.

$("#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))));
}

Lorsque j'essaie d'afficher l'image dans la page, elle n'apparaît pas. Est-ce parce que le div de la commande est après la requête AJAX?

  • Ne devriez-vous pas utiliser AJAX pour cela?
  • Il n'est pas clair si vous voulez le faire à l'aide d'Ajax ou tout simplement le formulaire de soumission
  • Je veux rester dans la même page,donc je ne veux pas le formulaire de soumission. Si je sélectionne un logo,son image doit être affichée. TheVillageIdiot la réponse semble raisonnable,mais il ne fonctionne pas.
  • Va envoyer une requête ajax post sur la même page de travail?
  • Si les images sont très petites et ne ralentit pas le chargement initial, alors vous n'avez pas besoin d'ajax.
InformationsquelleAutor Angeline | 2009-09-18