Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не корректно работает постраничный вывод из MySQL
 
 автор: Renegade2204   (04.05.2015 в 20:59)   письмо автору
 
 

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

<form method="post">
<p>
с даты: <input type="text" name="fromdate" value="<?php echo $_REQUEST["fromdate"] ?>" />
по дату: <input type="text" name="todate" value="<?php echo $_REQUEST["todate"] ?>"/>
<input type="submit" name="formSubmit" value="Поиск"/>
</p>
</form>



<?php 
$msql = new mysqli("localhost", "root","","employees");
if(isset($_POST['formSubmit']) )
{   
   $fromdate=$_POST['fromdate'];
   $todate = $_POST['todate'];

   $limitrec=15; // количество записей на одной странице
   $limit=3; 
   $page = $_GET['page'];
   if(!is_numeric($page)) $page=1;
   if ($page<1) $page=1;
   $sqlcount = "SELECT COUNT(salaries.emp_no) as cmt FROM salaries 
        INNER JOIN employees ON salaries.emp_no=employees.emp_no 
        WHERE ((salaries.from_date>='$fromdate') and (salaries.to_date<='$todate'))"; // узнаём количество записей
   $r = $msql->query($sqlcount);
   $i = $r->fetch_row();
   $pages = $i[0]/$limitrec;
   $pages = ceil($pages);

   $pages++;   
   if ($page>$pages) $page = 1;
   if (!isset($list)) $list=0;
   $list=($page-1)*$limitrec;    
   $sql = "SELECT salaries.emp_no, salaries.salary, salaries.from_date, salaries.to_date, employees.first_name,employees.last_name
        FROM salaries INNER JOIN employees ON salaries.emp_no=employees.emp_no 
        WHERE ((salaries.from_date>='$fromdate') and (salaries.to_date<='$todate')) LIMIT $list, $limitrec ";  

   $res = $msql->query($sql);

   $_this = $page;
   // Узнаем с какой ссылки начинать вывод
   $start = $_this - $limit;
   // Узнаем номер последней ссылки для вывода
   $end = $_this + $limit;
   $pages++;
   // Выводим ссылки на все страницы
   for ($j = 1; $j <= $pages; $j++) 
   {
      if ($j >= $start && $j <= $end) 
      {
         if ($j == ($page)) 
         {
            echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?page='.$j.'"><strong style="color: #df0000">'.$j.'</strong></a>';
         }
         else 
         {
            echo '<a href="'.$_SERVER['SCRIPT_NAME'].'?page='.$j.'">'.$j.'</a>';
         }
      }
   }
   $table = "</br><table border=1 width ='600px' align=left> <tr><th>Номер</th> <th>Зарплата</th> <th>С даты</th> <th>По дату</th> <th>Имя</th> <th>Фамилия</th></tr>";
   if ($i > 1){
     while($row = $res->fetch_array()){
        $table .= "<tr>";
        $table .= "<td>".$row['emp_no']."</td>";
        $table .= "<td>".$row['salary']."</td>";
        $table .= "<td>".$row['from_date']."</td>";
        $table .= "<td>".$row['to_date']."</td>";
        $table .= "<td>".$row['first_name']."</td>";
        $table .= "<td>".$row['last_name']."</td>";
        $table .= "</tr>"; 
    }
} else {
    echo '<tr>Ничего не найдено</tr>';
}
$table .= "</table>";
echo $table;       
}

Даты теряются, потому что в ссылках на страницы нет этих параметров.
Пытался сделать следующее:
Переделал форму на method="get".
Во всех местах $_POST и $_REQUEST заменил на $_GET
Там где цикл вывода ссылок на страницы, сделал ссылку иначе:

echo "<a href=\"{$_SERVER['SCRIPT_NAME']}?" . 
    http_build_query(array(
        'page'     => $j,
        'fromdate' => $_GET['fromdate'],
        'todate'   => $_GET['todate'],
    )) .
"\">{$j}</a>";

Но после данного изменения при переходе на 2 и т.д. пустота как и раньше, но теперь при вводе данных повторно меня скидывает на первую страницу

  Ответить  
 
 автор: KPETuH   (05.05.2015 в 14:10)   письмо автору
 
   для: Renegade2204   (04.05.2015 в 20:59)
 

Возможно где то все таки забыли исправить пост на гет

  Ответить  
 
 автор: Trianon   (05.05.2015 в 16:40)   письмо автору
 
   для: Renegade2204   (04.05.2015 в 20:59)
 

и что же вам помешало привести код после изменений?
Обе ссылки переделали?

  Ответить