Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ 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
Príspevok NapísalOffline : 27.05.2008 13:39

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: 3984
Témy: 96
Príspevok NapísalOffline : 27.05.2008 14:54

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
Príspevok Napísal autor témyOffline : 27.05.2008 15:07

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: 3984
Témy: 96
Príspevok NapísalOffline : 27.05.2008 15:09

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
Príspevok Napísal autor témyOffline : 30.05.2008 19:29

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: 1756
Témy: 35
Bydlisko: BA - WESTSIDE
Príspevok NapísalOffline : 30.05.2008 21:04

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
Príspevok Napísal autor témyOffline : 31.05.2008 8:59

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
Príspevok Napísal autor témyOffline : 01.06.2008 12:03

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: 1756
Témy: 35
Bydlisko: BA - WESTSIDE
Príspevok NapísalOffline : 01.06.2008 14:07

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
Príspevok Napísal autor témyOffline : 01.06.2008 20:19

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: 1756
Témy: 35
Bydlisko: BA - WESTSIDE
Príspevok NapísalOffline : 01.06.2008 20:30

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: 3114
Témy: 233
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 01.06.2008 20:55

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
Príspevok Napísal autor témyOffline : 02.06.2008 13:26

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


Odpovedať na tému [ Príspevkov: 13 ] 


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

444

23.10.2008 17:23

newboy1 Zobrazenie posledných príspevkov

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

v PHP, ASP

13

757

25.05.2008 17:19

stenley Zobrazenie posledných príspevkov

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

667

28.04.2011 2:13

JanoF Zobrazenie posledných príspevkov

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

v PHP, ASP

7

494

18.05.2010 17:10

Ecko Zobrazenie posledných príspevkov

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

358

01.04.2012 12:47

gaspa10 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problem s vypisom textu cez kresliaceho robota

v Delphi, Visual Basic

2

820

21.10.2008 19:06

chiwo Zobrazenie posledných príspevkov

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

2336

28.08.2009 17:21

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pomoc s vypisom z databázy

v PHP, ASP

2

376

29.03.2009 15:05

stenley Zobrazenie posledných príspevkov

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

v PHP, ASP

8

1028

14.05.2008 14:55

eMPiko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. problém pri inštaláci

v Počítačové hry

8

360

16.03.2020 16:17

zimCol Zobrazenie posledných príspevkov

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

v Redakčné systémy

6

426

05.02.2007 10:43

dulius Zobrazenie posledných príspevkov

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

v Počítačové hry

10

632

11.01.2009 11:53

elboro Zobrazenie posledných príspevkov

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

v Operačné systémy Unix a Linux

5

1505

02.11.2006 11:43

itsgoingd Zobrazenie posledných príspevkov

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

v Operačné systémy Microsoft

2

407

18.03.2009 15:25

ferri222 Zobrazenie posledných príspevkov

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

v Biosy a ladenie výkonu

2

688

07.10.2007 12:14

Tomas1 Zobrazenie posledných príspevkov

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

v Pevné disky a radiče

1

591

28.11.2007 22:47

Jaro Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra