Pomoč pri loopu [PHP]
 
gentleman 8. okt 2012 14:17:19 Pridružen od:
21. sep 2009
331 objav
381 63 5
#1

Pozdravljeni mojstri!



Imam eno težavo s katero se ukvarjam že predolgo. Imam array podatkov iz baze, skozi katerega spustim foreach. Problem je, da bi rad dobil posebno strukturo HTML-ja, recimo na vsake 3 rezultate naredi to.. Vem, poznam $counter % 3 === 0, ampak drugje je problem.



Želim dobit tako strukturo:


<div class="row">
<div class="span9">
<ul class="thumbnails">

**//// TEŽAVA JE, DA TU NOTRI SPRAVIM SAMO 3 REZULTATE**
<li class="span3">
<div class="thumbnail unit-bg">

</div>
</li>
<li class="span3">
<div class="thumbnail unit-bg">

</div>
</li>
<li class="span3">
<div class="thumbnail unit-bg">

</div>
</li>

</ul>
</div>
</div>

Torej, če pogledate, ko delam foreach moram letet znotraj .thumbnails, ampak na vsake 3, rabim pa zgoraj dodat nov row, span9 in pa thumbnails in ga spodaj še zaključt.



Kako bi blo to najboljše uredit?



Hvala že vnaprej!


všeč(0) ni všeč(0) spam(0)
 
blackmamba 8. okt 2012 14:24:00 Pridružen od:
4. mar 2008
559 objav
392 25 11
#2

Uporabi array_chunk(), funkcija, ki zelo olajša življenje ko jo spoznaš :)



S tem najprej razbiješ elemete tvojga array na več manjših arrayov z velikostjo npr 3.

Nato pa en foreach vgnezdiš v drugega.


$chunks = array_chunk($array, 3);

foreach($chunks as $array){
echo '<ul class="thumbnails">';
foreach ($array as $item){
echo '<li>'........'</li>';
}
echo '</ul>'
}
všeč(12) ni všeč(0) spam(0)
 
Mešetar 8. okt 2012 14:25:22 Pridružen od:
24. nov 2010
1543 objav
1945 962 114
#3

pred foreach dodas $i=0;



ob vsakem loopu dodas $i++;



preverjas (odvisno kam das i++... torej ali je i 3 ali 2):


if($i==3){
$i=0;
echo '</ul></div><div class="span9"><ul class="thumbnails">';
}
všeč(3) ni všeč(0) spam(0)
 
schtr4jh 8. okt 2012 14:25:57 Pridružen od:
24. nov 2008
402 objav
322 33 4
#4

$c = 0;

foreach {

if ($c%3 == 0){

echo 'div.row, div.span9, ul.thumbnails';

}



echo 'li.span3';



if ($c%3 == 0){

echo '/ul /div /div';

}

$c++;

}

if (($c-1)%3!=0)

echo '/ul /div /div'; // če ni izpisalo zaključenega diva



Bo šlo?


všeč(2) ni všeč(0) spam(0)
 
Mešetar 8. okt 2012 14:26:12 Pridružen od:
24. nov 2010
1543 objav
1945 962 114
#5

no, spet sem zamudil za minutko.. blackmamba je podal boljso resitev


všeč(1) ni všeč(0) spam(0)
 
gentleman 8. okt 2012 15:21:18 Pridružen od:
21. sep 2009
331 objav
381 63 5
#6

ooo, najlepša hvala! Sem zrihtal. Res, hvala vsem!


všeč(0) ni všeč(0) spam(0)
 
Gogy 8. okt 2012 15:40:09 Pridružen od:
17. mar 2007
2491 objav
2064 252 12
#7

@blackmamba ima v rokavu dobre rešitve :)


všeč(2) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se