如何使用下拉菜单更改 PHP 对象变量


How to use drop down menu to change PHP object variable?

标题可能不是这个问题的最佳方式,所以如果我能改进它,请告诉我。

我正在尝试做的是使用下拉菜单来更改 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>

如何将此值发送到服务器并使用所选值重新加载页面?

例如,如果选择了第二个选项,并且其 id 为 2,则结果将是:

$selected = 2;

仅供参考,这用于动态生成缩略图菜单的输出数据。 显示的"程序"将由所选选项中的值决定。

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

你在 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调用来做到这一点,我推荐jQuery ajax api(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;