2012-04-03 71 views
1

我不知道我是否正確闡述了這個問題,但讓我試着更好地解釋自己。
我有以下我的網頁上的菜單,一旦新的選擇choosen輸出新的結果: select menuscodeigniter控制器無法識別傳遞的變量

Izaberite pol:Izaberite studente:有三個選項,分別爲每一個和oba, zenski, muskioba, stari, novi

我已經添加了一些JavaScript來識別選項變化並自動調用控制器動作:

$("select.filter").change(function() { 
    var str = ""; 
    $("select option:selected").each(function() { 
     str += $(this).attr('value') + "/"; 
    }); 
    window.open("http://vipassana-srbija.comli.com/index.php/login/trust/"+str,"_self"); 
}); 

正如你從Javacript代碼中看到它會調用控制器的登錄信任功能:

public function trust($tabela="letnji",$pol="oba", $student="oba"){ 

    $data['rezultat']= $this->prijava_model->zgrabi_tabelu($tabela,$pol,$student); 
    $data['tabela']=$tabela; 
    $data['pol']=$pol; 
    $data['student']=$student; 

    $prijavljen = $this->session->userdata('prijavljen'); 
    if($prijavljen) 
    { 
     $this->load->view('prijava/trust.php', $data); 
    } 
    else 
    { 
     redirect('login'); 
    } 
} 

進一步您會注意到它使用Prijava_model型號的zgrabi_tabelu功能:

function zgrabi_tabelu($tabela,$pol,$student){ 
    $upit_rezultat=array(); 

    if($pol=="oba" && $student="oba") 
     $upit = $this->db->get($tabela); 
    else if($pol!="oba" && $student!="oba") 
     $upit=$this->db->get_where($tabela,array('pol'=>$pol,'stari_novi_student'=>$student)); 
    else if($pol!="oba" && $student=="oba") 
     $upit=$this->db->get_where($tabela, array('pol'=>$pol)); 
    else if($pol=="oba" && $student!="oba") 
     ;//$upit=$this->db->get_where($tabela, array('stari_novi_student'=>$student)); 

    foreach($upit->result() as $red){ 
     array_push($upit_rezultat, $red); 
    } 

    return $upit_rezultat; 
} 

而且我覺得在這裏的模型zgrabi_tabelu功能在於問題,因爲每一個可能的組合工作得很好,除了最後一個,當我試圖通過改變只剩下最後選擇菜單Izaberite studente:讓所有其他選項原封不動地獲取數據:

doesn't work1 & & doesn't work2 都不行

但是當我在前場Izaberite pol:改變任何東西Oba在它旁邊將正常工作:

works

最後一點讓我爲你提供HTML菜單項:

<div> 
    <label>Izaberite kurs:</label> 
    <select class="kurs" id="kurs_datum"> 
     <option value="letnji" selected='selected'>Letnji kurs(27.6 - 7.7.2012)</option> 
     <option value="jesenji" >Jesenji kurs(10.10 - 21.10.2012)</option> 
    </select> 
</div> 
<div> 
    <label>Izaberite pol:</label> 
    <select class="filter" id="pol"> 
     <option value="oba" selected='selected'>Oba</option> 
     <option value="zenski" >Ženski</option> 
     <option value="muski" >Muški</option> 
    </select> 
</div> 
<div> 
    <label>Izaberite studente:</label> 
    <select class="filter" id="student"> 
     <option value="oba" selected='selected'>Oba</option> 
     <option value="novi" >Novi</option> 
     <option value="stari" >Stari</option> 
    </select> 
</div> 

希望這是有道理的。如果有必要,我會很樂意澄清這一點。
任何幫助表示讚賞。

+1

當你說不行時,你是什麼意思?網絡選項卡/螢火蟲中的迴應是什麼?是ajax無法正常工作,或者它是您的服務器端代碼的問題? – Rooster 2012-04-03 20:32:22

+0

我的意思是,當我選擇上述圖像中的任何一種組合時,即使頁面控制器的函數被執行並且頁面加載,輸出也不會更新,所以我認爲模型的'zgrabi_tabelu'函數中的邏輯有問題,但是我不能看到什麼..謝謝 – 2012-04-03 21:33:44

回答

1
function zgrabi_tabelu($tabela,$pol,$student){ 
$upit_rezultat=array(); 

if($pol=="oba" && $student="oba") 
    $upit = $this->db->get($tabela); 
else if($pol!="oba" && $student!="oba") 
    $upit=$this->db->get_where($tabela,array('pol'=>$pol,'stari_novi_student'=>$student)); 
else if($pol!="oba" && $student=="oba") 
    $upit=$this->db->get_where($tabela, array('pol'=>$pol)); 
else if($pol=="oba" && $student!="oba") 
    ;//$upit=$this->db->get_where($tabela, array('stari_novi_student'=>$student)); 

foreach($upit->result() as $red){ 
    array_push($upit_rezultat, $red); 
} 

return $upit_rezultat; 
} 

您在第一行遺漏了a = ...

if($pol=="oba" && $student="oba") 

應該

if($pol=="oba" && $student=="oba") 

相信IF函數將返回假的,因爲它的虛假的運營商。

+0

是的!這就是我需要的,鷹的眼睛!感謝您查看我的朋友。 – 2012-04-03 21:38:22

+0

沒問題,萌芽! 保持冷靜。 – 2012-04-03 21:44:10

2

在你的jQuery調用來打開一個新的窗口,我想你想刪除逗號,並把一個斜線有

所以改變這樣的:

window.open("http://vipassana-srbija.comli.com/index.php/login/trust/"+str,"_self"); 

到:

window.open("http://vipassana-srbija.comli.com/index.php/login/trust/"+str+"/_self"); 
+0

我不明白,如果它可以用於除上面列出的兩個之外的任何其他組合的問題怎麼樣?我在這裏錯過了什麼?謝謝 – 2012-04-03 21:29:54

+0

嗯,他是對的,它是正確的改變這一點,但它不會破壞任何東西,如果它沒有糾正。 – 2012-04-03 21:45:26

0

附加說明,您打電話給您的視圖'$ this-> load-> view('prijava/trust.php',$ data);' - 應該trust.php不只是信任 - CI在視圖中'需要'時將.php添加到最後。

+0

這兩種方式都沒有關係。有或沒有.php它將使用相同的文件。至少使用代碼點火器2.x. – 2012-04-03 21:36:03

+0

只是一個觀察,我不會把.php – user1297515 2012-04-05 08:40:23

相關問題