Archief - Smarty foreach loop reset

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

GregoryCo

Legacy Member
Hallo

Op deze site kun je zien dat ik 4 verschillende onderverdelingen heb, voor elk een category.

Nu wil ik dat wanneer ik een project toevoeg aan mijn database, dat die automatisch onder de juiste category staan.

Ik heb een tabel met daaring verschillende kolommen, een daarvan is 'category'. En in die category staat dus welke categorie het is (bvb. Websites, Applications, Logos, etc...

In mijn html heb ik zo iets:

Code:
 <h3 id="websites"><span>Websites</span></h3>
	{foreach from=$projects item=projects}
		{if $projects->category == "Websites"}
	        <div class="projectblockwebsites">
	       	  <img src="{$projects->thumbimage}" title="{$projects->title}" alt="{$projects->title}" />
	            <p class="projectdescription">{$projects->title}</p>
				<p class="projectcategory">Category: {$projects->category}</p>
	        </div>
		{/if}
	{/foreach}

Nu komen enkel de projecten van category Websites eronder, wat dus goed is (online nog niet toegepast)

Nu heb ik net hetzelfde gedaan voor Applications (adhv een nieuwe for each), maar deze komen er niet op, maar als ik in de code hierboven Websites verander naar Applications, dan komen de Applications er wel op. Ik kan dus waarschijnlijk niet 2x of meer een for each gebruiken?

Iemand die mij kan helpen, of een (beter) alternatief voorstellen?

Ondertussen zoek ik nog wat verder.

Thanks!

Zero Grav

Legacy Member
Ge hebt de foreach first parameter in Smarty, waardoor ge kunt kijken of het de eerste is dat die loop loopt.

Dan zoudt ge iets kunnen doen als

{foreach}
{if:first}titel webdesign{/if}
{if $projects->category == 'websites'}..{/if}
{if:first}titel application{/if}
{if $projects->category == 'application'{/if}
{/foreach}

Even niet de juiste format, heb net geformatteerd en moet het dus hier typen.
Anders moet ge kijken of ge een foreach kunt resetten, 'k heb er zelf even op gezocht maar kwam toen op dit uit was basically beter is omdat ge hetzelfde resultaat bereikt terwijl ge maar één keer uw foreach moet overlopen in plaats van 1 x categorie keer.

GregoryCo

Legacy Member
hmm die if:first wil precies niet werken, maar zit wss wel al in de goede richting.

Zou het niet lukken met 2 foreaches ofzo? Zou wel niet weten hoe

Bedankt!

GregoryCo

Legacy Member
Heb ik gedaan hoor :)

Dan toont ie enkel 1 project (en de rest nog altijd niet)

Maar kzal nog es proberen, mss deed ik het verkeerd
bedankt

Zero Grav

Legacy Member
Als em maar één project toont dan sluit ge uw if wellicht verkeerd af. Ge moet die enkel gebruiken voor uw categorietitels, de rest moet ge daarbuiten zetten.

GregoryCo

Legacy Member
Nu heb ik dit, en komen er projecten te staan bij Artwork, terwijl er nog niets in de database zit onder artwork.

Ingewikkelde shit :p

Code:
<div id="websitescontainer">
	{foreach from=$projects item=projects name=foo}
	
		{if $smarty.foreach.foo.first}<h3 id="websites"><span>Websites</span></h3>{/if}
		{if $projects->category == 'Websites'}
			<div class="projectblockwebsites">
	       	  <img src="{$projects->thumbimage}" title="{$projects->title}" alt="{$projects->title}" />
	            <p class="projectdescription">{$projects->title}</p>
				<p class="projectcategory">Category: {$projects->category}</p>
	        </div>
		{/if}
	
		{if $smarty.foreach.foo.first}<h3 id="applications"><span>Applications</span></h3>{/if}
		{if $projects->category == 'Applications'}
			<div class="projectblockwebsites">
	       	  <img src="{$projects->thumbimage}" title="{$projects->title}" alt="{$projects->title}" />
	            <p class="projectdescription">{$projects->title}</p>
				<p class="projectcategory">Category: {$projects->category}</p>
	        </div>
		{/if}
	
	
		{if $smarty.foreach.foo.first}<h3 id="logos"><span>Logos</span></h3>{/if}
		{if $projects->category == 'Logos'}
			<div class="projectblockwebsites">
	       	  <img src="{$projects->thumbimage}" title="{$projects->title}" alt="{$projects->title}" />
	            <p class="projectdescription">{$projects->title}</p>
				<p class="projectcategory">Category: {$projects->category}</p>
	        </div>
		{/if}
	
		{if $smarty.foreach.foo.first}<h3 id="artwork"><span>Artwork</span></h3>{/if}
		{if $projects->category == 'Artwork'}
			<div class="projectblockwebsites">
	       	  <img src="{$projects->thumbimage}" title="{$projects->title}" alt="{$projects->title}" />
	            <p class="projectdescription">{$projects->title}</p>
				<p class="projectcategory">Category: {$projects->category}</p>
	        </div>
		{/if}
	{/foreach}
</div>

Zero Grav

Legacy Member
Code lijkt op het eerste zicht wel te kloppen, maar pak voor de zekerheid bij item eens een andere naam, zoals project enkelvoud. Want twee keer met dezelfde variabelenaam werken is altijd risky.

GregoryCo

Legacy Member
Nog hetzelfde.

Kheb al horen zeggen da ge het ook met 2 foreaches kunt oplossen?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan