konto usunięte

Temat: Stronicowanie i gubienie zmiennej

Mam nastepujacy problem. Probuje zrobic stronicowanie rekordow wyciagnietych z bazy danych. Dodatkowo, dorzucilem jeszcze stronke na ktorej dopisywany jest zmienna przekazywana w $_POST na podstawie ktorej rekord jest wyszukiwany...

Na stronie docelowej wyciagam RecordSet

$query_rsD = "SELECT data_zdarzenia, wartosc1, wartosc2 FROM zdarzenia WHERE data_zdarzenia >='{$_POST[szukanadata1]}' LIMIT $offset, $rzedyNaStrone";

Stronicowanie dziala poprawnie na stronie nr 1 , do czasu kiedy nie przejde do strony np 2, wtedy wszystko sie sypie, strona 1 po powrocie tez nie dziala... Powodem tego jest ze gubie zmienna z "szukanadata1"

co moge zrobic zeby ja zachowac na kolejnych stronach?

Temat: Stronicowanie i gubienie zmiennej

pokaż trochę więcej tego kodu. Jak przekazujesz zmienne $offset, $rzedyNaStrone ? Bo rozumiem, ze do przechodzenia na kolejne strony używasz jakiegoś formularza, skoro stosujesz $_POST ?
Dominik Stelmach

Dominik Stelmach Programista
Aplikacji
Internetowych,
Action S.A.

Temat: Stronicowanie i gubienie zmiennej

Jest wiele rozwiązań. Możesz stworzyć zmienną sesyjną $_SESSION[szukanadata1] która będzie przechowywać zmienną. Możesz stworzyć plik Cookie $_COOKIE[szukanadata1] albo jak nie zależy ci na wyglądzie URL to możesz przekazywać zmienną poprzez GET.

Można kombinować na jeszcze wiele sposób ale te powyżej są podstawowymi rozwiązaniami

Pozdrawiam,
Dominik

konto usunięte

Temat: Stronicowanie i gubienie zmiennej

Daniel W.:
pokaż trochę więcej tego kodu. Jak przekazujesz zmienne $offset, $rzedyNaStrone ? Bo rozumiem, ze do przechodzenia na kolejne strony używasz jakiegoś formularza, skoro stosujesz $_POST ?

STRONA SZUKANIA:
Tutaj uzywam POST, podajac date zdarzenia w formularzu.

STRONA WYSWIETLANIA:
$szukanadata = ($_POST[data_zdarzenia]);
$rzedyNaStrone = 3;
$numerStrony = 1;

if(isset($_GET['page']))
{
$numerStrony = $_GET['page'];
}
$offset = ($numerStrony - 1) * $rzedyNaStrone;

mysql_select_db($database_connect, $connect);
$query_rsD = "SELECT data_zdarzenia, wartosc1, wartosc2 FROM zdarzenia WHERE data_zdarzenia >='{$_POST[szukanadata1]}' LIMIT $offset, $rzedyNaStrone";

$rsD = mysql_query($query_rsD, $connect) or die(mysql_error());
$row_rsD = mysql_fetch_assoc($rsD);
$totalRows_rsD = mysql_num_rows($rsD);

$query = "SELECT COUNT(dID) AS numrows FROM zdarzenia";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];
$maxPage = ceil($numrows/$rzedyNaStrone);Dawid Karel edytował(a) ten post dnia 20.05.08 o godzinie 22:20

Temat: Stronicowanie i gubienie zmiennej

Dominik Stelmach:
Jest wiele rozwiązań. Możesz stworzyć zmienną sesyjną $_SESSION[szukanadata1] która będzie przechowywać zmienną. Możesz stworzyć plik Cookie $_COOKIE[szukanadata1] albo jak nie zależy ci na wyglądzie URL to możesz przekazywać zmienną poprzez GET.

Można kombinować na jeszcze wiele sposób ale te powyżej są podstawowymi rozwiązaniami

Pozdrawiam,
Dominik

Zgadzam się. A jeśli nie chcesz, aż tak się bawić, to $_POST[] daj też jako $_GET[] i będziesz miał to w linku.

konto usunięte

Temat: Stronicowanie i gubienie zmiennej

Daniel W.:
Dominik Stelmach:
Jest wiele rozwiązań. Możesz stworzyć zmienną sesyjną $_SESSION[szukanadata1] która będzie przechowywać zmienną. Możesz stworzyć plik Cookie $_COOKIE[szukanadata1] albo jak nie zależy ci na wyglądzie URL to możesz przekazywać zmienną poprzez GET.

Można kombinować na jeszcze wiele sposób ale te powyżej są podstawowymi rozwiązaniami

Pozdrawiam,
Dominik

Probuje wlasnie to zrobic w GET i mam problem.
Tzn pierwszy link wyswietla mi sie popranwnie tzn dni (czyli zmienna) sa przekazywane tj:
http://raportdyzuru3.php?liczba_dni=15&szukaj=Submit
ale potem juz kazda kolejna strona to:
http://raportdyzuru3.php?page=2
http://raportdyzuru3.php?page=3
etc...
Wiem ze jest to problem gdzies w skrocie z ktorego wywoluje te strony. Ten skrot wygalada teraz tak:
$next = " <a href=\"$self?&page=$page\">[Next]</a> ";

W jaki sposob go zmodyfikowac zeby to dzialalo?

Zgadzam się. A jeśli nie chcesz, aż tak się bawić, to $_POST[] daj też jako $_GET[] i będziesz miał to w linku.

konto usunięte

Temat: Stronicowanie i gubienie zmiennej

$next = " <a href=\"$self?&page=$page&liczba_dni=$_GET['liczba_dni']\">[Next]</a> ";

przy czym lepiej filtrować zmienną liczba_dni , nawet poprzez (int) .

konto usunięte

Temat: Stronicowanie i gubienie zmiennej

Tak, teraz zaczyna dzialac, dziekuje wszystkim za pomoc. :))

Temat: Stronicowanie i gubienie zmiennej

Sugeruje przetestowac linie:

$query_rsD = "SELECT data_zdarzenia, wartosc1, wartosc2 FROM zdarzenia WHERE data_zdarzenia >='{$_POST[szukanadata1]}' LIMIT $offset, $rzedyNaStrone";

pod wzgledem ataku typu SQL injection.

Podobnie jesli ustawiasz podzial wyniku na podstrony zanim wygenerujesz query sprawdz parametry ktore dostarczyl user ( $_GET['liczba_dni'] ) czy spelniaja twoje zalozenia. Bo mozna sobie recznie zmienic to w URLu czy tam w formularzu na dosyc wysoka liczbne i dosyc znacznie obciazyc twoj serwer ( np. wyswietlac kilkaset obrazkow jednoczesnie, gdyby np to byla galeria )

konto usunięte

Temat: Stronicowanie i gubienie zmiennej

Robert Mituniewicz:
Sugeruje przetestowac linie:

$query_rsD = "SELECT data_zdarzenia, wartosc1, wartosc2 FROM zdarzenia WHERE data_zdarzenia >='{$_POST[szukanadata1]}' LIMIT $offset, $rzedyNaStrone";

pod wzgledem ataku typu SQL injection.

Słuszna uwaga. Ja wiem, że tak jest prościej, ale filtrowanie danych to podstawa.
Jarosław Lisicki

Jarosław Lisicki programista,
Gadu-Gadu

Temat: Stronicowanie i gubienie zmiennej

Adam Piotrowski:
$next = " <a href=\"$self?&page=$page&liczba_dni=$_GET['liczba_dni']\">[Next]</a> ";

przy czym lepiej filtrować zmienną liczba_dni , nawet poprzez (int) .

To samo bym sugerowal dla $page i $offset



Wyślij zaproszenie do