Pereiti prie turinio

Kategorijų ir sub-kategorijų atvaizdavimas


Rekomenduojami pranešimai

Sveiki, reikia atvaizduoti kategorijas ir sub-kategorijas. Atvaizduoju naudodamas ciklą cikle

t.y:

$q = $db->query('<..>'); // užklausa
while($row = $q->fetch_assoc()):?>
<div class = "category">
	<h2><?=$row['name']?></h2>
	<ul>
		<?php
		$qq = $db->query('<..>'); // užklausa
		while($row = $qq->fetch_assoc()):?>
			<li><?=$row['name']?></li>
		<?php endwhile; ?>
	</ul>
</div>
<?php endwhile; ?>

Viskas veikia, bet gal turit idėjų kaip padaryti optimalesnį atvaizdavimą? t.y. gal yra įmanoma jį atlikti tik su vienu ciklu..

`kategorijos` duomenų struktūra:
`id` int(11) NOT NULL, // id
`name` varchar(100) NOT NULL, // kategorijos pavadinimas
`info` int(11) NOT NULL // parent kategorijos id

Redagavo ArrMkaZ
Nuoroda į pranešimą
Dalintis kituose puslapiuose

ka turi omeny optimalesni varianta? kodo greitis, kodo skaitomumas?

 

del greicio, tai galima naudoti kesavima (mysql kesavima ar net viso html kesavima)

kodo skaitomumui, pradzioje reiketu atskirti html nuo php kodo

 

jeigu nenaudojant framework, tai kodas galetu atrodyti taip:

 

<?php
function categories() {
// cia mysql kodas kuris surenka visas kategorijas

return ; // graziname kategorijas su subkategorijomis
}

$parent_categories  = categories();

?>


<?php foreach ($parent_categories as $parent_category): ?>
<div class = "category">
	<h2><?php echo $parent_category['name']; ?></h2>
	<ul>
		<?php foreach ($parent_category['children'] as $child_category): ?>
			<li><?php echo $child_category['name']; ?></li>
		<?php endforeach; ?>
	</ul>
</div>
<?php endforeach; ?>

Nuoroda į pranešimą
Dalintis kituose puslapiuose

ka turi omeny optimalesni varianta? kodo greitis, kodo skaitomumas?

 

del greicio, tai galima naudoti kesavima (mysql kesavima ar net viso html kesavima)

kodo skaitomumui, pradzioje reiketu atskirti html nuo php kodo

 

jeigu nenaudojant framework, tai kodas galetu atrodyti taip:

 

<?php
function categories() {
// cia mysql kodas kuris surenka visas kategorijas

return ; // graziname kategorijas su subkategorijomis
}

$parent_categories  = categories();

?>


<?php foreach ($parent_categories as $parent_category): ?>
<div class = "category">
	<h2><?php echo $parent_category['name']; ?></h2>
	<ul>
		<?php foreach ($parent_category['children'] as $child_category): ?>
			<li><?php echo $child_category['name']; ?></li>
		<?php endforeach; ?>
	</ul>
</div>
<?php endforeach; ?>

turėjau omeny, dėl kodo greičio ir

gal yra įmanoma <...> atlikti tik su vienu ciklu

Reikės patikrint, kiek greitesnis tavo kodas, nei mano du while

Buvau pradėjęs galvot apie panašų variantą, kuriame ištraukiami duomenys ir saugomi masyve, bet atnaujinami tik tada, kai bus liepta, tavo atveju surenka kiekvieną kartą.

Dėkui :)

Redagavo ArrMkaZ
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Greicio prasme nemanau kad yra prasmes sio kodo optimizuoti:

1) nes sis kodas bus ivykdytas per kelias milisekundes ir vienos kitos milisekundes sutaupymas nieko neitakos

2) serveryje veikia php ir mysql kesavimai, tai testuodamas pas save matysi visai kitus rezultatus nei serveryje

 

Jei nori kazka rimciau pradeti mokytis, tai geriausiai pradeti nuo Framework (pvz.: Laravel)

bet aisku jei dar nera pradmenu, tai bus per sudetinga :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Greicio prasme nemanau kad yra prasmes sio kodo optimizuoti:

1) nes sis kodas bus ivykdytas per kelias milisekundes ir vienos kitos milisekundes sutaupymas nieko neitakos

2) serveryje veikia php ir mysql kesavimai, tai testuodamas pas save matysi visai kitus rezultatus nei serveryje

 

Jei nori kazka rimciau pradeti mokytis, tai geriausiai pradeti nuo Framework (pvz.: Laravel)

bet aisku jei dar nera pradmenu, tai bus per sudetinga :)

localhoste patikrinau greitį (228 kategorijas 100kartų), tai su foreach atvaizduojant iš masyvo gaunasi greičiau.

 

Tarkim skelbiult taip kategorijas pagrindiniam atvaizduotų, tada būtų verta taip optimizuot, nes didelis lankomumas? gi nuolatos vykdoma tapati užklausa

Redagavo ArrMkaZ
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Neskaitai ka rasiau, pas tave localhoste nera nei opcode kesavimo, nei mysql kesavimo. Tai isikelus koda i serveri gausi visai kitus rezultatus :)

 

O skelbiu.lt tikriausiai naudoja Memcached arba Redis. Bet kol nepasieksi svetaines lankomumo tukstanciais per diena, tau to neprireiks :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Neskaitai ka rasiau, pas tave localhoste nera nei opcode kesavimo, nei mysql kesavimo. Tai isikelus koda i serveri gausi visai kitus rezultatus :)

 

O skelbiu.lt tikriausiai naudoja Memcached arba Redis. Bet kol nepasieksi svetaines lankomumo tukstanciais per diena, tau to neprireiks :)

Skaičiau, bet iš smalsumo patikrinau..

Manai, neverta gaišti laiko darant tai? Juk geriau visada rašyti optimalesnį kodą

Redagavo ArrMkaZ
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pas tave daugiausiai stabdė tai, kad tu subkategorijoms pasiimti papildomai sql užklausas siųsdavai į DB. Reikia viską su viena užklausa susirinkti ir tiek.

Aišku. Ten prisidės dar keletas užklausų, nes reikės šalia ir skaičiukų..

Žodžiu, tavo varianto naudojimas būtų geresnė išeitis nei mano? Ar visgi likti su savuoju, jei žinau, kad lankomumas nebus didelis.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tikrai cia esmes nera ir optimizuoti su mazu lankomumu nieko nereikia.

 

Padariau testa ant serverio. Naudojau apie 500 subkategoriju. Taip pat naudojau Laravel, tai i ta laika dar isiskaiciuoja php skripto vykdymas:

 

1. Kiekvienai subkategorijai atskira uzklausa - viso 0.025 sekundes

2. Dvi uzklausos (tevinem ir vaikinem kategorijom atskirai) - viso 0.02 sekundes

 

Tai ar verta zaistis del 0.005 sekundes? (nebent nori del saves suzinoti)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tikrai cia esmes nera ir optimizuoti su mazu lankomumu nieko nereikia.

 

Padariau testa ant serverio. Naudojau apie 500 subkategoriju. Taip pat naudojau Laravel, tai i ta laika dar isiskaiciuoja php skripto vykdymas:

 

1. Kiekvienai subkategorijai atskira uzklausa - viso 0.025 sekundes

2. Dvi uzklausos (tevinem ir vaikinem kategorijom atskirai) - viso 0.02 sekundes

 

Tai ar verta zaistis del 0.005 sekundes? (nebent nori del saves suzinoti)

O koks pagal tave didelis lankomumas? Pvz: prie 1000un/d, gal jau optimizuot? ar čia "siemkės" toks lankomumas tam kodui.

Aš ir testavau tik dėl smalsumo :D

Redagavo ArrMkaZ
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.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

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