0

タイトルはこの質問を表現するのに最適な方法ではないかもしれませんので、改善できるかどうか教えてください。

私がやろうとしているのは、ドロップダウン メニューを使用して PHP オブジェクトの値を変更することです。

以下の例では、選択したメニュー オプションの「値」として $selected を割り当てます。

  $selected = $_GET['program_select'];

ドロップダウンメニューは次のとおりです。

  <select id="programs_select" name="programs_select">
    <option>Select a Different Month</option>  
    <?
     foreach($pagedata->programs as $programs){
    ?>
    <option value="<?=$programs->id?>"><?=$programs->title?></option> 
    <?    
    }
    ?>
  </select>

この値をサーバーに送信し、選択した値を使用してページをリロードするにはどうすればよいですか?

たとえば、2 番目のオプションが選択され、その ID が 2 の場合、結果は次のようになります。

$selected = 2;

参考までに、これはサムネイル メニューの出力データを動的に生成するために使用されています。表示される「プログラム」は、選択したオプションの値によって決まります。

4

3 に答える 3

0

PHP側でGETを使用しています。したがって、phpファイルに値を渡す方法を知りたいだけの場合は、選択タグをフォームに入力して、送信ボタンを追加してください。

<form id="your_id" name="your_id" method="get" action="your_controller/your_function_name">
 <select id="programs_select" name="programs_select">
    <option>Select a Different Month</option>  
    <?
     foreach($pagedata->programs as $programs){
    ?>
    <option value="<?=$programs->id?>"><?=$programs->title?></option> 
    <?    
    }
    ?>
  </select>
  <input type="submit" id="submit" name="submit" value="GO">
</form>

コントローラで、値に基づいて何かをエコーし​​ます。

$ selected = $ _GET ['program_select'];

ただし、同じページの内容を更新せずに変更したい場合。これを行うにはajax呼び出しが必要になる場合があります。jQueryajaxapi(http://api.jquery.com/jQuery.ajax/)をお勧めします。

$("select#programs_select").live('change', function(){
        var id = $("select#programs_select").val();        
                $.ajax({
                type: "GET",
                url: "your_controller/the_funstion_name?programs_select=" + id,
                data: "",
                contentType: "application/json; charset=utf-8",
                            success: function(msg) {
                $("#your_thumbnail_menu_id").html(msg); 
                },
                error: function() {
                alert("Error! Ajax failed");
                }
            }); 

        });

コントローラ側で、最後に必要なhtmlをエコーし​​ます。例えば:

$selected = $_GET['program_select']; 
$html = "<ul><li>your menu  $selected</li>";
$html .="<li>which depends on the id you got!</li></ul>";
echo $html;
于 2012-06-01T22:34:19.693 に答える
0
<select id="programs_select" name="programs_select">
    <option>Select a Different Month</option>  
    <?
    $selected = $_GET['program_select'];
    foreach($pagedata->programs as $programs){
        $seld = ($selected == $program-id) ? 'selected' : '';
        echo '<option value="'.$programs->id.'" '.$seld.'>'.$programs->title.'</option>';     
    }
    ?>
</select>
于 2012-06-01T21:45:25.637 に答える
0
  <select id="programs_select" name="programs_select" onchange="ihavechanges(this.options[this.selectedIndex].value)">
    <option>Select a Different Month</option>  
    <?
     foreach($pagedata->programs as $programs){
    ?>
    <option value="<?=$programs->id?>"><?=$programs->title?></option> 
    <?    
    }
    ?>
  </select>
  <script type="text/javascript">
  function ihavechanged(towhat)
     {
     document.location.href = "reload.php?id="+towhat;
     }
   </script>
于 2012-06-01T21:43:27.263 に答える