2013-08-26 2 views
-1

У меня есть строка поиска на первой странице, и результаты отображаются на второй странице с разбиением на страницы. Проблема заключается в том, что разбиение на страницы не работает с переменной $_GET или $_POST.Сохранение значения переменной GET

, что я имел в виду, например, когда форма передается URL-адрес на второй странице изменения к чему-то вроде

products.php?search=something, и я могу видеть результаты, которые показывают вверх.

Однако, когда я попал в следующей кнопку пагинации я получаю undefined index search error и изменения URL-адреса в products.php?page=2

так есть ли способ, что я могу хранить значение $_GET['search'];, так что я могу использовать его при изменении номера страницы ?

<form action="products.php" method="post"> 
    <input type="text" name="search"> 
    <input type="Submit"> 
    </form> 

products.php

<?php 
     /* 
     * Connect to the database (Replacing the XXXXXX's with the correct details) 
     */ 
     try 
     { 
      $dbh = new PDO('mysql:host=localhost;dbname=db', 'root', ''); 
     } 
     catch(PDOException $e) 
     { 
      print "Error!: " . $e->getMessage() . "<br/>"; 
      die(); 
     } 
     /* 
     * Get and/or set the page number we are on 
     */ 
     if(isset($_GET['page'])) 
     { 
      $page = $_GET['page']; 
     } 
     else 
     { 
      $page = 1; 
     } 


     /* 
     * Set a few of the basic options for the class, replacing the URL with your own of course 
     */ 
     $options = array(
      'results_per_page'    => 100, 
      'url'       => 'products.php?page=*VAR*', 
      'db_handle'      => $dbh 
     ); 

     $q = $_GET['search']; 
     /* 
     * Create the pagination object 
     */ 


     try 

    { 

      $paginate = new pagination($page, "SELECT * FROM products where title LIKE '%$q%' order by id desc", $options);} 

    catch(paginationException $e) 
     { 
      echo $e; 
      exit(); 
     } 


    if($paginate->success == true) 
     { 
      $paginate_result = $paginate->resultset->fetchAll(); 
      foreach($paginate_result as $row) 
      { 

        echo $row['title']; 
        } 

      ?> 


     <?php echo "<li>"; //this is next and prev button for the pagination class if results exceed the limit. 
    echo $ball->links_html; 
    echo "</li>"; ?> 

ответ

2

Изменить код на что-то вроде этого ...

<form action="products.php" method="get"> 
    <input type="text" name="search"> 
    <input type="Submit"> 
    </form> 

... и ...

$options = array(
       'results_per_page'    => 100, 
       'url'       => 'products.php?search=' . urlencode($_GET['search']) . '&page=*VAR*', 
       'db_handle'      => $dbh 
      ); 
+0

спасибо, что это исправляет проблему. – amdvb

-1

Самый простой решение, вероятно, было бы использовать скрытое поле в вашей форме:

<form action="products.php" method="post"> 
    <input type="text" name="search"> 
    <input type="hidden" name="page" value="<?php echo $_GET['page']; ?>"> 
    <input type="Submit"> 
</form> 
+0

ему нужно значение поиска в его код страницы, а не в поле поиска. – cmorrissey

-1

Попробуйте переменные сеанса, они позволяют хранить его до тех пор, пока браузер не будет закрыт (или вы не перейдете на другой сайт, возможно?) И сохраните его на разных страницах.

http://www.tizag.com/phpT/phpsessions.php

Другой альтернативой является печенье, которые позволят вам хранить для примерно до тех пор, как вы хотите, пока пользователь не удалит их куки.

http://www.tizag.com/phpT/phpcookies.php

+2

не делайте этого, если вы находитесь на странице 4 одного поиска, затем выполните другой поиск ... теперь снова на странице 4 – cmorrissey

+0

Как я понимаю, все, что он хочет сохранить, - это значение, которое было искано, а не номер страницы. Может быть, проще всегда получать его как переменную GET, а не иногда GET, иногда SESSION, но вы определенно можете сохранить ее в переменной сеанса. В принципе, если есть переменная GET, используйте ее и сохраняйте как переменную сеанса. В противном случае найдите переменную сеанса и используйте ее. – hughmanwho

Смежные вопросы