Ik was bezig met een nieuwssysteem te maken, die later iedereen makkelijk kan gebruiken. Maargoed, dan moet die wel eerst werken.
Ik heb dus op moment 2 verschillende nieuws items in mijn db staan, alleen pakt hij 1 nieuws item en laat die 2x zien, inplaats van dat die elke item een x laat zien.
<?php
class news {
function code($string) {
$query = "SELECT * FROM nieuws LIMIT 15";
$result = mysql_query($query) or die (mysql_error());
while ($sql = mysql_fetch_assoc($result)) {
$string_echo = str_replace("[naam]", $sql['user'], $string);
$string = str_replace("[bericht]", $sql['bericht'], $string_echo);
$string = str_replace("[bericht_meer]", $sql['berichtm'], $string_echo);
$string = str_replace("[titel]", $sql['titel'], $string_echo);
$string = str_replace("[datum]", $sql['datum'], $string_echo);
echo $string_echo;
}
}
}
?>
[edit]
mss wat uitleg..
doordat je met je eerste query de [velden] al wijzigt zijn deze na 2de stap niet beschikbaar. want [velden] is nu gelijk aan de waarde uit de DB... en kan je hem niet str_replacen..
[/edit]
Dat maakt in principe niet zoveel uit, om te testen is het misschien makkelijker om een echo te gebruiken. Maar als je zegt dat je in een klasse normaal gesproken niets echoed heb je natuurlijk helemaal gelijk ;)
Misschien een aardige optie: zorg ervoor dat automatisch alles wat in een hash (associative array) staat wordt geinclude. Het voordeel is: je kan direct waarden uit een tabel voeren:
Dit is de meest basic template parser die je kan verzinnen. Maar is scalable: dat wil zeggen. Je hoeft alleen je template aan te passen, en de data/array groeit met de tabel die je maakt.
<?php
class news {
function parseData ($strTekst, $arrVar) {
// verzin hier je eigen syntax
$strOpen = "[";
$strClose = "]";
$strTekst = preg_replace_all('/' . $strOpen . '(\w+?)' . $strClose . '/ie', '$arrVar[\'\\1\']', $strTekst);
// nog niet optimaal, zal errors/notices geven bij gebruik van niet bestaande [variabelen]
// door /i hoofdletter ongevoelig
return $strTekst;
}
function getData($string) {
$query = "SELECT * FROM nieuws LIMIT 15";
$result = mysql_query($query) or die (mysql_error());
while ($sql = mysql_fetch_assoc($result)) {
$echo_string = $this->parseData($sql, $string);
}
}
}
?>