Pereiti prie turinio

PHP: meniu isdestymas ir konfiguravimas


Rekomenduojami pranešimai

Sveiki,

bandau parasyt pats CMS su PHP. Kodel rasau pats? nes manau tai geriausias budas ismokt programuot, negu ziuret ir ale "supratau" kazkuri koda :)

Taigi turiu TopMeniu kitaip tariant subject ir Submeniu (pages) Su subjektu isdestymu, kaip ir viskas tvarkoje, turiu funkcija:

function public_navigation_topmeniu($sel_subject, $public = true){
	$output = "<ul><li><a href=\"index.php\">Pradžia</a></li>";
	$subject_set = get_all_subject($public);
	while ($subject = mysql_fetch_array($subject_set)) {
   		$output .= "<li";
    	if ($subject["id"] == $sel_subject['id']) { $output .= " class=\"selected\""; }
    $output .= "><a href=\"index.php?subj=" . urlencode($subject["id"]) . 
	"\">{$subject["menu_name"]}</a></li>";
}
	$output .= "</ul>";
       return $output;
   }

A va su page isdestymu, jau kyla keblumu... funkcija:

    function public_navigation($sel_subject, $sel_page, $public = true){
$subject_set = get_all_subject($public);
while ($subject = mysql_fetch_array($subject_set)) {
    if ($subject["id"] == $sel_subject['id']) /*{ $output .= " class=\"selected\""; }*/
	if ($subject["id"] == $sel_subject['id']) {
		$page_set = get_pages_for_subject($subject["id"], $public);
		$output .= "<ul class=\"pages\">";
		while ($page = mysql_fetch_array($page_set)) {
		    $output .= "<li";
		    if ($page["id"] == $sel_page['id']) { $output .= " class=\"selected\""; }
		    $output .= "><a href=\"index.php?page=" . urlencode($page["id"]) .
			"\">{$page["menu_name"]}</a></li>";
	            }
		$output .= "</ul>";
	}
}
$output .= "</ul>";
       return $output;
   }

Taigi mano norai butu tokie:

Tema isdalinta i 2 kategorijas... isdestymas: n daliu vienoj vietoj o kitus kitoj vietoj

Kai pasirenku paskutine tema, man dinsgta visas sarasas... gal ka blogai padariau, nesuprantu...

 

P.S tikiuos suprantamai parasiau problema :)

 

Dekui uz pagalba :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki,

bandau parasyt pats CMS su PHP. Kodel rasau pats? nes manau tai geriausias budas ismokt programuot, negu ziuret ir ale "supratau" kazkuri koda :)

Taigi turiu TopMeniu kitaip tariant subject ir Submeniu (pages) Su subjektu isdestymu, kaip ir viskas tvarkoje, turiu funkcija:

function public_navigation_topmeniu($sel_subject, $public = true){
	$output = "<ul><li><a href=\"index.php\">Pradžia</a></li>";
	$subject_set = get_all_subject($public);
	while ($subject = mysql_fetch_array($subject_set)) {
   		$output .= "<li";
    	if ($subject["id"] == $sel_subject['id']) { $output .= " class=\"selected\""; }
    $output .= "><a href=\"index.php?subj=" . urlencode($subject["id"]) . 
	"\">{$subject["menu_name"]}</a></li>";
}
	$output .= "</ul>";
       return $output;
   }

A va su page isdestymu, jau kyla keblumu... funkcija:

    function public_navigation($sel_subject, $sel_page, $public = true){
$subject_set = get_all_subject($public);
while ($subject = mysql_fetch_array($subject_set)) {
    if ($subject["id"] == $sel_subject['id']) /*{ $output .= " class=\"selected\""; }*/
	if ($subject["id"] == $sel_subject['id']) {
		$page_set = get_pages_for_subject($subject["id"], $public);
		$output .= "<ul class=\"pages\">";
		while ($page = mysql_fetch_array($page_set)) {
		    $output .= "<li";
		    if ($page["id"] == $sel_page['id']) { $output .= " class=\"selected\""; }
		    $output .= "><a href=\"index.php?page=" . urlencode($page["id"]) .
			"\">{$page["menu_name"]}</a></li>";
	            }
		$output .= "</ul>";
	}
}
$output .= "</ul>";
       return $output;
   }

Taigi mano norai butu tokie:

Tema isdalinta i 2 kategorijas... isdestymas: n daliu vienoj vietoj o kitus kitoj vietoj

Kai pasirenku paskutine tema, man dinsgta visas sarasas... gal ka blogai padariau, nesuprantu...

 

P.S tikiuos suprantamai parasiau problema :)

 

Dekui uz pagalba :)

 

Skaidyk kodą į MCV, nes skauda galvą bandant suprast kodą.

P.S. laikykis stilistikos. Mano mėgiama yra CI stilistika: http://ellislab.com/codeigniter/user-guide/general/styleguide.html

P.P.S. Kaip silkė minėjo, nenaudok senų mysql_ funkcijų, metas pereit prie PDO.

Redagavo prodiger
Nuoroda į pranešimą
Dalintis kituose puslapiuose

galėtai veikiantį pavyzdį numest kas nesigauna ir kokie tavo tikslai (kaip turėtų atrodyt) nes čia kažką per sunkiai jau tu darai :D

Cms: demo.kaktusai.org

 

O realiai atrodo: http://kaktusai.org/pratarme.html

 

Siaip realiai pagalvojau "Meniu" ir "Kaktusų auginimas" padaryt, kaip viena.... tada nereiks skaidyt :) ir dar... manau reikia skaidyt pagrindi meniu i atskirus failus, bent jau atkris galvos skausmas: temos pavadinimas ir sarasas :)

 

Silke dekui uz patarima :) perdarysiu

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gali ir mysqli, tesiog PDO daugiau palaiko. Ir aplamai naudok rekursija, jei cia idarbinimo testas.

 

Daugiau palaiko? Konkretumo. PDO turi prepared statements (paruoštas užklausas) kliento pusėje, o MySQLi naudoja Native MySQL API, gali parametram skirti vardus, veikia su 12 duomenų bazių sistemų.

Redagavo prodiger
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tiesa pasakius labai nesigilinau, bet kodel ne mysqli o PDO? :)

 

O man atrodo, kad visai šiaip sau.

Jei nepratęs prie objektinio programavimo, tai mysqli labiau patiks.

Ir niekas nemuš, kol nesugalvosi naudoti mysql_* :)

 

PDO vieninteli trūkumai yra tik tokie, kad procedūrinis programavimas neįmanomas, o tai nepatogu mažesniems projektams (na, bent jau man nepatinka, kai daug objektinio šlamšto būna, kai kodo nėra tiek daug), taip pat, nepalaiko kai kurių MySQL funkcijų (99.99% tau neprireiks jų), dirba truputį lėčiau nei mysqli.

 

EDIT: Beje, sakyti, kad mysqli neturi prepared statements yra klaidinga.

Redagavo Satisfaction
Nuoroda į pranešimą
Dalintis kituose puslapiuose

O man atrodo, kad visai šiaip sau.

Jei nepratęs prie objektinio programavimo, tai mysqli labiau patiks.

Ir niekas nemuš, kol nesugalvosi naudoti mysql_* :)

 

PDO vieninteli trūkumai yra tik tokie, kad procedūrinis programavimas neįmanomas, o tai nepatogu mažesniems projektams (na, bent jau man nepatinka, kai daug objektinio šlamšto būna, kai kodo nėra tiek daug), taip pat, nepalaiko kai kurių MySQL funkcijų (99.99% tau neprireiks jų), dirba truputį lėčiau nei mysqli.

 

EDIT: Beje, sakyti, kad mysqli neturi prepared statements yra klaidinga.

 

MySQLi neturi prepared statements, nes ji naudoja MySQL API, o PDO manipuliuoja string'ą kliento pusėje. Paredaguosiu ankstesnį postą.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na ir kas, kad PDO "manipuliuoja string kliento pusėje"? Tai naudinga tik tada, kai DB nepalaiko prepared statements.

O kadangi MySQL tai palaiko, tai koks skirtumas? MySQLi Prepared statements.

Redagavo Satisfaction
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na ir kas, kad PDO "manipuliuoja string kliento pusėje"? Tai naudinga tik tada, kai DB nepalaiko prepared statements.

O kadangi MySQL tai palaiko, tai koks skirtumas? MySQLi Prepared statements.

 

Aš nesakau, kad tai yra didžiulis skirtumas, bet sąlyginai jis yra. MySQL API = daugiau network traffic'o. Beje, galima išjungti emuliavimą ir naudoti API prepared statements.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Skirtumas yra tame, kad emuliuotos veikia lėčiau.

 

Prašau, parodyti benchmarkus kur konkrečiai emuliavimas veikia lėčiau.

 

O kokia tada prasmė iš emuliavimo išjungimo jei tai ir yra vos ne vienintelis PDO pliusas?

 

Pagrindinis PDO pliusas yra, jog ji palaiko parametrių vardus, leidžia lengvai migruoti tarp RDBM, tampa programavimo standartu ir ištaiso MySQLi trūkumus.

 

PDO trūkumai:

* yra nežymiai lėtesnis

* OOP naujokam yra sunkiau prisitaikyti.

 

Aš nesakau, jog MySQLi yra blogai, aš sakau, jog PDO yra šiek tiek pranašesnė už MySQLi. Tačiau, jei žadi nuolat naudoti MySQL, tai čia skonio reikalas, MySQLi puikiai tam pasidarbuos.

Redagavo prodiger
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dekui pasistengsiu nauduot labiau rekursijas nors ir naudoju :) o darau tai del saves :)

 

Gali ir mysqli, tesiog PDO daugiau palaiko. Ir aplamai naudok rekursija, jei cia idarbinimo testas.

 

Siuo atveju projektas mazas, tai galima ir mysqli nauduot :) bet, kaip supratau geriau jau iskart prie PDO pratintis

 

 

P.S dekui uz patarimus :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dekui pasistengsiu nauduot labiau rekursijas nors ir naudoju :) o darau tai del saves :)

 

 

 

Siuo atveju projektas mazas, tai galima ir mysqli nauduot :) bet, kaip supratau geriau jau iskart prie PDO pratintis

 

 

P.S dekui uz patarimus :)

Na cia klausk tu dveju biciuku is auksciau. As esu tinginis, tai naudoju frameworka su suteiktu api. O kas liecia rekursijos - ten turetu uztekti vieno if'o. APlamai pasinaudok serialize ir imesk cia data is db.

Redagavo apieviska
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prašau, parodyti benchmarkus kur konkrečiai emuliavimas veikia lėčiau.

 

My bad, aš turėjau omeny patį PDO, o ne emuliavimą.

Nors iš tiesų, ir pats greičių skirtumas yra labai trivialus.

 

Man labiausiai nepatinka, kad įmanomas tik OOP.

Prie PDO nėra prasmės pratintis jei neplanuoji keliauti iš MySQL, kol naudosi PHP :) Nebent nori OOP pramokti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

My bad, aš turėjau omeny patį PDO, o ne emuliavimą.

Nors iš tiesų, ir pats greičių skirtumas yra labai trivialus.

 

Man labiausiai nepatinka, kad įmanomas tik OOP.

Prie PDO nėra prasmės pratintis jei neplanuoji keliauti iš MySQL, kol naudosi PHP :) Nebent nori OOP pramokti.

Kad pramokti OOP -reikia mokintis OOP, o ne PDO.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...