Hoe kan ik via een like functie ervoor zorgen dat ik alles waar "houtem" in voorkomt in een andere kleur komt te staan. Nu geef ik alle mogelijke vormen die in de db voorkomen.
<?php
echo "<td>";
if ($row[4] == 'VV.Houtem ' OR $row[4] == 'VV.Houtem A' OR $row[4] == 'VV.Houtem B' OR $row[4] == 'VV.Houtem C') // hier de naam van de vet af te drukken club invullen
{
echo '<b><font color="#CC85D5">' . $row[4] . '</b>';
} else {
echo $row[4];
}
echo "</td>";
?>
De code inclusief color meteen al in je SQL statement genereren. Met een Case in de select wissel je tussen de colors. Veel efficienter en kost dan in php geen process time. Voorbeeld:
SELECT CASE WHEN ColumnName LIKE '%Hout%' THEN CONCAT('<b><font color="#CC85D5">','answer1')
WHEN ColumnName LIKE '%value2%' THEN 'answer2'
WHEN ColumnName LIKE '%TEST%' THEN 'answer3'
ELSE 'not like any of them' END [Answer]
FROM TableName
In zekere zin wil je (bepaalde) inhoud anders weergeven. Dit is een bewerking die ik zo lang mogelijk uit zou stellen.
Dit (de uiteindelijke vorm waarin je gegevens afdrukt) zou ik ook zoveel mogelijk loskoppelen van hoe je deze gegevens ophaalt. Het lijkt mij onhandig dat als je iets op een andere manier wilt weergeven, je daarvoor een query zou moet aanpassen.
Wat ik zou doen is een functie / bewerking toepassen op je uitvoer voor / bij het afdrukken. Bijvoorbeeld een str_replace() (of andere str_ functie) of een preg_replace(). Mogelijk niet de meest efficiente oplossing, maar wel eentje met een duidelijke scheiding van verantwoordelijkheden (ophalen gegevens - formatteren gegevens - afdrukken gegegevens).
Je zou bijvoorbeeld een stukje code kunnen schrijven die controleert of een stuk tekst begint met een bepaalde passage, en als dit generiek moet, dan kun je dit in een functie gieten:
@Thomas: In principe wel met je eens echter het hard coderen van 'VV.Houtem' en dergelijke is ook niet echt de oplossing. Misschien een code (attribuut) in de database opnemen voor kleur? In php bepaal je dan welke kleur bij welk attribuut. Komt wel weer neer op de php code zoals in de vraag van TS maar in ieder geval heb je dan geen hardgecodeerde namen zoals 'VV.Houtem' in je code en zit je niet elke keer je scripts te wijzigen wanneer er een Houtem club bijkomt of afvalt.
Het idee van Aad lijkt mij niet meer dan logisch.
VV.Houtem is misschien de thuis-partij en zal dus niet wijzigen, maar geef dan gewoon aan dat VV.Houtem de thuisspeler is, en als het de thuisspeler is, een andere kleur ;).
Wil je echt makkelijk werken: gewoon een str_replace("VV.Houtem", '<b class="thuispartij">VV.Houtem</b>', $row[4]);
Dat is in zekere zin nog steeds hardcoding in je database, als ik het goed begrijp, maar dan in je data :).
Maar misschien verschilt de favoriete club ook per gebruiker (de tweede parameter van de functie wordt op een of andere manier ingevuld, bijvoorbeeld aan de hand van een profiel). Met andere woorden: het staat dan niet op voorhand vast welke clubnaam je in moet kleuren - dit wordt dan dynamisch bepaald.
In mijn voorbeeld vul ik een vaste waarde in om te illustreren hoe deze functie werkt maar ik doe verder geen aannames over de herkomst van deze waarde.
In zijn algemeenheid is het volgens mij handiger om data rauw / onbewerkt op te slaan. Hoe je iets afdrukt bepaal je ergens anders, en misschien is dat proces zelf ook dynamisch.
--> Dat is in zekere zin nog steeds hardcoding in je database, als ik het goed begrijp, maar dan in je data
Nee, een attribuut met een bepaalde betekenis opnemen in je database/record is nooit hardcoding. Je hoeft namelijk geen code te wijzigen wanneer de kleur van de club veranderd. Attribuutje bij de club aanpassen in de database (beheerscherm clubs) en klaar. Ergo, niet hard gecodeerd.