感谢stackoverflow的人们,我已经在几天内掌握了使用php的数据库(sqlite)控件的大多数方面!并设法建立一个基本的crud cms。我现在正在做一些小改进,坚持“在会话中保存数据库排序”。当我单击页面然后返回时,会话不会保存。到目前为止,这似乎是一个令人沮丧的绊脚石。这就是我所拥有的:
session_start();
$_SESSION['sort'] = $_GET['sort'];
$savedsort = $_SESSION['sort']; // store session data
if(!empty($_GET['sort']) && ctype_alnum(trim($_GET['sort'])))
$sort = trim($_GET['sort']);?> ///if page is empty
//links to sort data
<h2><?php echo $savedsort;?></h2>
<table border="0" align="center" cellpadding="8" cellspacing="0" id="show"><tr><th width="5"><a href="?sort=id">ID</a></th><th>IMG</th><th><a href="?sort=name">NAME</a></th>
<th width="10"><a href="?sort=cat">CAT</a></th></tr>
//query string
///////////////////////////////////////sort columns ////////////////////////////////
if($sort == $savedsort){
$result = $db->query("SELECT * FROM '$table1' ORDER BY '$savedsort' ");
}
else{$result = $db->query("SELECT * FROM '$table1' ORDER BY id ");}
//////////////////////////////////////////////////////////////////////////////////////
foreach($result as $row){
...任何指针都非常感激。提前谢谢。
现在保存会话变量,谢谢,但不会更新查询字符串
session_start();
if (isset($_GET['srt']))
{ $_SESSION['srt'] = $_GET['srt']; }
$srt = $_SESSION['srt'];
<tr><th width="5"><a href="?srt=id">ID</a></th><th>IMG</th><th><a href="?srt=name">NAME</a></th><th width="10"><a href="?srt=menu">CAT</a></th>........
$srtd = $db->query("SELECT * FROM '$table1' ORDER BY '$srt' "); ////////////////////////////////////////////////////////////////////////////////////// foreach($srtd as $row){ $id=$row['id'];
但这种方法有效:上面的代码是否正确?
///////////////////////////////////////sort columns ////////////////////////////////
if ($srt=='name'){$srtd = $db->query("SELECT * FROM '$table1' ORDER BY name ");}
elseif($srt=='id'){$srtd = $db->query("SELECT * FROM '$table1' ORDER BY id ");}
elseif($srt=='menu'){$srtd = $db->query("SELECT * FROM '$table1' ORDER BY menu ");}
else{$srtd = $db->query("SELECT * FROM '$table1' ORDER BY id ");}
//////////////////////////////////////////////////////////////////////////////////////
感谢Nick ;-)奇怪的是我在这个查询中使用了单引号并且它正常工作$dropdown = $db->query("SELECT * FROM '$table2' WHERE menu = '$menu'");
但是我将从现在开始使用返回标记
答案 0 :(得分:3)
您每次访问该网页时都在指定$_SESSION['sort'] = $_GET['sort'];
,因此如果未设置$_GET['sort']
,则只需将$_SESSION['sort']
更改为空值。
将其更改为:
if (isset($_GET['sort'])) {
$_SESSION['sort'] = $_GET['sort'];
}
它应该有效
编辑:
您的查询应更新为:
SELECT * FROM `$table1` ORDER BY `$srt`
注意使用back ticks`而不是单引号。后面的刻度用于表名,引号用于字符串。