Šta je novo?

Laravel: Kako dinamicki napraviti vise kolumni?

shone83

Poštovan
Učlanjen(a)
04.11.2015
Poruke
49
Poena
54
Hocu da mi kolumne izgledaju ovako:

147
258
369

po brojevima vidite da informacije iz baze treba da idu vertikalno. I, ubacena je i paginacija tako da kad, na primer, stavim maksimalno 12 u paginaciju to znaci da treba da u tri kolone bude po cetiri podataka pre nego sto predje na drugu stranicu.

Ovo je kod sada kako izgleda:

Kod:
<div class="col-md-9">
    <div class="list-group row">
        <div class="list-group-item col-md-12">
           @if(count($towns) > 0)
                @foreach($towns as $town)
                    <p class="text-primary">{{$town->name}} <span class="fa fa-edit"></span></p>
                @endforeach
            @else
               <p>Општине нису унете</p>
            @endif
        </div>
    </div>

    <div class="text-center">
        {{$towns->links()}}
    </div>
</div>
 
Trenutni code ispisuje podatke jedan ispod drugog. Ne možeš da foreach već ti trebaju dve ugnježdene for petlje... Prva (npr i) preskače po N a unutrašnja (npr i) ide od 0 do N.
Indeks računaš kao i + N*j. Onda pročitas $towns[indeks]->name.


Sent from my Nexus 6P using Tapatalk
 
Nisam najbolje razumeo. Ne znam kako da spoljna petlja preskace po N, ili nisam to do sada radio ili ne kapiram na sta mislis. A unutrasnja mi nije jasno zasto opet slovo i ako vidim da posle pominjes slovo j, verovatno si mislio za unutrasnju da koristim slovo j, ali kako da znam do koje vrednosti da ide (nap $j=0; $j<10; $j++) s obzirom da ne treba da ima ogranicenje, jedino ako mislis na broj koliko toga treba biti na stranici, onda je to 12. I sad ovo na kraju da li si mislio da stvorim variablu:

$npr = $i + $N*$j;

pa da to iskoristim u:

$towns[$npr ]->name;
 
Poslednja izmena:
paginacija = 12;
kolone = paginacija / 3;
vrste = paginacija / 3;
n = brojGradova;

for (i = 0 to vrste)
for (j = 0 to kolone)
print town[j*n + i].name;
 
Ni to mi ne ide, pokusavao sam nesto ali silne greske mi iskacu. U Townscontroller.php mi izgleda ovako:

Kod:
public function index() {
	$towns = Town::paginate(13);

	return view('admin.town.index', compact('towns'));
}

Jedino sto sam uspeo je da dodam class
HTML:
col-md-4
u paragrafu tako da mi sad stoji po horizontali, ali ne vertikali. Dakle sad izgleda ovako:

123
456
789

umesto kao u tableu u prvom postu...
 
Foreach ide redom po nizu. Problem je u tome što tebi treba da ne ide po redu, već malo drugačije.
Umesto foreach ti treba:
Kod:
@for ($i = 0; $i < N; $i++) 
 @for ($j = i; $j < $towns.count(); $j+=N) 
   p $towns[j].name /p
 @endfor
 br
@endfor
Šaljem sa telefona pa ne mogu da nabadam HTML tragove.

Sent from my Nexus 6P using Tapatalk
 
Poslednja izmena:
A sta je tu N? Jel to broj gradova koji ide po vertikali? I trazi mi jedan parametar u funkciji count(), ovo br pretpostavljam da je <br>...
 
N je broj gradova po koloni, probaj count($towns). Ne znam da li je $towns array ili collection.

Sent from my Nexus 6P using Tapatalk
 
Poslednja izmena:
To je to, hvala i bravo. Tako sam prvo i uradio samo sto sam se zeznuo sa brojem N, stavio sam veci broj nego sto moze da podeli kolonu, kad sam stavio broj 5 onda je dobro ispalo ;)

Prvo mi je ispalo kao na slici, iako ide prvo Kragujevac, Novi Sad, Vranje... :)


S tim sto sad imam problem sa paginacijom, ako smanjim broj u odnosu na N onda mi nestaju podaci... Ne prelaze na drugu stranu...

Kod:
@for ($i = 0; $i < 5; $i++)
 @for ($j = $i; $j < $towns.count($towns); $j+=5)
   <p class="col-md-4 text-primary">{{$towns[$j]->name}} <span class="fa fa-edit"></span></p>
 @endfor
 <br>
@endfor

Ukoliko menjam i povecavam brojeve na paginaciji tako mi se razmestaju ili nestaju podaci...
 

Prilozi

  • towns.jpg
    towns.jpg
    25.1 KB · Pregleda: 41
Poslednja izmena:
Opsti slucaj izgleda ovako... Recimo da imas grid od R redova, K kolona i startni index sa imenom start. U tom slucaju na jednu stranu staje R*K imena gradova. Na prvj strani, start je 0, na drugj strani start je R*K, na trecoj strani start je 2*R*K, na cetvrtoj strani start je 3*R*K, itd..
Kod:
@for ($red = 0; $red < $R; $red++)
 @for ($kol = 0; $kol < $K; $kol++)
   <p class="col-md-4 text-primary">{{$towns[$start + $kol*$R + $red]->name}} <span class="fa fa-edit"></span></p>
 @endfor
  <br>
@endfor

Primer za R=3 i K=4, start = 0;

0 3 6 9
1 4 7 10 
2 5 8 11
 
Kod:
@for ($i = 0; $i < 12; $i++)
 @for ($j = 0; $j < 3; $j++)
   <p class="text-primary">{{$towns[$j*12 + $i]->name}} <span class="fa fa-edit"></span></p>
 @endfor
    <br>
@endfor

U ovom slucaju mi ovako izgleda...
 

Prilozi

  • towns2.jpg
    towns2.jpg
    32.1 KB · Pregleda: 42
Nazad
Vrh Dno