Autor Zpráva
noName
Profil *
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 *
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
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 *
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 *
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í.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: