使用html锚点切换sql查询

时间:2013-04-27 16:11:02

标签: php jquery tabs

我想切换查询,以便我可以更改特定div上的内容。就像我选择查询A我得到一组特定的内容,QueryB其他组内容。所以我使用boolean $ _SESSION来操纵我在php文件上的条件。请注意,$ _SESSION是一个“超全局”或自动全局变量,这意味着它在整个脚本的所有范围内都可用。

我注意到click函数不会切换会话var。看来这个变量是在没有单击锚点的情况下读取的。

这是我的代码:

html文件:     

        <p><a class="queryA" href="">Query A</a> | <a class="queryB" href="">Query B</a></p>

    </div>

Jquery函数:

$('#SwitchTab .queryA').click(function(){
    $('#chatbox').html(""); // turn chatbox empty
    <?php $_SESSION['qQuery'] = TRUE;?>
    return false;
});

$('#SwitchTab .queryB').click(function(){

    <?php $_SESSION['qQuery'] = FALSE;?>
    return false;
});

php:

if(isset($_SESSION['name'])){  // 

    $name = $_SESSION['name'];
    $Userid= $_SESSION['idUser'];


}
if(!isset($_SESSION['qQuery'])){

$_SESSION['qQuery'] = FALSE;
}
$follow= $_SESSION['qQuery'];

    include 'openconn.inc';

    if($follow){ // Query A
        $sql = "SELECT U.PhotoName, M.Mid, M.Author, M.MidUser, M.Message, M.MsgTime, M.TotLabelValue FROM messages AS M, users AS U, follow AS F WHERE U.Uid=M.MidUser AND F.idFrom=".$Userid." AND M.MidUser=F.idTo";
    }
    else{   //Query B
        $sql = "SELECT U.PhotoName, M.Mid, M.Author, M.MidUser, M.Message, M.MsgTime, M.TotLabelValue FROM messages AS M, users AS U WHERE U.Uid=M.MidUser";

        }
...

问题:有没有办法用jquery切换超全局变量?

提前致谢

1 个答案:

答案 0 :(得分:1)

当您只是点击时,您没有重新加载页面。你是在客户端这样做的。这就是会议没有改变的原因。要更改会话,您必须将此信息发送到服务器。

您的代码中的其他问题是,您在javascript指令中运行的$ _SESSION ['qQuery']代码始终将运行提交给服务器。他们都。因此,当您加载页面时,在传递jquery指令后,此变量将为false。

要在浏览器中单击时更改此变量的值,您可以使用@AbsoluteZERO建议的ajax。但是,您需要将代码更改为:

$('#SwitchTab .queryA').click(function(){
    $('#chatbox').html(""); // turn chatbox empty
    ajaxInstructionToChangeSession();
    return false;
});

$('#SwitchTab .queryB').click(function(){

    ajaxInstructionToChangeSession();
    return false;
});

服务器必须执行以下操作:

<?php
  if($parameterfromajax == 'queryA'){
    $_SESSION['qQuery'] = TRUE;
  }else{
    $_SESSION['qQuery'] = false;
  }

?>