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

Форум 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)
 

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования