0

我正在尝试使用 javaScript (jquery) / PHP 和 coockies 对表进行动态排序。

mi代码是这样的:

    <script type="text/javascript" src="jquery-1.8.2.js"></script>
    <script type="text/javascript">

        function setCookie(c_name,value,exdays) {
            var exdate=new Date();
            exdate.setDate(exdate.getDate() + exdays);
            var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
            document.cookie=c_name + "=" + c_value;
        }

        function getCookie(c_name) {
            var i,x,y,ARRcookies=document.cookie.split(";");
            for (i=0;i<ARRcookies.length;i++) {
                x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
                y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
                x=x.replace(/^\s+|\s+$/g,"");
                if (x==c_name) {
                    return unescape(y);
                }
            }
        }

        $(document).ready(function(){

            $("a").toggle(function(){
                setCookie("orden","ASC",100);
            }, function() {
                setCookie("orden","DESC",100);
            });

            $("a").click(function(){
                setCookie("campo",$(this).html(),100);

                $.ajax({
                    type: "POST",
                    url: "ordenaTabla.php",
                    //data: ,
                    success:function(data) {
                        //alert(data);
                    }
                });

            });

        });
    </script>
</head>
<body>
    <div id="tabla">
        <table border="1" align="center" width="300">
            <tr>
                <td align="center"><a href="#">ID</a></td>
                <td align="center"><a href="#">nombre</a></td>
                <td align="center"><a href="#">edad</a></td>
            </tr>
            <?php
                include_once ("mySqlConexion.inc.php");

                $tabla    = "tablaPruebas";

                if(isset($_COOKIE["consulta"])){
                    $consulta = $_COOKIE["consulta"];
                    $consulta = str_replace("+", " ", $consulta);
                }
                else{
                    $consulta = "SELECT * from ".$tabla;
                }

                echo $consulta;
                echo print_r($_COOKIE);

                //En la variable resultado se mete el resultado de la ejecución de la consulta que se ejecuta gracias a la funcion mysql_query
                $resultado = mysql_query($consulta, $link);

                while($fila = mysql_fetch_array($resultado)) {
                    echo "<tr>";
                        echo "<td>".$fila["ID"]."</td>";
                        echo "<td>".$fila["nombre"]."</td>";
                        echo "<td>".$fila["edad"]."</td>";
                    echo "</tr>";
                };
            ?>
        </table>
    </div>
</body>

我在使用 AJAX 调用的 php 文件上使用的代码是这样的:

$tabla    = "tablaPruebas";
$consulta = "SELECT+*+FROM+".$tabla."+ORDER+BY+".$_COOKIE["campo"]."+".$_COOKIE["orden"];

//I create this cookie by using the value of the other 2 cookies I already have
     $_COOKIE["consulta"] = $consulta;

我想知道你能不能告诉我为什么它不起作用:(

提前致谢...

4

1 回答 1

0

Cookie 存储在客户端计算机上。

在客户端计算机上存储 sql 查询是个坏主意,因为客户端可以通过编辑 cookie 对数据库执行随机 sql,例如删除所有表。

您将改为使用所需排序的简写,并在 switch 控制语句中设置 order by 子句。

此外,我根本不会使用 cookie,而只是将参数中所需的顺序交给 ajax POST。

以下是一些片段:

//javascript
$("a").click(function(){
            var campo= "name asc";

            $.ajax({
                type: "POST",
                url: "ordenaTabla.php",
                data: {campo: campo},
                success:function(data) {
                    //alert(data);
                }
            });

});

//PHP
switch($_POST['campo']){
     case "name asc": $orderby= "ORDER BY name ASC"; break;
     default: $orderby= "";
}
于 2012-11-13T10:24:18.510 回答