2012-06-01 162 views
0

標題可能不是說出這個問題的最佳方式,所以請讓我知道我是否可以改進它。如何使用下拉菜單更改PHP對象變量?

我想要做的是使用下拉菜單來更改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; 

僅供參考,這是被用於動態地生成針對縮略圖菜單的輸出數據。顯示的「程序」將由所選選項中的值確定。

+0

您想更改的PHP對象變量在哪裏? – hakre

+0

所選PHP對象位於視圖頁面的控制器中。它在控制器中用於確定內容輸出。 – NewWorldOrderly

+0

好的,你的問題是你一次問兩個問題。而是問兩個分開的問題。哪兩個問題更重要:a)如何將html表單值傳遞給服務器並將其放入PHP變量中或b)如何在PHP中執行重定向? – hakre

回答

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

對象$ selected是在正在查看的頁面的控制器中,而不是實際的php文件。 – NewWorldOrderly

+0

控制器是什麼意思?您需要存儲program_select。如果它與表單不在同一個http請求中,那麼你必須將它存儲在$ _SESSION中。 – Elliott

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調用才能做到這一點,並且我推薦使用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;