Hoi allen,

mijn situatie is als volgt. Ik heb een array van objecten (stdClass objecten). Ik wil weten of een van deze objecten bij de property betaald de waarde 1 heeft. Wat is de beste methode om dit voor elkaar te krijgen?

Einddoel
Ik heb een pagina waar ik facturen heb staan. Deze factuurlijst word standaard gefilterd op onbetaalde facturen. Dan is de tabelkolom "Betaald" dus onnodig. Wanneer de vink "Toon ook betaald" aangezet word worden dus alle facturen, inclusief de betaalde facturen opgehaald. Wanneer er geen betaalde facturen zijn maar "Toon ook betaald" wel aan staat moet de kolom "Betaald" ook niet getoond worden. Met bovenstaande vraagstuk wil ik dit bewerkstelligen.

Situatie nu
<?php
foreach($aFacturen as $oFactuur){
if ($oFactuur->betaald == 1){
echo "<th>Betaald</th>";
break;
}
}
?>

Ik denk dat de huidige situatie erg omslachtig is. Is er een betere manier?
Je bedoelt dat als je "Toon ook betaald" aanzet, en er is geen enkele betaalde factuur, je de kolom "Betaald" toch niet wil tonen?

Anders is het gewoon simpel:
- standaard (alleen onbetaald): kolom niet tonen
- "Toon ook betaald" aangevinkt: kolom wel tonen
Rob, excusses. Je hebt inderdaad gelijk. Als "Toon ook betaald" is aangevinkt maar er GEEN betaalde facturen zijn de kolom niet getoond moet worden. Ik heb de originele vraagstelling inmiddels aangepast.
Zo heel omslachtig is het niet volgens mij. Wat je evt. zou kunnen doen is eerst de tabel renderen en de kolom "betaald" een aparte class mee geven (en ook de bijbehorende velden in de head en evt. foot). Ondertussen houd je bij of er "een" record betaald is. Is dat op het einde niet het geval, dan voeg je een stukje CSS in waarmee je de kolom "betaald" verbergt.
Soms is het goed om even bevestiging te krijgen dat je eigenlijk op de goede weg zit, toch?

Rob, jou voorstel klinkt juist omslachtiger dan wat ik nu doe. Bedankt voor de tip maar is het dan denk ik toch beter door te gaan op de toer dat ik nu doe.
"Toon ook betaald" klinkt als een weergave. En als je alleen de weergave wilt aanpassen, is een kleine toevoeging van een class in CSS de snelste en eenvoudigste oplossing. Precies zoals Rob zegt.

Ben je strenger in de leer, dan moet je helemaal terug langs af en alléén de betaalde facturen selecteren uit je data.

De techniek die je nu gebruikt, is een tussenvorm: je selecteert wel alle data, maar verbergt/toont daarvan vervolgens maar een gedeelte in HTML. Dat je dat omslachtig vindt, klopt: het is vlees noch vis. Als je dat structureel wilt verbeteren, zul je van de eerder ingeslagen weg moeten afwijken.

Reageren