2012-08-23 4 views
1

여기에 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']; 

를 업데이트하지 않습니다하지만이 방법은 작동 : 위의 코드는 괜찮아? 이상한 것은 내가이 쿼리에 작은 따옴표를 사용하고 $dropdown = $db->query("SELECT * FROM '$table2' WHERE menu = '$menu'"); 작동하지만 당신은 모든 시간을 $_SESSION['sort'] = $_GET['sort'];을 assiging하는

+1

그 페이지를 방문 할 때마다'$ _SESSION [ 'sort']'변수를 다시 할당합니다. '$ _GET [ 'sort']'가 설정되지 않으면 세션 변수도 null이됩니다. 변수를 지정해야하는지 확인해야합니다. – Leri

답변

3

지금부터 틱 다시 사용하는 것입니다 닉 ;-)에 대한

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

감사합니다 페이지를 방문하여 $_GET['sort']이 설정되지 않은 경우 $_SESSION['sort']을 null 값으로 변경합니다.

변경 그것을 :

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 = $ _SESSION ['SRT '] <폭 번째 = "5">ID IMGNAME<폭 = "10"번째>CAT ........ $ srtd = $ db-> query ("SELECT * FR OM '$ table1'ORDER BY '$ srt' "); /////////////////////////////////////////////////////////////////////// ///////////////////////////// foreach ($ srtd as $ row) { $ id = $ row [ 'id']; $ name = $ row [ 'name']; –

+0

죄송합니다. 해당 코드를 읽을 수 없습니다. 질문을 편집하여 포함하십시오. – Nick

+0

위의 편집을 참조하십시오. – Nick

관련 문제