PHP/MySQL meni

poruka: 4
|
čitano: 2.223
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
PHP/MySQL meni

Pozdrav,

 

relativni sam pocetnik u php-u, pa bih vas zamolio za malo pomoci. Trenutno radim na jednom php/mysql meniju kao dijelu nekog jednostavnog CMS-a koji ce omoguciti korisnicima da sami odrede koje stavke zele u meniju i njihov poredak, pa sam zapeo kod administracije. Napravio sam mysql tablicu i imam php kod za ispis stavaka, ali me sada muci kako omoguciti korisnicima da oni odredjuju poredak stavaka. Ako npr. imam glavnu stavku Novosti i u nju spadaju recimo Arhiva, Najnovije i Najcitanjije, kako sada implementirati da korisnici odredjuju koja ce stavka biti prva, druga, a koja zadanj. Da li ce se prvo pojaviti Arhiva ili Najnovije ili Najcitanije. Jel bi se to uopce dalo rjesiti preko php-a ili bi trebao javascript? Ja sam stavio u bazi da svaka stavka ima Nivo na kojem se nalazi i Poredak. Poredak se odredjuje brojem 1, 2 itd. ovisno na kojem mjestu zeli da stavka bude. Sada bi ja htio da se korisniku omoguci da kad recimo pritisne gumb za poredak gore da se stavci za koju on zeli da bude prije neke druge stavke promijeni Poredak u minus 1, a onoj stavci koja je do sada bila prije te stavke za plus 1. Nadam se da nisam previse zakomplicirao stvari! :)

Svaka pomoc je dobrodosla, moze i neki linkovi!

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: PHP/MySQL meni
Subi kaže...

.. Sada bi ja htio da se korisniku omoguci da kad recimo pritisne gumb za poredak gore da se stavci za koju on zeli da bude prije neke druge stavke promijeni Poredak u minus 1, a onoj stavci koja je do sada bila prije te stavke za plus 1. 

 

pa napravi bas to sto si rekao :) .. radi jednostavnosti ces trebati dvije funkcije (može i jedna al nek bude ovako), nazovimo ih up( $id ) (s njom ces pomicati stavak prema gore tj. smanjivati mu indeks poretka) i down( $id ) (obrnuto od up). One primaju id onog stavka kojeg želiš pomaknuti gore ili dolje. 

 

Ove dvije funkcije se razlikuju u sljedećem: ako želiš pomaknuti recimo neki stavak iz menia prema gore, onda moraš njemu smanjiti indeks poretka, a onom iznad njega povećati indeks poretka. Ako želiš pomaknuti stavak prema dolje, onda njemu moreaš povećati indeks poretka, a onom ispod njega smanjiti.

 

Ja sam kod sebe to izveo zamjenom indeksa poretka, ali može i ovako :)

 

Dakle, uzet ćemo funkciju up za primjer:

Trebaš dohvatiti iz baze red sa id-em tog stavka menia. Pretpostavljam da znaš kako se to radi. Nakon toga, trebaš iz baze dohvatiti red koji zadovoljava sljedeće: razina izbornika mu mora biti ista kao i ona kojeg želiš pomaknuti i indeks poretka mu mora biti za jedan manji od indeksa onog kojeg želiš pomaknuti (kod funkcije down bi bilo za jedan veci).

 

Ne moraš baš cijeli red iz baze dohvatiti, al nema veze. Sljedeće što moraš je jednom povecati indeks, drugom smanjiti (kako sam opisao gore) i pospremiti to nazad u bazu. I to je to :) 

 

Razliku između funkcija sam ti napisao pa mislim da ne bi trebao imati problema pri pisanju druge funkcije. Eto, nadam se da će pomoći :) Ako netko misli da sam pogriješio ili da postoji neki lakši način molim vas ispravite me :)

15 godina
neaktivan
offline
PHP/MySQL meni

E dobro, zahvaljem, budem isprobaval tak nesto! :)

Sad me samo zanima kak rijesiti te gumbe. Postoji nacin da se klikom na link pokrene funkcija? Ili moram za svaki gumb bas napraviti <form><input type="button" ...></form> dio gdje ce se pozivati funkcija? Kasnije imam u planu da zamijenim taj gumb nekom slicicom koja prikazuje strelicu gore ili dolje... tako nesto... Moze neki prijedlog kak da to rijesim?

Poruka je uređivana zadnji put uto 1.9.2009 22:26 (Subi).
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: PHP/MySQL meni

 

možeš linkom: upotrijebiš GET metodu za dovbavu varijabli iz linka. Na primjer ovako, napraviš link za up:

 

<a href="./page.php?do=up&id=1"><img src="up.jpg" alt="up" /></a>

 

A u page.php prije ispisa bilo čega staviš ovo:

 

$do = @$_GET['do']; // dobavlja vrijednost varijable do iz linka

$id = @$_GET['id']; // isto za id

 

switch($do)

{

      case "up":

          up($id);

          break;

      case "down":

          down($id);

          break;

}

 

Znak @ sluti da ti ne javlja grešku ili uzpozorenje ako u linku  ne postoji do ili id.. Dakle, to moraš staviti prije bilo kakvog ispisa, ili, još bolje bi bilo da nakon poziva funkcije redirektaš ponovo na page.php, ovako:

 

switch($do)

{

      case "up":

          up($id);

          header("Location: ./page.php"); // die() ide zato jer se nakon naredbe header ostatak skripte izvrši pa se tek onda redirekta, dodavanjem die() funkcije, odmah

          die(); // prekidaš skriptu i redirektaš.

          break;

      case "down":

          down($id);

          header("Location: ./page.php");

          die();

          break;

}

 

Nadam se da je pomoglo :)

 

 

P.S. Ispricavam se što je ovako možda malo nečitljiv kod, ali ovaj njihov wysiwyg me tako iznervirao da sam na kraju morao ovako sve napisati...

Poruka je uređivana zadnji put sri 2.9.2009 14:17 (br0wn).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice