2012-08-23 97 views
1

感謝這裏的人在stackoverflow我已經掌握了大部分方面的數據庫(sqlite)控制在幾天內使用php!並設法建立一個基本的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變量,由於但不會更新查詢字符串

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 ");} 
////////////////////////////////////////////////////////////////////////////////////// 

感謝尼克;-)奇怪的是,我曾經在此查詢單引號和它的作品$dropdown = $db->query("SELECT * FROM '$table2' WHERE menu = '$menu'");但我會用回從現在蜱上

+1

每次訪問該頁面時,都會重新分配'$ _SESSION ['sort']'變量。如果'_ _GET ['sort']'不會被設置,你的會話變量也將爲null。所以你需要檢查你是否需要分配變量。 – Leri

回答

3

每次要assiging $_SESSION['sort'] = $_GET['sort'];你請訪問該頁面,如果沒有設置$_GET['sort'],則只會將$_SESSION['sort']更改爲空值。

將其更改爲:

if (isset($_GET['sort'])) { 
    $_SESSION['sort'] = $_GET['sort']; 
} 

,它應該工作

編輯:

您的查詢應更新爲:

SELECT * FROM `$table1` ORDER BY `$srt` 

注意使用回蜱`而不是單引號。後面的勾號用於表名,引號用於字符串。

+0

現在保存在會話變量中,謝謝但不會更新查詢字符串;-( session_start(); if(isset($ _GET ['srt'])){__SESSION ['srt'] = $ _GET ['srt']' SRT ']; } $ SRT = $ _SESSION [' SRT']; ID IMGNAMECAT ........ $ srtd = $ db-> query(「SELECT * FR OM'$ table1'ORDER BY'$ srt'「); ///////////////////////////////////////////////// ///////////////// foreach($ srtd as $ row){ $ id = $行[ 'ID']; $ name = $ row ['name']; –

+0

對不起,我無法讀取該代碼。編輯您的問題以包含它。 – Nick

+0

看到我上面的修改。 – Nick

相關問題