Forum » Server-Side scripting » Smarty leren help!
Hardstyle
Berichten: 225
avatar
Offline Stuur privebericht
Hallo allemaal.

Ik ben begonnen smarty te leren, het lukt me nu al best aardig, de basis begrijp ik nu wel.

Er is een while functie zie; http://www.smarty.net/docs/en/language.function.while.tpl

Maar dit is niet hetzelfde als de while functie die je normaal in php gebruik, is daar een alternatief voor?

Ja ik weet het je kan de while() tussen {php}{/php} zetten maar ik zoek een ander alternatief.

En als ik bijvoorbeeld een login script heb, hoe maak ik die in smarty.

Gebruik maken in de template file van {if/elseif/else} bijvoorbeeld. Hoe kan het op een andere manier, hebben jullie misschien wat voorbeelden voor mij?
Laatst gewijzigd door Jackie op 2010-12-29 18:43:21
29-12-2010 18:43
Dit topic is 275 keer bekeken door 44 verschillende leden
Reacties op: "Smarty leren help!"
1
thexeroxprojects.be
Berichten: 352
avatar
Offline Stuur privébericht
Volgens mij begrijp je het verkeerd. Smarty is eigenlijk strikt bedoeld als TEMPLATE engine. Het is natuurlijk handig dat er ook enkele statements zijn meegeleverd maar om zoals je zegt een login script te maken gebruik je best gewoon PHP om alles te checken en SMARTY om de output te tonen.
29-12-2010 19:01
Hardstyle
Berichten: 225
avatar
Offline Stuur privébericht
Dat snap ik, maar hoe begin je er aan dan?

Je checkt of je gebruikersnaam is ingevult of je wachtwoord is ingevult, dan kijk je of de gebruikersnaam wel bestaat & of het wachtwoord klopt.

Maar ik weet niet hoe ik dit moet overbrengen in een template.
(ik weet wel hoe ik iets moet laten zien via smarty maar weet niet hoe ik moet beginnen)
29-12-2010 19:05
thexeroxprojects.be
Berichten: 352
avatar
Offline Stuur privébericht
Zo doe je dat:
Code | Selecteer Alles
minimaliseren
1
2
3
$content 'hier wat data';
$smarty->assign('content',$content);
$smarty->display('template.tlp');

Nu kan je binnen je template de variable $content gebruiken op de volgende manier:

Code | Selecteer Alles
minimaliseren
1
{$content}
29-12-2010 19:30
Hardstyle
Berichten: 225
avatar
Offline Stuur privébericht
Ik zeg net, ik weet hoe ik iets moet laten zien via smarty, er staat in het topic ik begrijp de basis.

Ik heb een manier gevonden die hetzelfde doen als de while() lus.

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
$dbh = new PDO("mysql:host=localhost;dbname=xxx""xxx""xxx");

$res $dbh->prepare("SELECT *
                     FROM messages
                     WHERE `to` = 'conteaster'"
); 
$res->execute();
$res->setFetchMode(PDO::FETCH_ASSOC);

$smarty->assign("res"$res);


En dan in de template;

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
{foreach $res as $results
    <
tr>
        <
td>{$results.subject}</td>
        <
td>{$results.from}</td>
        <
td>{$results.timestamp}</td>
    </
tr>
{/foreach}


Waarom werkt het alleen met PDO en niet met mysql_query()?
29-12-2010 21:56
Webdeveloper & Programmeu
Berichten: 1000
avatar
Offline Stuur privébericht
ligt er een beetje aan op wat voor manier jij de mysql functies gebruikt!
dus laat is zien dan kunnen we je helpen.
30-12-2010 00:56
Hardstyle
Berichten: 225
avatar
Offline Stuur privébericht
Ik heb al gevonden hoe ik een while() loop kan doen.

inbox.php
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
$sql mysql_query("SELECT * FROM table")

$results = array();

while(
$res mysql_fetch_assoc($sql))
{
    
$results[] = $res;
}

$smarty->assign("results"$results);


inbox.tpl
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
{section name=messages loop=$results}
                <
tr>
                    <
td>{$results[messages].from|ucfirst}</td>
                    <
td><a href="read.php?message_id={$results[messages].id}">{$results[messages].subject|stripslashes}</a></td>
                    <
td>{$results[messages].timestamp|date_format:"%e-%m-%Y om %H:%M"}</td>
                </
tr>
{/
section}


Zo lukt het me.
30-12-2010 01:07
Reageer op: "Smarty leren help!"
1
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden