|
|
|
| Использую 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 и т.д. пустота как и раньше, но теперь при вводе данных повторно меня скидывает на первую страницу | |
|
|
|
|
|
|
|
для: Renegade2204
(04.05.2015 в 20:59)
| | Возможно где то все таки забыли исправить пост на гет | |
|
|
|
|
|
|
|
для: Renegade2204
(04.05.2015 в 20:59)
| | и что же вам помешало привести код после изменений?
Обе ссылки переделали? | |
|
|
|