Op dit moment poog ik mijn site met Fast Template te maken. Inhoud uit de database halen lukt wel, maar ik weet niet hoe ik die inhoud op de juiste plek moet krijgen.
Dit is de code:
Het stukje waar nieuwsberichten uit de database gehaald worden werkt goed, maar niet op de juiste plek:
De resultaten van dit stukje code, moeten worden in 'page.tpl' in het gedeelte waar de variabele 'PAGECONTENT' is aangegeven. Ik zou echter niet weten hoe ik de resultaten van mijn query in de functie PrintPage moet krijgen. Kortom, ik zit hier zeer verlegen om hulp...
Als je hints, tips weet, laat het alsjeblieft weten.
Dit is de 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| <? include ("includes\class.FastTemplate.php"); include ("includes\inc.functions.php"); include ("includes\inc.login.php"); /* connect function (inc.functions.php) */ Connect(); /* show latest news items */ $result = @mysql_query("SELECT n.*, nc.category FROM news n, newsCategories nc WHERE nc.id = n.categoryId ORDER BY 'id' DESC LIMIT 0, 5"); if (!@mysql_numrows($result)) { print "No news items in database."; } while ($newsItem = @mysql_fetch_array($result)) { $headline = $newsItem["headline"]; $categoryName = strtolower($newsItem["category"]); $categoryId = $newsItem["categoryId"]; if (strlen("$headline") > '30') $headline = substr("$headline", 0, 30) . "..."; if (!$id) { printf ("<a href=\"$PHP_SELF?id=%s&category=$categoryId\">%s in category %s<br>\n</a>\n", $newsItem["id"], $headline, $categoryName); } } function InitializeTemplates() { global $tpl; $tpl = new FastTemplate("templates"); $tpl -> define(array(page => "page.tpl", text => "home_text.tpl", submenu_empty => "submenu_empty.tpl", footer => "footer.tpl") ); } function PrintPage($title, $date) { global $tpl; $tpl -> assign(PAGETITLE, $title); $tpl -> assign(DATE, $date); $tpl -> parse(SUBMENU, "submenu_empty"); $tpl -> parse("PAGECONTENT", "text"); $tpl -> parse(FOOTER, "footer"); $tpl -> parse(FINAL, "page"); $tpl -> FastPrint(FINAL); } InitializeTemplates(); Printpage("home", Today()); ?> |
Het stukje waar nieuwsberichten uit de database gehaald worden werkt goed, maar niet op de juiste plek:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <? Connect(); /* show latest news items */ $result = @mysql_query("SELECT n.*, nc.category FROM news n, newsCategories nc WHERE nc.id = n.categoryId ORDER BY 'id' DESC LIMIT 0, 5"); if (!@mysql_numrows($result)) { print "No news items in database."; } while ($newsItem = @mysql_fetch_array($result)) { $headline = $newsItem["headline"]; $categoryName = strtolower($newsItem["category"]); $categoryId = $newsItem["categoryId"]; if (strlen("$headline") > '30') $headline = substr("$headline", 0, 30) . "..."; if (!$id) { printf ("<a href=\"$PHP_SELF?id=%s&category=$categoryId\">%s in category %s<br>\n</a>\n", $newsItem["id"], $headline, $categoryName); } } ?> |
De resultaten van dit stukje code, moeten worden in 'page.tpl' in het gedeelte waar de variabele 'PAGECONTENT' is aangegeven. Ik zou echter niet weten hoe ik de resultaten van mijn query in de functie PrintPage moet krijgen. Kortom, ik zit hier zeer verlegen om hulp...
Als je hints, tips weet, laat het alsjeblieft weten.
Verwijderd
Hier ben je al naar het scherm aan het printen..Op dinsdag 30 oktober 2001 17:39 schreef Sibash het volgende:
Op dit moment poog ik mijn site met Fast Template te maken. Inhoud uit de database halen lukt wel, maar ik weet niet hoe ik die inhoud op de juiste plek moet krijgen.
Dit is de code:
PHP:
1 2 3 4 5 <? if (!$id) { printf ("<a href=\"$PHP_SELF?id=%s&amp;category=$categoryId\">%s in category %s<br>\n</a>\n", $newsItem["id"], $headline, $categoryName); } ?>
En hier begin je met je template.PHP:
1 2 3 4 5 6 7 8 9 10 11 12 <? function InitializeTemplates() { global $tpl; $tpl = new FastTemplate("templates"); $tpl -> define(array(page => "page.tpl", text => "home_text.tpl", submenu_empty => "submenu_empty.tpl", footer => "footer.tpl") ); } ?>
Is het probleem toevallig dat je nieuwsdingetjes helemaal bovenaan de pagina komen, nog voor de eigenlijke pagina begint?
Het klopt dat de resultaten nu boven de html getoond worden. Dat is niet zo vreemd omdat ik pas in de functie PrintPage de html-pagina genereer (page.tpl is de lay-out, de andere tpl's boeien minder).
Het echte probleem is dat ik niet weet hoe ik de resultaten van de database query in diezelfde functie PrintPage moet krijgen. De resultaten moeten geplaatst worden op de plek waar de variabele PAGECONTENT is aangegeven. (Deze variabele PAGECONTENT is terug te vinden in page.tpl).
Hopelijk is het nu wat duidelijker!
Het echte probleem is dat ik niet weet hoe ik de resultaten van de database query in diezelfde functie PrintPage moet krijgen. De resultaten moeten geplaatst worden op de plek waar de variabele PAGECONTENT is aangegeven. (Deze variabele PAGECONTENT is terug te vinden in page.tpl).
Hopelijk is het nu wat duidelijker!
Verwijderd
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| <? include ("includes\class.FastTemplate.php"); include ("includes\inc.functions.php"); include ("includes\inc.login.php"); /* connect function (inc.functions.php) */ Connect(); /* show latest news items */ $result = @mysql_query("SELECT n.*, nc.category FROM news n, newsCategories nc WHERE nc.id = n.categoryId ORDER BY 'id' DESC LIMIT 0, 5"); if (!@mysql_numrows($result)) { print "No news items in database."; } while ($newsItem = @mysql_fetch_array($result)) { $headline = $newsItem["headline"]; $categoryName = strtolower($newsItem["category"]); $categoryId = $newsItem["categoryId"]; if (strlen("$headline") > '30') $headline = substr("$headline", 0, 30) . "..."; if (!$id) { $content .= "<a href=\"$PHP_SELF?id=".$newsItem["id"]."&category=".$categoryId."\">".$headline." in category ".$categoryName."<br>\n</a>\n"; } } function InitializeTemplates() { global $tpl; $tpl = new FastTemplate("templates"); $tpl -> define(array(page => "page.tpl", text => "home_text.tpl", submenu_empty => "submenu_empty.tpl", footer => "footer.tpl") ); } function PrintPage($title, $date) { global $tpl; $tpl -> assign(PAGETITLE, $title); $tpl -> assign(DATE, $date); $tpl -> parse(SUBMENU, "submenu_empty"); $tpl -> parse("PAGECONTENT", $content); $tpl -> parse(FOOTER, "footer"); $tpl -> parse(FINAL, "page"); $tpl -> FastPrint(FINAL); } InitializeTemplates(); Printpage("home", Today()); ?> |
Hopelijk werkt dit voor je
Suc6!
Ik weet niet of het help, omdat in nu de volgende error krijg:
code:
1
| ERROR: get_template() failure: [templates/] |
De error die ik krijg (zie bericht hierboven), wordt veroorzaak door
Deze manier van schrijven is i.i.g. niet toegestaan. Ook
werkt niet. Ik krijg dan geen foutmelding en de boel wordt gewoon getoond, behalve de content
PHP:
1
2
3
| <? $tpl -> parse("PAGECONTENT", $content); ?> |
Deze manier van schrijven is i.i.g. niet toegestaan. Ook
PHP:
1
2
3
| <? $tpl -> assign("PAGECONTENT", $content); ?> |
werkt niet. Ik krijg dan geen foutmelding en de boel wordt gewoon getoond, behalve de content
In een laatste poging, SCHOP ik deze omhoog. Maak je hier s.v.p. niet druk om, er zijn ergere dingen
Op donderdag 01 november 2001 15:06 schreef Sibash het volgende:
In een laatste poging, SCHOP ik deze omhoog. Maak je hier s.v.p. niet druk om, er zijn ergere dingen
De officiele documentatie al geprobeerd door te nemen?De resultaten van dit stukje code, moeten worden in 'page.tpl' in het gedeelte waar de variabele 'PAGECONTENT' is aangegeven. Ik zou echter niet weten hoe ik de resultaten van mijn query in de functie PrintPage moet krijgen. Kortom, ik zit hier zeer verlegen om hulp...
Als je hints, tips weet, laat het alsjeblieft weten.
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Jawel, maar op http://www.thewebmasters.net/php/FastTemplate.phtml staat erg weinig over database koppelingen en geen voorbeelden die me kunnen helpen. Er staat wel iets over dynamische data, maar dat gaat meer over het genereren van tabellen. Ik hoopte daarom dat een bezoeker dit forum me verder kon helpen. Bij het gebruiken van de template class heb ik gebruik gemaakt van deze tutorial: http://www.phpbuilder.com/columns/sascha19990316.php3?page=3&print_mode=1Op donderdag 01 november 2001 15:13 schreef dusty het volgende:
De officiele documentatie al geprobeerd door te nemen?
De parameters uitbereiden en daarin meegeven.Op dinsdag 30 oktober 2001 17:39 schreef Sibash het volgende:
De resultaten van dit stukje code, moeten worden in 'page.tpl' in het gedeelte waar de variabele 'PAGECONTENT' is aangegeven. Ik zou echter niet weten hoe ik de resultaten van mijn query in de functie PrintPage moet krijgen. Kortom, ik zit hier zeer verlegen om hulp...
Als je hints, tips weet, laat het alsjeblieft weten.
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Dank voor de hulp, het is nu gelukt.
- page.tpl bestaat uit de lay-out de site met variabelen voor de titel, een eventueel submenu, de daadwerkelijke content en een footer.
- text.tpl bevat de tekst die geplaatst wordt in page.tpl op de plek waar de content (PAGECONTENT) hoort. In text.tpl is tevens een variabele opgenomen met daarin dynamische inhoud.
- news.tpl bevat de dynamische inhoud die geplaatst wordt op de plek waar de variabele (NEWSITEM) staat aangegeven in text.tpl.
- submenu_empty.tpl bevat het submenu. In dit geval dus geen.
- footer.tpl bevat (
) de footer.
- page.tpl bestaat uit de lay-out de site met variabelen voor de titel, een eventueel submenu, de daadwerkelijke content en een footer.
- text.tpl bevat de tekst die geplaatst wordt in page.tpl op de plek waar de content (PAGECONTENT) hoort. In text.tpl is tevens een variabele opgenomen met daarin dynamische inhoud.
- news.tpl bevat de dynamische inhoud die geplaatst wordt op de plek waar de variabele (NEWSITEM) staat aangegeven in text.tpl.
- submenu_empty.tpl bevat het submenu. In dit geval dus geen.
- footer.tpl bevat (
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
| <? include ("includes\class.FastTemplate.php"); include ("includes\inc.functions.php"); function InitializeTemplates() { global $tpl; $tpl = new FastTemplate("templates"); $tpl -> define(array(page => "page.tpl", text => "text.tpl", news => "news.tpl", submenu_empty => "submenu_empty.tpl", footer => "footer.tpl") ); } function showContent() { global $tpl; Connect(); /* show latest news items */ $result = mysql_query("SELECT n.*, nc.category FROM news n, newsCategories nc WHERE nc.id = n.categoryId ORDER BY 'id' DESC LIMIT 0, 5"); if (!mysql_numrows($result)) { $item = "No news items in database."; $tpl->assign(NEWSITEM, $item); $tpl->parse(NEWS, ".news"); } while ($newsItem = mysql_fetch_array($result)) { $headline = $newsItem["headline"]; $categoryName = strtolower($newsItem["category"]); $categoryId = $newsItem["categoryId"]; $number = $newsItem["id"]; if (strlen("$headline") > '30') $headline = substr("$headline", 0, 30) . "..."; if (!$id) { $item = "<a href=\"news.php?id=$number&category=$categoryId\">$headline</a> in category $categoryName\n"; } $tpl->assign(NEWSITEM, $item); $tpl->parse(NEWS, ".news"); } } function PrintPage($title, $date) { global $tpl; $tpl -> assign(PAGETITLE, $title); $tpl -> assign(DATE, $date); $tpl -> parse(SUBMENU, "submenu_empty"); $tpl -> parse(PAGECONTENT, ".text"); $tpl -> parse(FOOTER, "footer"); $tpl -> parse(FINAL, "page"); $tpl -> FastPrint(FINAL); } InitializeTemplates(); showContent(); Printpage("home", Today()); ?> |
Zoals in het vorige bericht staat, worden de nieuwsitems getoond door de functie showContent().
Kan deze functie misschien eenvoudiger? Nu maak ik bijvoorbeeld twee keer gebruik van:
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
31
32
33
34
35
36
| <? function showContent() { global $tpl; Connect(); /* show latest news items */ $result = mysql_query("SELECT n.*, nc.category FROM news n, newsCategories nc WHERE nc.id = n.categoryId ORDER BY 'id' DESC LIMIT 0, 5"); if (!mysql_numrows($result)) { $item = "No news items in database."; $tpl->assign(NEWSITEM, $item); $tpl->parse(NEWS, ".news"); } while ($newsItem = mysql_fetch_array($result)) { $headline = $newsItem["headline"]; $categoryName = strtolower($newsItem["category"]); $categoryId = $newsItem["categoryId"]; $number = $newsItem["id"]; if (strlen("$headline") > '30') $headline = substr("$headline", 0, 30) . "..."; if (!$id) { $item = "<a href=\"news.php?id=$number&category=$categoryId\">$headline</a> in category $categoryName\n"; } $tpl->assign(NEWSITEM, $item); $tpl->parse(NEWS, ".news"); } } showContent(); ?> |
Kan deze functie misschien eenvoudiger? Nu maak ik bijvoorbeeld twee keer gebruik van:
PHP:
1
2
3
4
| <? $tpl->assign(NEWSITEM, $item); $tpl->parse(NEWS, ".news"); ?> |
Pagina: 1