2012-04-03 86 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

相关问题