[ TheBatA @ 18.12.2004. 22:42 ] @
Evo imam ovakav problem.
Imam jednu php stranicu( npr. unos.php) u kojoj unosim potrebne podatke.Zatim te podatke koristim na drugoj stranici (npr obrada.php). E, sad, obrada.php treba da mi prikaže podatke iz MySQL baze, ali da pritom prikazuje prvih n zapisa, pa klikom ne dugme sledećih n zapisa itd.
Kako da prosledim podatke sa unos.php na stranicu koja ce da prikazuje drugih n ili trećih n podataka?
Probao sam sa sesijama, koje rade kod mene na računaru, ali kad ih uploadujem na web server, ne funkcionišu. Da li postoji još neki način za prosleđivanje?
[ vdambo @ 18.12.2004. 22:56 ] @
Probaj da ubacis podatke koje prosledjujes u URL. Ili da mozda napravis formu sa hidden tagovima i umesto linka na 'narednih 100 komata' prikaza stavis dugme sa 'narednih 100 komata'.
[ bluesman @ 19.12.2004. 00:21 ] @
Mozes i sesijama ali je bolje da prenosis varijablu.

Evo najprostijeg primera (kompletnog sistema) a nekada mogu i hint-ovi da pomognu

Imas varijablu $page koja je na pocetku uvek 1 a kasnije $_GET['page'] jer je prenosis kao varijablu, onda racunas koliko imas recorda u toj tabeli (to radis na pocetku strane u svakoj egzekuciji scripta jer je moguce da se broj recorda promeni izmedju 2 egzekucije)

select count(*) from ...

i dobije, na primer $total_records = 475;

ako recimo odlucis da imas to 50 recorda po strani, imas varijablu

$records_per_page = 50;

i racunas

$total_pages = ceil($total_recors / $records_per_page);
znaci dobicemo u primeru ceil(9,5) sto mu daje 10;

i onda poredjas linkove
for ($i = 1; $i <= $total_pages; $i++)
echo "<a href='".$_SERVER['PHP_SELF']."?page=".$i."'>$i</a> ";

dobices linkove poredjanje u fazonu: 1 2 3 4 5 6 7 8 9 10

kada neko klikne na recimo 3 prebacuje se varijabla $_GET['page'] = 3

da bi provalio odakle-dokle treba ra radis query, moras jos malo da racunas:

$from = ($_GET['page']-1) * $records_per_page

znaci, za $page = 1 dobijes $from = 0, za $page = 2, dobijes $from = 50... itd

a onda radis query

SELECT * FROM ... LIMIT $from, $records_per_page

i to bi bilo to - nije uopste komplikovano.

Hint: moras da pazis jer je moguce da imas recimo 3045 strana sto je totalno suludi prikazati kao linkove. Dakle, treba da odlucis i koje strane prikazujes pa mozes da uvedes jos i $display_page_count = 20 pa ce i se uvek prikazivati samo 20 strana ako uradis recimo

$page_start = $page - intval ($display_page_count / 2);
$page_end = $page + intval ($display_page_count / 2);

ali moras da pazis da ne odes u minus, jer za $page = 3 dobices $page_start = -7 sto je glupo, pa rasi proveru

if ($page_start < 1) $page_start=1;
ali onda opet moras da promenis i $page_end = $page_start + $display_page_count

isto tako moras da radis proveru da li je $page_end > $total_pages... alo to mozes verovatno i sam, slicno je kao za start.

// napomena: ovo je pisano ovako iz glave, mozda ima neka slovna greska, da ne bude posle "kod ne radi". Ovo sam napisao ovako opsirno zato sto je dosta ljudi pitalo upravo ovo.
[ TheBatA @ 20.12.2004. 00:43 ] @
OK je to, to razumem, nego da preformulišem problem:
na prvoj stranici imam nekoliko vrednosti koje bih hteo da koristim dalje realizovanih pomoću :
<input name="cena" type="text">...
i
<select name="proizvodjac" id="proizvodjac" >
<option value="0">nekitext</option>
...
koje se nalaze u formi čiji je action="druga.php".
e, sad ja to na drugoj stranici pozovem pomoću $_GET["cena"] i sl, i to sve lepo funkcioniše.
Problem se javlja kada pozovem $_SERVER['PHP_SELF'] pomoću linka ili dugmeta.
Dobijam poruku:

Notice: Undefined index: cena in c:\program files\apache\apache\htdocs\druga.php on line 41

kako da mu sačuvam cenu, da mogu posle pozivanja nekog od linkova da je opet koristim?
[ MileG @ 20.12.2004. 01:36 ] @
Posto i nisam bas najnaj razumio pitanje, prvo sto mi pada na pamet jeste da cijenu registrujes kao globalnu :o)

Promenjivu mozes na ostalim stranama da dobijes preko sesija:
session_start();
$_SESSION['cijena'] = $cijena;
i sa ostalih strana je pozivas:
session_start();
$cena = $_SESSION['cijena'];
tj. dostupna ti je svugdje.

Zasto uopste pozivas $_SERVER['PHP_SELF'] kad mozes fino
<form action="<? echo $PHP_SELF?>" method="get">
<input type="text" name="neko_ime">
<input type="submit"></form>

Ups... tek sad procita da ti sesije ne rade na serveru.
[ bluesman @ 20.12.2004. 01:36 ] @
Sorry, nista te ne razumem, kako to "pozovem $_SERVER['PHP_SELF']... ". Odakle, gde...?
[ TheBatA @ 21.12.2004. 18:34 ] @
Da preformulišem:
Trebaju mi vrednosti promenljivih u PHP-u nakon "Refresh"-a, pošto kad refreshujem stranicu, prethodno postavljene vrednosti mi nisu dostupne.
[ mordor @ 22.12.2004. 00:15 ] @
pa nemoj rifresovati samu stranicu vec rifresuj stranicu koja u url kveriju ima varijable