slawekxx
22.07.2012, 06:22:18
Witam, napisałem skrypt paginacji danych z bazy sql dodałem na stronie pole wyboru select gdzie wybiera się zapytanie do bazy - sortowanie według daty i teraz ma problem a mianowicie klikając w linki paginacji zmienia mi się pole wyboru select
d3ut3r
22.07.2012, 06:54:13
Zapisz wartość selecta w sesji / ciasteczku i ustawiaj go za każdym razem na podstawie tej wartości.
slawekxx
22.07.2012, 07:05:30
ok tylko jak mam to zrobić ?
d3ut3r
22.07.2012, 07:53:57
A jak próbujesz to robić ? nie dałeś żadnego kodu, więc nie bardzo mam co napisać. Zakładam, że znasz podstawy php i wiesz jak odbierać dane z formularza.
slawekxx
22.07.2012, 08:02:23
<form action="" method="post"> <select name="dzial" onchange="this.form.submit();return true;">
zapytanie do bazy
$res = mysql_query("SELECT * FROM webacm_test ORDER BY `webacm_test`.`date` $dzial LIMIT $start, $per_page ");
d3ut3r
22.07.2012, 08:56:29
Można np tak:
<?php
$allowed=array('ASC','DESC');
if (isset($_POST['dzial'])){
$_SESSION['order_direction']=$_POST['dzial'];
}
if (!isset($_SESSION['order_direction']) || !in_array( $_SESSION['order_direction'], $allowed, true)){ $_SESSION['order_direction']='ASC'; //domyślna opcja
}
$sql='SELECT * FROM webacm_test ORDER BY `webacm_test`.`date` '.$_SESSION['order_direction'].' LIMIT '.(int)$start.','.(int)$per_page;
?>
<form action="" method="post">
<select name="dzial" onchange="this.form.submit();return true;">
<option <?=$_SESSION['order_direction']=='ASC' ? 'selected="selected"' : ''?> value="ASC">data malejaca</option>
<option <?=$_SESSION['order_direction']=='DESC' ? 'selected="selected"' : '' ?> value="DESC">data rosnaco</option>
</select>
</form>
slawekxx
22.07.2012, 09:04:41
nic się nie poprawiło
d3ut3r
22.07.2012, 09:12:54
Rozpisz się bardziej

masz to gdzieś na live ? przed mysql_query daj print_r($_SESSION) zobacz czy zmienna jest poprawnie przypisana. Za mało szczegółów podajesz.
slawekxx
22.07.2012, 09:14:19
Linka live wysłałem na PRV
d3ut3r
22.07.2012, 09:19:07
Wklej na forum cały kod jaki teraz masz ... ale dostałeś gotowca praktycznie kwestia dostosowania tego do twoich potrzeb. Offtopując nie wysyłaj PM forum jest ogólnodostępne, i jeżeli nie ja to ktoś inny Ci pomoże a tak to lipa :/
slawekxx
22.07.2012, 09:25:13
<form action="" method="post">
<select name="dzial" onchange="this.form.submit();return true;">
<option>domyslenie</option>
<option <?=$_SESSION['order_direction']=='ASC' ? 'selected="selected"' : ''?> value="ASC">data malejaca</option>
<option <?=$_SESSION['order_direction']=='DESC' ? 'selected="selected"' : '' ?> value="DESC">data rosnaco</option>
</select>
</form>
</div>
<div class="listPagesContainer">
<ul>
<?php
$per_page=5;
if(!isset($_GET['page'])) {
$page=1;
}
else {
$page=$_GET['page'];
$cur_page = $page;
}
if($page<=1)
$start=1;
else
$start=$page * $per_page-$per_page;
if (!$con) {
}
$num_pages=ceil($num_rows/$per_page); $no_of_paginations = ceil($num_rows /$per_page); $lastpage = ceil($num_rows/$per_page);
//
if($no_of_paginations>100){
$stages=10;
}
if($no_of_paginations<=10){
$stages=5;
}
if ($cur_page >= 7) {
$start_loop = $cur_page - 5;
if ($no_of_paginations > $cur_page + 5)
$end_loop = $cur_page + 5;
else if ($cur_page <= $no_of_paginations && $cur_page > $no_of_paginations - $stages) {
$start_loop = $no_of_paginations - $stages;
$end_loop = $no_of_paginations;
} else {
$end_loop = $no_of_paginations;
}
} else {
$start_loop = 2;
if ($no_of_paginations > 10)
$end_loop = 10;
else
$end_loop = $no_of_paginations;
}
//
if($page)
$prev=$page-1;
$next=$page+1;
if($prev>0)
echo"<li class='previous'><a href='?page=$prev'></a></li>";
// wyświetla zawsze pierwszą stronę
for($i=1;$i<=$num_pages;$i++){
if($i==1){
echo'<li><a href="?page='.$i.'">'.$i.'</a></li>'; }
}
if($page>=7){
else{
}
// wyświetla liczbę stron
$loop=$end_loop-1;
if($cur_page>=0){
for ($i=$start_loop; $i <= $loop;$i++) {
if($i==$page){
echo'<li class="active">'.$i.'</li>'; } else {
echo'<li><a href="?page='.$i.'">'.$i.'</a></li>'; }
}
//wyświetlanie numeru ostatniej strony
for($j=$num_pages; $j<=$num_pages;$j++) {
echo'<li><a href="?page='.$j.'">'.$j.'</a></li>'; }
}
else{
//
for ($i=1; $i<=$num_pages;$i++) {
if($i==$page) {
echo'<li class="active">'.$i.'</li>'; } else {
echo'<li><a href="?page='.$i.'">'.$i.'</a></li>'; }
}
}
if($page<ceil($num_rows/$per_page))
echo"<li class='next'><a href='?page=$next'></a></li>";
?>
</ul>
</div>
<div class="productsContainer">
<style type="text/css">
/* <![CDATA[ */
li {
display: block;
list-style: none;
margin: 0;
padding: 0;
}
/* ]]> */
</style>
<?php
$allowed=array('ASC','DESC');
if (isset($_POST['dzial'])){
$_SESSION['order_direction']=$_POST['dzial'];
}
if (!isset($_SESSION['order_direction']) || !in_array( $_SESSION['order_direction'], $allowed, true)){ $_SESSION['order_direction']='ASC'; //domyślna opcja
}
$sql='SELECT * FROM webacm_test ORDER BY `webacm_test`.`date` '.$_SESSION['order_direction'].' LIMIT '.(int)$start.','.(int)$per_page;
echo '<div class="product"> <div class="header">
<div class="name"><a href="">'.$row['date'].'</a>
<div class="content">
<div class="photo">
<li><img src="'. $row['url_min'] . '" ></li>
</div>
</div>
</div>
</div>
</div>';
}
?>
d3ut3r
22.07.2012, 09:29:33
session_start i mój kod ma być na początku, formularz z orderem powinien być pod tym dopiero. Generalnie sieczka w tym kodzie ...
slawekxx
22.07.2012, 09:53:09
to tak gdy wybiorę sortowanie np. według daty malejąco - sortowanie jest poprawne jeżeli kliknę w link paginacji to przeskoczy sortowanie według daty rosnąco i na odwrót
d3ut3r
22.07.2012, 10:42:54
dałeś session_start na samym początku pliku ?
slawekxx
21.10.2012, 17:21:41
ok dzięki działa

Ok teraz chce wykorzystać pola checkbox do wybory ze stronicowanych danych czyli tak zwana filtracja według kategorii skrypt z jakiego korzystam jest poniżej próbowałem dać warunek do linii 31 ale paginacja następuje dopiero po zaznaczeniu pola checkbox
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.