我试图通过使用javaScript(jquery)/ PHP和coockies来对表进行排序。
mi code就是这样:
<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;
我想知道你是否可以告诉我为什么它不起作用:(
提前致谢...
答案 0 :(得分: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= "";
}