Geeft 2x dezelfde weer
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.
Het is het volgende script:
Nieuws.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$new -> code('
Nieuws titel: [titel]
<hr />
[bericht]
<hr />
Gepost door: [naam] --- Op de datum: [datum]
<br />
<br />
');
?>
$new -> code('
Nieuws titel: [titel]
<hr />
[bericht]
<hr />
Gepost door: [naam] --- Op de datum: [datum]
<br />
<br />
');
?>
En de class:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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 = str_replace("[naam]", $sql['user'], $string);
$string = str_replace("[bericht]", $sql['bericht'], $string);
$string = str_replace("[bericht_meer]", $sql['berichtm'], $string);
$string = str_replace("[titel]", $sql['titel'], $string);
$string = str_replace("[datum]", $sql['datum'], $string);
echo $string;
}
}
}
?>
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 = str_replace("[naam]", $sql['user'], $string);
$string = str_replace("[bericht]", $sql['bericht'], $string);
$string = str_replace("[bericht_meer]", $sql['berichtm'], $string);
$string = str_replace("[titel]", $sql['titel'], $string);
$string = str_replace("[datum]", $sql['datum'], $string);
echo $string;
}
}
}
?>
De class wordt wel aangeroepen, en dat is tevens het probleem ook niet.
Mvg,
Thomas
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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;
}
}
}
?>
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..
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..
Gewijzigd op 01/01/1970 01:00:00 door Tommy Masschelein
Ik heb dit ook al geprobeert:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
class news {
var $string;
function replace ($string) {
$string = str_replace("[naam]", $sql['user'], $string);
$string = str_replace("[bericht]", $sql['bericht'], $string);
$string = str_replace("[bericht_meer]", $sql['berichtm'], $string);
$string = str_replace("[titel]", $sql['titel'], $string);
$string = str_replace("[datum]", $sql['datum'], $string);
echo $string;
}
function code($string) {
$query = "SELECT * FROM nieuws LIMIT 15";
$result = mysql_query($query) or die (mysql_error());
while ($sql = mysql_fetch_assoc($result)) {
echo $this -> replace($string);
}
}
}
?>
class news {
var $string;
function replace ($string) {
$string = str_replace("[naam]", $sql['user'], $string);
$string = str_replace("[bericht]", $sql['bericht'], $string);
$string = str_replace("[bericht_meer]", $sql['berichtm'], $string);
$string = str_replace("[titel]", $sql['titel'], $string);
$string = str_replace("[datum]", $sql['datum'], $string);
echo $string;
}
function code($string) {
$query = "SELECT * FROM nieuws LIMIT 15";
$result = mysql_query($query) or die (mysql_error());
while ($sql = mysql_fetch_assoc($result)) {
echo $this -> replace($string);
}
}
}
?>
Helaas werkte dit ook niet..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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_echo = str_replace("[bericht]", $sql['bericht'], $string_echo);
$string_echo = str_replace("[bericht_meer]", $sql['berichtm'], $string_echo);
$string_echo = str_replace("[titel]", $sql['titel'], $string_echo);
$string_echo = str_replace("[datum]", $sql['datum'], $string_echo);
echo $string_echo;
}
}
}
?>
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_echo = str_replace("[bericht]", $sql['bericht'], $string_echo);
$string_echo = str_replace("[bericht_meer]", $sql['berichtm'], $string_echo);
$string_echo = str_replace("[titel]", $sql['titel'], $string_echo);
$string_echo = str_replace("[datum]", $sql['datum'], $string_echo);
echo $string_echo;
}
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
return $string;
ipv
echo $string;
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 ;)
Dankje blanche die werkt:)
ow jah vergeten de andere variabelen aan te passen... :)
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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);
}
}
}
?>
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);
}
}
}
?>
Let daar op, je kunt je een ongeluk zoeken naar bugs die door dit soort fouten gaan ontstaan.
Spreek uit ervaring...