在jquery和php之间切换变量
我在黑板上看到过这样的问题,但没有一个与我的情况完全相符,所以在阅读我的问题之前,请不要记下我的分数 我有一张桌子。表的每个th都有一个与mysql数据库中的字段匹配的id。当您单击th时,我希望使用order by desc方向对数据库进行查询。如果您再次单击同一字段,我希望查询具有order by asc方向 问题是在各州之间保持方向的值。到目前为止,当我单击表格标题时,方向没有改变 有人能告诉我我做错了什么吗 HTML: PHP:在jquery和php之间切换变量,php,jquery,mysqli,Php,Jquery,Mysqli,我在黑板上看到过这样的问题,但没有一个与我的情况完全相符,所以在阅读我的问题之前,请不要记下我的分数 我有一张桌子。表的每个th都有一个与mysql数据库中的字段匹配的id。当您单击th时,我希望使用order by desc方向对数据库进行查询。如果您再次单击同一字段,我希望查询具有order by asc方向 问题是在各州之间保持方向的值。到目前为止,当我单击表格标题时,方向没有改变 有人能告诉我我做错了什么吗 HTML: PHP: $db=newmysqli(db\u主机、db\u用户、d
$db=newmysqli(db\u主机、db\u用户、db\u密码、db\u名称);
if(mysqli\u connect\u errno()){
printf(“连接失败:%s”,mysqli_Connect_error());
出口
}
如果(isset($by)和$by==“ASC”){
$by=“DESC”;
}否则{
$by=“ASC”;
}
如果(isset($_POST[“orderby”])){
$orderby=$_POST[“orderby”];
//echo$orderby;
}
//在数据库上构建查询
$q=“从未补偿中选择*”;
如果(isset($_POST[“orderby”])){
$q.=“订购人”。$orderby;
}否则{
$q.=“2013年前订单”;
}
如果(按设定值($){
$q.=$by;
echo$q;
}否则{
$by='DESC';
$q.=$by;
echo$q;
}
//echo$q;
$result=$db->query($q);
回声“;
回显“名称201320122011201020009200820072006200520004*2003200220012000199919981997”;
而($row=$result->fetch_数组(MYSQLI_ASSOC)){
(代码)
}
你很容易受到攻击,而且你似乎没有改变你的点击行为。如果页面是用sortBy('asc')
生成的,那么这就是您将要做的所有事情——按asc排序。您需要更改链接,或将方向保留在单独的变量中<代码>变量最后排序='asc';函数toggleSort(){if(last_sort=='asc'){last_sort='desc'}类似的东西。@Marc B:暂时忘记sql注入。我正在切换-if(isset($by)){$q.=$by;}或者{$by='desc q.=$by;}一个问题在于您的AJAX数据对象。您已经硬编码了“desc MonkeyZeus”:我重写了这行:数据:({orderby:orderby,direction:'desc'}),表示数据:({orderby:orderby}),但它仍然不起作用。通过删除“direction”,您的PHP脚本将永远不知道SQL使用哪个方向。在jQuery中,您需要通过侦听表头上的单击来动态设置方向
<div id="content"></div>
$(document).ready(function() {
loadData();
});
function loadData(orderby) {
$.ajax({
url: 'display.php',
type: "POST",
data: ({orderby: orderby, direction: 'desc'}),
success: function(data){
$("#content").hide();
$("#content").html(data);
$("#content").show();
$('th').click(function(){
var orderby = $(this).attr('id');
loadData(orderby);
});
}
});
}
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (mysqli_connect_errno()) {
printf("Connect failed: %s", mysqli_connect_error());
exit;
}
if(isset($by) and $by==" ASC"){
$by=" DESC";
}else{
$by=" ASC";
}
if (isset($_POST["orderby"])) {
$orderby = $_POST["orderby"];
//echo $orderby;
}
//build a query on the database
$q = "Select * from uncompensated";
if (isset($_POST["orderby"])) {
$q .= " order by " . $orderby;
} else {
$q .= ' order by year2013';
}
if (isset($by)) {
$q .= $by;
echo $q;
} else {
$by = ' DESC';
$q .= $by;
echo $q;
}
//echo $q;
$result = $db->query($q);
echo "<table cellspacing='0' >";
echo "<tr id='header'><th id='Name'>Name</th><th id='year2013'>2013</th><th id='year2012'>2012</th><th id='year2011'>2011</th><th id='year2010'>2010</th><th id='year2009'>2009</th><th id='year2008'>2008</th><th id='year2007'>2007</th><th id='year2006'>2006</th><th id='year2005'>2005</th><th id='year2004'>2004</th><th id='year2003note'>* 2003</th><th id='year2002'>2002</th><th id='year2001'>2001</th><th id='year2000'>2000</th><th id='year1999'>1999</th><th id='year1998'>1998</th><th id='year1997'>1997</th></tr>";
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
(code)
}