2014-11-13 18 views
0

當我刷新頁面或按頁面底部的鏈接移動到下一頁或上一頁時,我想保留$orderby$orderSort(查詢內)。通過刷新保留提交的數據

我試圖連接orderbyorderSort到會議,但沒有因查詢工作 - 它總是回覆到來自這似乎是與isset($_POST['submit'])一個問題else語句名稱和ASC,但我沒有它已經嘗試同樣的問題仍然存在。

當我進入下一頁或上一頁時,如何保留我的查詢(只要選擇沒有改變)?

熱門PHP部分:

//Next Page 
if (!isset($_GET['startrow']) or !is_numeric($_GET['startrow'])) { 
$startrow = 0; 
} else { 
$startrow = (int)$_GET['startrow']; 
} 
//when options are selected/submitted 
if(isset($_POST['submit'])) 
    { 
     if($_POST['select'] == "EventType") 
     { 
      $orderby = $_POST['select']; 
      if($_POST['otherType'] != "Select an Event") { 
      $EventType = 'WHERE `' . $orderby . '`="' . $_POST["otherType"] . '"'; 
      } 
     } 
     else 
     { 
      $orderby = $_POST['select']; 
     } 
     $orderSort = $_POST['agree']; 
    } 
else 
{ 
    $orderby = "Name"; 
    $orderSort = "ASC"; 
} 

if ($stmt = $local->prepare("SELECT * FROM importdata $EventType ORDER BY `$orderby` $orderSort LIMIT  ?,10")) { 
$stmt->bind_param('i', $startrow); 
$stmt->execute(); 
$Recordset1 = $stmt->get_result(); 
$row_Recordset1 = $Recordset1->fetch_assoc(); 
$stmt->close(); 
} 

提交表單:

<form id="form1" name="form1" method="post" enctype="multipart/form-data"> 
    <label for="select">Order By:</label> 
    <select name="select" id="selectType"> 
    <option value="EventType">Event</option> 
    <option value=" Name"selected="selected">Race Name</option> 
    </select> 
     <label><input type="radio" name="agree" value="ASC" checked>Ascend</label> 
    <label><input type="radio" name="agree" value="DESC">Descend</label> 

     <input type="submit" name="submit" value="Submit"> 
</form> 

底部PHP的下一頁/上一頁

<?php 
    $prev = $startrow - 10; 
    if ($prev >= 0) 
    echo '<a href="'.htmlspecialchars($_SERVER["PHP_SELF"], ENT_QUOTES, "utf-8").'?startrow='.$prev.'">Previous </a>'; 
    echo '<a href="'.htmlspecialchars($_SERVER["PHP_SELF"], ENT_QUOTES, "utf-8").'?startrow='.($startrow+10).'"> Next</a>'; 
?> 
+0

什麼是錯的會話變量?我認爲這是在服務器上保留設置的事實上的方法。爲每個請求設置orderBy和orderSort會話變量,如果它們不在請求中,則使用會話變量作爲查詢。 –

+0

嘗試在查詢之前放置if語句--- if(!$ _ SESSION ['orderby']或!$ _ SESSION ['orderSort']){---。這種方式只會在沒有設置會話變量的情況下運行。 – Rich701

回答

0

我建議是這樣的:

// Get our defaults for these variables. 
$orderBy = isset($_SESSION['orderBy']) ? $_SESSION['orderBy'] : 'Name'; 
$orderSort = isset($_SESSION['orderSort']) ? $_SESSION['orderSort'] : 'ASC'; 

// When options are selected/submitted 
if (isset($_POST['submit'])) { 
    if ($_POST['select'] == "EventType") { 
     $orderby = $_POST['select']; 

     if ($_POST['otherType'] != "Select an Event") { 
      $EventType = 'WHERE `' . $orderby . '`="' . $_POST["otherType"] . '"'; 
     } 
    } else { 
     $orderby = $_POST['select']; 
    } 

    $orderSort = $_POST['agree']; 

    // Set our session variables for next time when we set our defaults. 
    $_SESSION['orderBy'] = $orderBy; 
    $_SESSION['orderSort'] = $orderSort; 
} 
+0

完美伴侶!我困惑了一會兒,但意識到我沒有CamelCase的命令,就像你做了哈哈。謝謝:) – Solarplex

+0

你完全歡迎! 90%的時間是這樣的小事,哈哈。 –

0

你必須寫參數(orderBy等)到每個鏈接,因爲HTTP是一種無狀態協議。這是非常乏味的,所以我建議尋找一個適合你的框架。

會議也應該工作,對於簡單的應用程序,它可能更容易靈活。你究竟如何存儲會話變量?