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']; 

しかし、この方法は機能します。上記のコードは大丈夫ですか?

///////////////////////////////////////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'");が、今後はバックティックを使用します

4

1 に答える 1

3

$_SESSION['sort'] = $_GET['sort'];ページにアクセスするたびに支援しているため、が設定されていない場合は、null値$_GET['sort']に変更されます。$_SESSION['sort']

次のように変更します。

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

そしてそれはうまくいくはずです

編集:

クエリを次のように更新する必要があります。

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

一重引用符の代わりにバックティック`を使用していることに注意してください。テーブル名にはバックティックが使用され、文字列には引用符が使用されます。

于 2012-08-23T14:44:17.387 に答える