[ Príspevkov: 13 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.04.08
Prihlásený: 31.08.08
Príspevky: 37
Témy: 10 | 10
NapísalOffline : 27.05.2008 13:39 | Problem s vypisom pri strankovani

Nazdarek. Snazim si spravit strankovanie na zaklade selectu z formulara, no problem je v tom, ze vzdy mi vypise vysledky iba na prvej strane. Ked kliknem na dalsiu stranku alebo odkaz, tak mi to vyhodi pociatocny formular.

Tu je Script:

<?php
if ($_POST["spracuj"]) {

if($_POST["vzdelanie"]!="nic")
{
mysql_connect("xxxx","xxxx","xxxx");
mysql_select_db("xxxxx");
$rowsPerPage = 10;
$pageNum = 1;
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}

$offset = ($pageNum - 1) * $rowsPerPage;

$query = "SELECT meno FROM doplnky where (skola='".$_POST["vzdelanie"]."') LIMIT $offset, $rowsPerPage";
$result = mysql_query($query) or die('Error, query failed');

while($row = mysql_fetch_array($result))
{
echo $row['meno'] . '<br>';
}
echo '<br>';

$query = "SELECT COUNT(meno) AS numrows FROM doplnky where (skola='".$_POST["vzdelanie"]."')";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];

$maxPage = ceil($numrows/$rowsPerPage);

$nav = '';
for($page = 1; $page <= $maxPage; $page++)
{
if ($page == $pageNum)
{
$nav .= " $page "; }
else
{
$nav .= " <a href=\"index.php?formular=a&page=$page\">$page</a> ";
}
}

if ($pageNum > 1)
{
$page = $pageNum - 1;
$prev = " <a href=\"index.php?formular=a&page=$page\">[Prev]</a> ";

$first = " <a href=\"index.php?formular=a&page=1\">[First Page]</a> ";
}
else
{
$prev = '&nbsp;';
$first = '&nbsp;';
}

if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
$next = " <a href=\"index.php?formular=a&page=$page\">[Next]</a> ";

$last = " <a href=\"index.php?formular=a&page=$maxPage\">[Last Page]</a> ";
}
else
{
$next = '&nbsp;';
$last = '&nbsp;';
}

echo $first . $prev . $nav . $next . $last;
}
}
?>



<form method="post">
<table>
<tr>
<td>Pohlavie:</td>
<td><select name="vzdelanie" size="1" value="<?echo $_POST["vzdelanie"]?>" >
<option value="nic" selected>Žiadne
<option value="zakl">Základné
<option value="stred">Stredoškolské
<option value="vysok">Vysokoškolské
</option>
</select>
</td>
</tr>
</table>
<input type=hidden name="spracuj" value="true">
<input type="submit" value="Vyhľadaj">
</form>


Keď vsak odstranim odtial podmienky vyberu ( napr. if ($_POST["spracuj"]) ) a zadam si podmienku v query "rucne", tak to funguje bez problemov.
V čom by mohol byt problem???


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3991
Témy: 96 | 96
NapísalOffline : 27.05.2008 14:54 | Problem s vypisom pri strankovani

asi v tom že ten POST neposielaš na ďalšiu stranu ... (ak som správen porozumel čo chceš)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.04.08
Prihlásený: 31.08.08
Príspevky: 37
Témy: 10 | 10
Napísal autor témyOffline : 27.05.2008 15:07 | Problem s vypisom pri strankovani

No myslel som, ze ten Post potrebuje len na select z databazy a uz len samotne vysledky rozdeli na stranky.. Ale mozno je to naozaj tym co vravis.. A ako teda zapisat, aby mi teda Post posielalo aj na dalsie stranky???


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3991
Témy: 96 | 96
NapísalOffline : 27.05.2008 15:09 | Problem s vypisom pri strankovani

no ja by som to riešil session


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.04.08
Prihlásený: 31.08.08
Príspevky: 37
Témy: 10 | 10
Napísal autor témyOffline : 30.05.2008 19:29 | Problem s vypisom pri strankovani

Nazdarek..No skusal som som pouzit to session..Funguje to, ale ma to taky mali zadrhel.. Totiz..ak si spravim formular (ako to mam uvedene v prispevku), tak do session start musim dat toto:

<?php
session_start();
if ($_POST["odesli"]) {

if(!Empty($_POST['pohlavie']));
$_SESSION['vzdelanie']=$_POST['vzdelanie'];
}

takto to funguje. Problem nastava pri refresh stranky.. Totiz vzdy ked ju refreshnem, tak mi na nej zobrazi vysledky z posledneho vyhladavanie.. A ak sa prekliknem na nu z inej stranky, tak mi berie rovno select
$_SESSION["vzdelanie"]=="vsetci"; Cize ten kt. mam nastaveny ako prvy select vo formulari..
Neviete mi niekto poradit ako to vyriesit?? lebo som skusal rozne kombinacie a fakt uz neviem co este vyskusat..


Offline

Skúsený užívateľ
Skúsený užívateľ
Problem s vypisom pri strankovani

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1772
Témy: 35 | 35
Bydlisko: BA - WESTSIDE
NapísalOffline : 30.05.2008 21:04 | Problem s vypisom pri strankovani

No, tak sa nad tým trochu zamyslime... $_POST premenná sa vytvorí len bezprostredne po odoslaní formuláru. Jej argumenty sú v HTTP požiadavku skryté, takže ich nemožno odsledovať. Pri refreshnutí odoslanej stránky sa odosiela opäť POST požiadavka (na čo slušný prehliadač upozorní, pretože väčšinou nechceme údaje odosielať dvakrát - napr. pri posielaní príspevku sem do fóra).

Čo však v tomto prípade robíme, je len jednoduchý výber údajov z databázy. Nemeníme dáta v databázi a zároveň potrebujeme stránkovať - tj vygenerovať viacero rôznych stránok, ktoré ale závisia od toho, ako sme vybrali tú prvú.

Riešenie pomocou $_SESSION zlyhalo. Prečo? Pretože údaje sa síce do $_SESSION zapíšu, avšak po prechode na inú stránku tam ostanú a pri opätovnom návrate sa aplikácia tvári, že dáta už boli odoslané. Riešiť by sa to dalo zrušením $_SESSION na vhodnom mieste, avšak to nie je úplne triviálne, keďže jediný funkčný spôsob by bolo na všetky stránky okrem stránok s výsledkom daného formulára dať kontrolu na existenciu $_SESSION - čo je nesystémové, nepraktické a neefektívne.

Skutočné riešenie totiž spočíva inde. Dáta POST requestom nemeníme, taktiež neposielame žiadne citlivé dáta. Preto je správne pri odosielaní namiesto metódy POST použiť metódu GET a pri stránkovaní ponechať vygenerovaný GET string na všetky stránky v stránkovaní. Presne pre takéto prípady existuje rozdiel medzi GET a POST (ak by si mi neveril, skús si čokoľvek vyhľadať v Googli a pozri sa na URL pri prechádzaní stránok v stránkovaní).

A naozaj, pri použití GET namiesto POST naše problémy zmiznú.

Takže po krátkom zamyslení a chvíli teoretizovania sme našli riešenie, čiže môžme ísť spokojne na :cheer: a zamýšľať sa o iných veciach ;) .


_________________
A. S. Tanenbaum píše:
The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.04.08
Prihlásený: 31.08.08
Príspevky: 37
Témy: 10 | 10
Napísal autor témyOffline : 31.05.2008 8:59 | Problem s vypisom pri strankovani

p306t .. Tak toto je vyklad hodny pochvaly.. Naucne a vtipne.. :D Diik..Hned ako sa dostanem k PC,na ktorom robim na stranke tak to skusim..


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.04.08
Prihlásený: 31.08.08
Príspevky: 37
Témy: 10 | 10
Napísal autor témyOffline : 01.06.2008 12:03 | Problem s vypisom pri strankovani

p306t.. Tak som skusil to strankovanie s metodou GET.. A nefunguje to.. Totiz, ak som pouzil GET bez session, tak to zobrazi vysledky len na prvej stranke. Na dalsich strankach mi uz nezobrazilo nic. Pri pouziti session a GET, som narazil na ten isty problem..Totiz, strankovanie sice fungovalo no pri kazdom refreshi stranky mi zobrazilo vysledky posledneho vyhladavanie...cize som sa dostal na zaciatok mojho problemu.. :cry: Nemohol by mi niekto hodit link kde je nejake strankovanie ale 100% funkcne, alebo nebol by niekto ochotny upravit, resp. ukazat mi na skripte, ktory som tu hodil, ako to ma byt spravne??


Offline

Skúsený užívateľ
Skúsený užívateľ
Problem s vypisom pri strankovani

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1772
Témy: 35 | 35
Bydlisko: BA - WESTSIDE
NapísalOffline : 01.06.2008 14:07 | Problem s vypisom pri strankovani

No lebo si nečítal pozorne.
p360t píše:
...a pri stránkovaní ponechať vygenerovaný GET string na všetky stránky v stránkovaní.
To znamená, že každá stránka v stránkovaní bude mať url tvaru
Citácia:
http://www.nieco.sk/niekde/subor.php?page=CISLO&vzdelanie=NIECO
Len tak zmeniť POST na GET samozrejme nepomôže, lebo to bude úplne rovnaký HTTP požiadavok, akurát v prípade GET budú odoslané údaje v HTTP hlavičke.

Realizácia je taká, že odkazy, ktoré budú tvoriť to stránkovanie budú vyzerať nejak takto:
Kód:
<a href="subor.php?page=1&vzdelanie=<?php echo $_GET['vzdelanie'];?>">stranka 1</a>
<a href="subor.php?page=2&vzdelanie=<?php echo $_GET['vzdelanie'];?>">stranka 2</a>
<a href="subor.php?page=3&vzdelanie=<?php echo $_GET['vzdelanie'];?>">stranka 3</a>

Avšak musím ťa ešte upozorniť na jednu vec: premennú $_GET['vzdelanie'] musíš kontrolovať, aby nikto nemohol na stránku vložiť škodlivý kód (to znamená použiť funkcie ako strip_tags(), htmlspecialchars() atď).


_________________
A. S. Tanenbaum píše:
The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.04.08
Prihlásený: 31.08.08
Príspevky: 37
Témy: 10 | 10
Napísal autor témyOffline : 01.06.2008 20:19 | Problem s vypisom pri strankovani

No ja neviem kde robim chybu, ale mne to stale nejde..Upravil som ten odkaz nasledovne :
$prev = " <a href=\"$self?page=$page&vzdelanie=<?php echo $_GET['vzdelanie'];?>\">[Prev]</a> ";

a vypisuje mi to v kuse toto chybove hlasenie:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in W:\domains\xxx..xxx\stranky.php on line 68


Offline

Skúsený užívateľ
Skúsený užívateľ
Problem s vypisom pri strankovani

Registrovaný: 30.05.06
Prihlásený: 08.10.14
Príspevky: 1772
Témy: 35 | 35
Bydlisko: BA - WESTSIDE
NapísalOffline : 01.06.2008 20:30 | Problem s vypisom pri strankovani

Počuj, ešte na jednu vec ťa musím upozorniť. Keď sem dám príklad, kus nejakého kódu, tak to neznamená, že ho máš bezhlavo skopírovať a o nič sa nestarať, ale naopak, máš si ho prečítať, pochopiť (ak nepochopíš, tak požiadaj o ďalšie vysvetlenie) a nakoniec vyskúšať (ak nefunguje pokúsiť sa z chybového hlásenia zistiť, čo sa stalo a pokúsiť sa to opraviť).

V tom príklade je výpis premennej $_GET['vzdelanie'] akoby zasadený do okolitého HTML kódu. Ty používaš vypisovanie HTML pomocou PHP kódu (čo sú vo výsledku ekvivalentné postupy) a preto si to musíš upraviť:
Kód:
$prev = " <a href=\"$self?page=$page&vzdelanie=\"".$_GET['vzdelanie']."\">[Prev]</a> ";


Navyše, nemôžeš veciam len tak slepo dôverovať, je možné, že aj ja som spravil chybu (ale to neznamená, že ty nie si schopný ju odhaliť - naopak, si, tak sa o to aspoň pokús).


_________________
A. S. Tanenbaum píše:
The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice.
Offline

Užívateľ
Užívateľ
Problem s vypisom pri strankovani

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3128
Témy: 233 | 233
Bydlisko: Nové Zámky
NapísalOffline : 01.06.2008 20:55 | Problem s vypisom pri strankovani

nato, aby si miesto POST, alebo SESSION (to bol teda fakt dobry nezmysel, to ta jak napadlo Tominator??? omg ) pouzil GET, musis si prerobit cely kod... funguje to totalne inak..

nezabudni, ale preistotu vsetky tie GET osetrit, predtym ako ich capnes do vyberu z DB.. nikdy nevies, kto co bude skusat...
(ked si pozres inac hocijaku stranku so strankovanim, vsade to ide cez get)


_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.04.08
Prihlásený: 31.08.08
Príspevky: 37
Témy: 10 | 10
Napísal autor témyOffline : 02.06.2008 13:26 | Problem s vypisom pri strankovani

p306t.. No ci mi veris alebo nie, tak ja som fakt najprv skusal..Nie len bezhlavo skopiroval..ale neslo mi to :-)) K tomu php kodu :
bola tam taka mala chybicka ( \" ), takze takto to funguje ( pre zaciatocnikov ako som ja, ktori by to chceli tiez pouzit :-) ):
$prev = " <a href=\"$self?page=$page&vzdelanie= ".$_GET['vzdelanie']."\">[Prev]</a> ";

No teraz ma zaujima dalsia vec. A to je to zabezpecenie. Hladal som na nete cosi k HTMLSpecialChars. Narazil som len na nejake zdrojaky no a z toho som nejako vydedukoval, ze by to malo vyzerat asi takto:
Na zaciatok skriptu som si dal
$xyz = $_GET["vzdelanie"];
$xyz = HTMLSpecialChars($xyz);

No a potom do SQL selectu :
SELECT meno FROM register where (vzdelanie='".$xyz."') LIMIT $offset, $rowsPerPage
a odkazu :
$prev = " <a href=\"$self?page=$page&vzdelanie=".$xyz."\">[Prev]</a> ";

Lenze nejako som nespozoval nijake zmeny(mozno som ani ziadne nemal :D )
Tak ma zaujima, ci som to HTMLSpecialChars spravne pouzil, ak ano,tak ci to postacuje taka ochrana a ak nie, tak ako by to malo byt spravne..Alebo nejaky dobry link, kde to pochopi aj taka lama ako ja.. :shock:

Dik


 [ Príspevkov: 13 ] 


Problem s vypisom pri strankovani



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Vyber pri strankovani

v PHP, ASP

4

315

23.10.2008 17:23

newboy1

V tomto fóre nie sú ďalšie neprečítané témy.

odkaz pri strankovani

v PHP, ASP

13

466

25.05.2008 17:19

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

Zobrazenie len casti z clanku pri strankovani medzi vsetkymi

v PHP, ASP

9

336

28.04.2011 2:13

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

PHP,MySQL problem s vypisom

v PHP, ASP

7

296

18.05.2010 17:10

Ecko

V tomto fóre nie sú ďalšie neprečítané témy.

Problem s vypisom zo suboru C

v Assembler, C, C++, Pascal, Java

4

190

01.04.2012 12:47

gaspa10

V tomto fóre nie sú ďalšie neprečítané témy.

Problem s vypisom textu cez kresliaceho robota

v Delphi, Visual Basic

2

625

21.10.2008 19:06

chiwo

V tomto fóre nie sú ďalšie neprečítané témy.

php,mysql strankovani

[ Choď na stránku:Choď na stránku: 1, 2 ]

v PHP, ASP

32

1877

28.08.2009 17:21

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

pomoc s vypisom z databázy

v PHP, ASP

2

205

29.03.2009 15:05

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

Pomoc s PHP vypisom MySQL databazy

v PHP, ASP

8

673

14.05.2008 14:55

eMPiko

V tomto fóre nie sú ďalšie neprečítané témy.

Problem pri inštalacii

v Ostatné programy

1

720

06.07.2008 13:02

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

problem pri starte

v Biosy a ladenie výkonu

12

459

11.06.2010 18:17

anonym88

V tomto fóre nie sú ďalšie neprečítané témy.

Problem pri instalacii

v Operačné systémy Microsoft

2

211

27.10.2009 1:49

deCode666

V tomto fóre nie sú ďalšie neprečítané témy.

Problem pri instalacii

v Pevné disky a radiče

1

328

28.11.2007 22:47

Jaro

V tomto fóre nie sú ďalšie neprečítané témy.

Problem pri photoshope

v Grafické programy

3

165

27.07.2012 21:11

magic

V tomto fóre nie sú ďalšie neprečítané témy.

Problém pri hre

v ATI/AMD grafické karty

10

497

18.12.2008 19:45

Enermax

V tomto fóre nie sú ďalšie neprečítané témy.

Problem pri zapinani

v nVidia grafické karty

14

513

09.03.2008 10:16

mirec9580



© 2005 - 2017 PCforum, edited by JanoF