Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Malo case-a malo CMSa

[es] :: PHP :: Malo case-a malo CMSa

[ Pregleda: 3550 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Zlatiborac
Vladimir
Zlatibor

Član broj: 5397
Poruke: 117
*.vdial.verat.net.

Sajt: www.dphotonews.com


Profil

icon Malo case-a malo CMSa30.11.2004. u 18:20 - pre 235 meseci
Imam sledeci, da kazem problem.

Pravim omanji CMS za svoj sajt, pa sam upao u manje probleme. O chemu se radi.

Kada se udje u admin deo sajta, administrator ili neki drugi korisnik dobija nekoliko linkova .,., npr. vesti, nekretnine ....
Klikom na neki od ponudjenih linkova preko
akcije.php?prikaz=vesti

prelazim na stranu koja prikazuje sadrzaj u zavisnosti od izabranog linka.
To radim pomocu case komandi .,., znachi ovako :

$sta_raditi = $_GET["prikaz"];
switch($sta_raditi) {

case "vesti":
print " ...... ";
break;

case"nekretnine":
print "...... ";
break;

.....

}

E sada u chemu je problem. Kada se odradi neki od case-ova (uglavnom su neke forme unutra) ja moram da mu kazem na koju stranu da predje. Ali shta raditi kada imash 10ak linkova? Mislim da je malo glupo imati toliko strana.,.,., sada, da li na osnocvu case-a moze nekako da se neki od parametara prenese na sledecu stranu na kojoj bi i obavio akciju. Kako to izvesti najlakshe. Da li ici na sesije ili imate neku drugu ideju.
Sajt sa dnevnim vestima vezanim za fotografiju, foto aparate i obradu slika
[url]http://www.dphotonews.com[/url]
 
Odgovor na temu

NetworkAdmin

Član broj: 4445
Poruke: 609
*.bbone.utic.net.ba.



Profil

icon Re: Malo case-a malo CMSa30.11.2004. u 20:31 - pre 235 meseci
Ovo sto ti pises je klasican problem ne samo za admin nego i za sve aplikacije koje imaju tok akcija-prikaz

Vidi ovako najlakse bi ti bilo da radiss ovako... u formi stavis polje "hidden" akcija i u nju value sta radis i svaka forma da ima svoje akcija polje

u gornjem djelu skripte (ili u odvojenoj skripti) stavis switch

if(isset($sta_raditi)) unset($sta_raditi);
if(isset($_GET['akcija']){
$sta_raditi= $_GET['akcija'];
}elseif(isset($_POST['akcija']){
$sta_raditi= $_POST['akcija'];
}


if(isset($sta_raditi)) {
switch($sta_raditi) {

case "snimi_vest":
// ovdje kod
//diskonektovat ise sa boze i pozatvarati fajlove ako treba
header("Location: pun_url_do_skripte/filename?prikaz=prikaz_koji_zelis_nakon_ove_akcije");
exit; // ne skodi
break;

case"obrisi_vest":
// isto kod koji treba da se izvrsi pokupis varijable iz GET ili POST i uradis na fajlovima i bazi sta treba
//duskonekcija sa baze zatvori faljove
// redirekcija sa header Location
break;
}
}

Ovo gore ti je "akcijski dio skripte ako se ne radi o akciji onda ides na prikaze slicno tvome primjeru.

$sta_prikazati = $_GET["prikaz"];
switch($sta_prikazati) {

case "vesti":
print " ...... ";
break;

case"nekretnine":
print "...... ";
break;

.....

}

Nadam se da ti je sada puklo pred ocima.
 
Odgovor na temu

Zlatiborac
Vladimir
Zlatibor

Član broj: 5397
Poruke: 117
*.vdial.verat.net.

Sajt: www.dphotonews.com


Profil

icon Re: Malo case-a malo CMSa30.11.2004. u 20:51 - pre 235 meseci
Puklo me je u glavu .,.,.,. moram da pogledam manual da vidim chemu tachno sluze te komande koje pominjesh u pochetku skripta .,.,.,., ali nadam se da cu skontati .,., kao i uvek od tebe ide potochic znanja ali taj potochic negde ponire :) pa treba naci gde izvire ponovo .,.,.,
Sajt sa dnevnim vestima vezanim za fotografiju, foto aparate i obradu slika
[url]http://www.dphotonews.com[/url]
 
Odgovor na temu

noctua

Član broj: 10671
Poruke: 185
*.rcub.bg.ac.yu.



Profil

icon Re: Malo case-a malo CMSa01.12.2004. u 09:30 - pre 235 meseci
Pozdrav!

Khm, khm... Mozda resenje za tvoj problem lezi na sasvim drugim putevima.
Mislim, prethodni savet je sasvim OK, a ja ti predlazem da pogledas nesto o metodologijama. Za pocetak baci oko na FuseBox: http://www.fusebox.org/ a ako ti se to prisvidi, mozes da krenes dalje.
O cemu se tu radi?
FuseBox je stil programiranja primenjiv u mnogim jezicima... a podrzava i MVC i jos ponesto...
Da maksimalno banalizujem:
- svaki modul tvog sistema je Box (dakle: VESTI su jedan Box, NEKRETNINE su drugi Box, LOGIN/LOGOUT/AUTHORIZATION je sledeci Box itd...)
- svaki Box ima svoj direktorijum
- svaki direktorijum ima index.php (ili index.asp ili index.html ili koji_god_vec_jezik_korstis) fajl!!! (Ovim se resava M N O G O toga. Pocev od kontrole pristupa folderu pa na dalje... )
- svaki Box ima neke akcije koje se obavljaju u njemu - FuseAction (kod tebe bi bilo fuseaction=snimi_vest, fuseaction=obrisi_vest, itd...)
- svaki index fajl u sebi ima samo SWITCH(fuseaction) (u okviru koga su INCLUDE direktive)
- sa INCLUDE pozivas delove koda koji se izvrsavaju na odnovu fuseaction
- itd, itd...
- U okviru metode postoje jos mnoge lepe stvari: oblast vazenja parametara iz GET,POST,SESSION,FILE...
- Maksimalan code-reuse!!! Kao sto i sam zakljucujes, mnoge akcije se ponavljaju u raznim delovima sajta; npr brisanje necega iz baze. Napises jednom kod (ili upotrebis vec gotovu klasu) koji brise iz tabele polje sa zadatim ID-om. A kasnije, kada je potrebno, samo pozivas tu funkciju/klasu i prosledjujes samo ime tabele i ID. Tako sa jednom jedinom funkcijom imas brisanje iz baze na celom sajtu! Ili, i unos novih i izmena postojecih podataka se moze raditi iz jedne iste forme. Ili... zapravo, sve sto se moze ponoviti!

Dakle, resenje tvog problema bi (u ovom trenutku, hipoteticki gledano) bilo:
-------------------------------------------------------------------------------------
index.php - u root-u site-a
...
// ovde ide settings i get_parametars
SWICH($fusebox){
case "vesti":
include(/relativna_putanja_do_boxa_ili_ako_ti_bas_volja_do_index-a_u_boxu);
break;
case"nekretnine":
include(/relativna_putanja_do_boxa);
break;
case"login":
include(/relativna_putanja_do_boxa);
break;
case"sta_god_vec":
include(/relativna_putanja_do_boxa);
break;
Default:
include(/relativna_putanja_do_error_boxa)
}
...
-------------------------------------------------------------------------------------

index.php - u boxu VESTI
... // seetings, getparameters
SWICH($fuseaction){
case "snimi_vest":
include(/relativna_putanja_do_fajla_gde_radis_obradu_za_simanje);
// u okviru prethodnog fajla odradis i proveru da li je sve proslo kako treba i postavis npr $error
if ($error) {
include(/relativna_putanja_do_fajla_gde_se_prikazuju_obavestenja);
} else {
include(/relativna_putanja_do_fajla_gde_se_prikazuju_podaci_ili_neki_template);
}
break;
case"obrisi_vest":
include(/relativna_putanja_do_fajla_gde_se_provera_za_brisanje);
// ako je moguce brisanje postavis $indikator
if ($indikator) {
include(/relativna_putanja_do_fajla_gde_se_prikazuju_obavestenja);
} else {
include(/relativna_putanja_do_fajla_gde_se_vrsi_brisanje);
include(/relativna_putanja_do_fajla_koji_se_prikazuje_po_uspesnom_brisanju);
}

break;
case"unesi_novu_vest":
...
break;
case"sta_god_vec":
....
break;
Default:
include(/relativna_putanja_do_error_boxa)
}
...
-------------------------------------------------------------------------------------

A u samim fajlovima idu delovi koda... hm... pa tvoj kod :)

-------------------------------------------------------------------------------------

E, sad... u okviru FUSEBOX-a postoji gotova php klasa koja ima implementirane mnoge metode. Jedna od njih je i sakupljanje svih mogucih parametara sa stranice tako da imas u jednom nizu i sve iz POST-a i iz GET-a i iz SESSION-a i iz ... samo moras voditi racuna da su ti imena polja i nazivi u url-u i sesiji jedinstveni.
Dakle, ti nista ne brines o tome kako preneti parametre. Dovoljno je da ih imas (ili u formi ili u url-u) a klasa ce ih pokupiti i servirati ti ih na sledecoj strani ma koja on bila...

PS. Znam da je sve ovo konfuzno na pocetku ali kada probas jednom, i kada se steknes osnovne pojmove zapitas se: KAKO LI UOPSTE LJUDI ZIVE BEZ OVOGA?????

PPS. Ako gledas sajt nemoj da te zbuni sto je skoro sve pisano za ColdFusion... Postoji to isto i za PHP i za ASP i za JSP i za... Bitna je metoda!!!
http://noctua4u.blogspot.com
http://moourl.com/shfb0
..:: Aquila non captat muscas ::..
 
Odgovor na temu

Zlatiborac
Vladimir
Zlatibor

Član broj: 5397
Poruke: 117
*.vdial.verat.net.

Sajt: www.dphotonews.com


Profil

icon Re: Malo case-a malo CMSa01.12.2004. u 17:59 - pre 235 meseci
Pazi, imamo i smarty ako cemo vec da generalizujemo problem. Ne zelim gotovo reshenje vec me interesuje sam core, kako to radi.
Ako ja uspem da napravim to sam, i skontam kako to fercera, onda mogu preci na neki temp sistem tipa Smarty koji bi mi samo smanjio vreme potrebno da zavrshim projekat.
Ali to shto predlazesh je da sednem u F16 a da prvo nisam nauchio da pilotiram, zar ne?
Sajt sa dnevnim vestima vezanim za fotografiju, foto aparate i obradu slika
[url]http://www.dphotonews.com[/url]
 
Odgovor na temu

Zlatiborac
Vladimir
Zlatibor

Član broj: 5397
Poruke: 117
*.vdial.verat.net.

Sajt: www.dphotonews.com


Profil

icon Re: Malo case-a malo CMSa01.12.2004. u 18:02 - pre 235 meseci
Donekle dobro ide. Sada samo imam sledeci problem kada probam da koristim header komandu.,., a i nije prvi put da mi se deshava

Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\zlatibor3\adm1n\izvrshi.php:24) in C:\Program Files\Apache Group\Apache2\htdocs\zlatibor3\adm1n\izvrshi.php on line 28

Linija 28 glasi

header("Location: admin.php");

da napomenem da se svi fajlovi nalaze u istom diru.,.,.,.,
Zoka je napisao da je potrebna apsolutna putanja.,.,., da li relativna moze da prodje?
Sajt sa dnevnim vestima vezanim za fotografiju, foto aparate i obradu slika
[url]http://www.dphotonews.com[/url]
 
Odgovor na temu

afwt
AF Web Team
Novi Sad/Chicago

Član broj: 8220
Poruke: 337
*.ftn.ns.ac.yu.

Sajt: milos.srdjevic.net/blog


+1 Profil

icon Re: Malo case-a malo CMSa02.12.2004. u 01:53 - pre 235 meseci
nije tu problem tu, nego ti skripta u onom drugom fajlu na liniji 24 shalje neshto, a header() ide PRE BILO KOG ISPISA.
Mozda ti je ostao prazan red posle ?> na kraju fajla...
ZelenaLutrija.com - Saznajte sve o lutriji za zelenu kartu (doživotni boravak u Sjedinjenim Američkim Državama)
 
Odgovor na temu

[es] :: PHP :: Malo case-a malo CMSa

[ Pregleda: 3550 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.