Autor | Zpráva | ||
---|---|---|---|
noName Profil * |
#1 · Zasláno: 25. 3. 2013, 10:29:47
Ahoj, řeším takový asi "jednoduchý" problém. Potřeboval bych, aby když budu třeba 8 položek tak tak aby se mi třeba 3 daly do jednoho divu a dalších 5 do jiného divu. Pokoušel jsem se to řešit takto:
$iterations = 0; foreach($items as $item){ if ($iterations <= 3) { echo "<div class='nejaky_div'>"; } echo $item; if ($iterations <= 3) { echo "</div>"; } //... } Díky za pomoc. |
||
Str4wberry Profil |
Takže má být jeden
<div> společný pro první tři položky a další <div> společný pro dalších pět? Nebo má být každá položka v zvláštním <div> u, ale první tři a dalších pět mít odlišné třídy?
|
||
noName Profil * |
#3 · Zasláno: 25. 3. 2013, 10:41:33
První 3 budou jeden společný div. Dalších třeba 5 bude mít jiný div.
<div class='nejaky_div'> položka 1 položka 2 položka 3 </div> |
||
Str4wberry Profil |
#4 · Zasláno: 25. 3. 2013, 10:45:22
Potom stačí před čtvrtou položkou vypsat
</div><div class='nejaky_dalsi_div'> .
|
||
donny Profil |
echo "<div class='nejaky_div'>"; foreach($items as $item){ if ($iterations == 3) { echo "</div><div class='nejaky_div'>"; } echo $item; iterations++; } echo "</div>"; |
||
noName Profil * |
#6 · Zasláno: 25. 3. 2013, 11:20:52
Str4wberry:
Napíšu tedy konkrétně co potřebuju. Mám 5divů a v každém z nich budou další 3. Chci docílit toho, že si z db vezmi 15 záznamů a ty chci vypsat tak, že bude struktura html vypadat takto: <div class="big_right"> <div class="big">...</div> <div class="small">...</div> <div class="small">...</div> </div> <div class="center"> <div class="small">...</div> <div class="small">...</div> <div class="small">...</div> </div> <div class="big_left"> <div class="big">...</div> <div class="small">...</div> <div class="small">...</div> </div> <div class="center"> <div class="small">...</div> <div class="small">...</div> <div class="small">...</div> </div> <div class="big_right"> <div class="big">...</div> <div class="small">...</div> <div class="small">...</div> </div> Myslel jsem, že bych to tedy řešil jak jsem psal výše pomcí toho, že když iterátor bude menší než 3 vypíšu si div big_right a do něj dám třeba podmínku $iterations == 1 vypíšu div big. |
||
donny Profil |
Musel som narýchlo odísť a nejak sa my podarilo odoslať prázdny príspevok..
Ako, docieliť sa to dá, otázka je potom ako efektívne.. 1. možnosť 2 cykly jedným generuješ nadradený prvky ďalším (databázovým) dáta 2. možnosť veľa ifov, kde proste pri každej variante sa urobí nejaká podmienka.. niečo v zmysle if($iterations==3 || $iterations==9) { $trieda = "druha"; echo "<div class='main-druha'>"; } elseif($iterations==6) { $trieda = "tretia"; echo "<div class='main-tretia'>"; } elseif($iterations==0 || $iterations==12) { $trieda = "prva"; echo "<div class='main-prva'>"; } echo "<div class='$trieda'>$item</div>"; if($iterations==2 || $iterations==5 || $iterations==8 || $iterations==11) { echo "</div>"; } $iterations++ Osobne by som skôr premýšlaľ nad iným riešením tej štruktúry (či vôbec je taká štruktúra obecne potrebná), resp. či sa výsledný efekt nedá dosiahnuť jednoduchšie |
||
noName Profil * |
#8 · Zasláno: 26. 3. 2013, 14:18:11
Díky. Už jsem to ale vyřešil tak, že jsem si to prošel cyklem a udělal pole s číslováním od 1 do 15 a pak to vypíšu $item[1]['neco']. Jelikož se počet položek nebude měnit tak mi to takto stačit. Ještě jednou díky.
|
||
Tori Profil |
noName:
Podle jaké logiky se střídá right / center / left? Šlo by nějakým způsobem procházet polem těchto možností. |
||
Časová prodleva: 11 let
|
0