php var在函数调用后没有得到值

时间:2014-02-20 11:09:44

标签: php sql

我目前正在开发一个管理网络数据库的Web应用程序。 我刚在桌面上为用户添加了一个排序函数。

总结一个用户填写一些带有不同信息的复选框,然后执行sql查询并显示在网页上。

这是完美的工作,你可以连续多次搜索没有任何问题。 但是如果你使用我创建的排序函数,表格显示排序(点击列的标题),你可以多次排序相同的初始查询没有任何问题但是如果你想再次填充复选框新查询将为false。 事实上,之前完美分配的一些$ var不会采用新值,它只是保持空白。 编辑:只是尝试多次运行新的搜索后排序有时它有效它有时它不是O:

但如果您退出并再次登录,则可以进行搜索。

这是我的代码,欢迎任何建议。

elseif(isset($_POST['SubmitQuery'])){ //this is to make the request in terms of what you as been writed in the form // 
    if (isset($_SESSION['admin_current_query']) && isset($_POST['TRIE'])) { // note : trie means sort in english. if this test is true then it execute the following code and jump to the display.php file.
        $sql = $_SESSION['admin_current_query'];
        $fields = $_SESSION['fields'];
        $fields_ut = $_SESSION['fields_ut'];
    } else {
        unset($_SESSION['admin_current_query']);
        echo "debug: unset admin query\n";
        if (in_array('box_cc_vlan', $_POST))
        {
            unset($_POST[array_search("box_cc_vlan", $_POST)]);
            $vlan_list = array();
        }

        extract($_POST); //             
        $fields = CheckboxString('box_cc_'); // here are my var from the form this is this field that will become empty once you used the sort function.
        $fields_ut = CheckboxString('box_ut_');
        $fieldsString = ','.$fields; // coma added for SQL query
        if(usertrackingUse)
            $fields_utString = $fields_ut; // note this field stay empty too if sort function has been used

这是我的排序功能。

if(!isset($_POST['TRIE'])){
    unset($_SESSION['CustomTrie']);
    $_SESSION['sens'] = 0;
}

if(isset($_POST['TRIE'])){// sort function 
    $_SESSION['sens'] = !$_SESSION['sens'];// 1 or 0 equal toi ASC or DESC
    $sql = $_SESSION['admin_current_query'];// current sql query to modify
    $request = sprintf('%s',$_POST['cc1']);// getting the value of a hidden in a form
    if ($_SESSION['sens'] == 1){ //  direction 
        $request .= " ASC,";
        $_SESSION['CustomTrie'] = sprintf('%s',$request) . sprintf('%s', $_SESSION['CustomTrie']);

        $request2  = sprintf('%s', $_SESSION['CustomTrie']);
        $sql .= " ORDER BY $request2  cc_equip_res ASC , cc_port ASC, cc_date ASC";
    } else {
        $request .= " DESC,";
        $_SESSION['CustomTrie'] = sprintf('%s',$request) . sprintf('%s', $_SESSION['CustomTrie']);

        $request2  = sprintf('%s', $_SESSION['CustomTrie']);
        $sql .= " ORDER BY $request2  cc_equip_res ASC , cc_port ASC, cc_date ASC";
    }
    unset($_POST['TRIE']);// unset TRIE to not infinite loop
}

如果有人知道可能导致此类行为的原因......?

感谢您的考虑。

1 个答案:

答案 0 :(得分:0)

(不要忘记你的下一篇文章)

我们可以查看表单页面吗? 对于isset,您可以放置​​多个参数。

例如:

if(isset($_POST['a']) && isset($_POST['b']))
[...]

与:

相同
if(isset($_POST['a'], $_POST['b']))
[...]