WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Göra en ändring i .tpl (https://www.wn.se/forum/showthread.php?t=26709)

clirre 2008-01-29 10:54

Hej,

Jag har (olyckligtvis) blivit tvungen att editera i .tpl-sidor och smarty-kod. Är väldigt osugen på att lära mig nån ny syntax bara för en (1) fix i en tpl-fil.

Allt jag vill göra är att hämta information från en egenskapad tabell i phplinkdirectory. Vi kan kalla den EGEN_TABELL, ifrån EGEN_TABELL vill jag skriva ut $namn och $adress från dessa två kolumner. Hur ska jag göra? Har börjat kika på Smarty-faq:en men det känns som att lära sig ett nytt programmeringsspråk.

I "vanlig" php hade jag gjort motsvarande:


Kod:


 $sql_hamta_data = mysql_query("SELECT * FROM EGEN_TABELL;");
 while($row = mysql_fetch_array($sql_sql_hamta_data)){
        foreach( $row AS $key => $val ){
  $$key = stripslashes( $val );
       
        }
            echo $namn.$adress
 }

Nån vänlig själ som kan hjälpa mig? Det skulle räcka med att veta hur man bryter ut från en .tpl-sida.

hnn 2008-01-29 14:03

Offtopic:

Din kod går att göra lite smidigare:
Kod:

$sql_hamta_data = mysql_query("SELECT * FROM EGEN_TABELL;");
while($row = mysql_fetch_assoc($sql_hamta_data))
{
 echo $row['namn'] . ' ' . $row['adress'] . '<br />'."\n";
}


Torreman 2008-01-29 15:28

Frågan skall ställas i den php-fil som anropas. I phpLD är det två filer som sköter det mesta, index.php och detail.php. Om du tex. vill visa informationen på en detaljsida så lägg till din sql-fråga och lägg resultatet i en array, tex

$data['adress'] = $rdata['adress'];

I tpl-filen så skriver du sen ut innehållet i arrayen. I main.tpl/detail.tpl lägger du bara till {$adress|escape|trim} på lämpligt ställe. Smarty's filformat .tpl fungerar som .html-filer fast med lite funktioner som körs innan den skickas till besökaren.

kullervo 2008-01-29 16:24

Urk för smarty. Deras "enkla" syntax är jobbig att ha att göra med. PHP är redan ett kompakt och enkelt språk som faktiskt är till för just det här. {php} är den bästa funktionen :) Intressant att dom gjort en templatemotor på 9600 rader kod som får spö på nästan alla punkter av t.ex. mitt 18-radiga templatesystem.

Bara så du vet verkar du ha missupfattat poängen med separera logik och markup så jag har inget bra svar på din fråga. Du får läsa i manualen hur du stoppar in data *till* templaten (assign) och hur du loopar igenom datan i templaten (foreach).

tartareandesire 2008-01-29 18:26

Citat:

Originally posted by kullervo@Jan 29 2008, 17:24
Urk för smarty. Deras enkla syntax är jobbig att ha att göra med. PHP är redan ett kompakt och enkelt språk som faktiskt är till för just det här. {php} är den bästa funktionen Intressant att dom gjort en templatemotor på 9600 rader kod som får spö på nästan alla punkter av t.ex. mitt 18-radiga templatesystem.
Bara så du vet verkar du ha missupfattat poängen med separera logik och markup så jag har inget bra svar på din fråga. Du får läsa i manualen hur du stoppar in data *till* templaten (assign) och hur du loopar igenom datan i templaten (foreach).

Håller med dig helt och hållet men samtidigt så är det stor skillnad mellan att göra en komplett templatemotor som täcker så många behov som möjligt och att göra ett litet templatesystem för eget bruk.

clirre 2008-01-30 07:16

Hej,

Tack för alla svar {php} visade sig vara det absolut enklaste sättet.

Håller med urk:en. Känns otroligt onödigt och krånligt med ett språk i språket, men jag ser troligtvis inte Den Stora Bilden.

Torreman 2008-01-30 08:38

Den stora bilden är väl kortfattat: blanda aldrig funktion och design.

Tycker inte heller om smarty. Den bakomliggande koden känns ofta onödigt komplicerad. Men det är som sagt tidigare i denna tråd i en generell templatemotor som skall kunna användas i alla möjliga situationer.

herq 2008-01-30 15:17

Du har ju en controller till din template, där ska du kontakta modellen och få datan som du sedan skickar till templaten via (beroende på hur ditt system ser ut, det borde du kunna lista ut genom att kika i övriga controllers) $smarty->tpl->assign('foo', $data); Den kommer du åt i templaten via {$foo} som det redan sagts i tråden. Att lägga en sql-sats i en template, eller till och med i en controller borde straffas med avklippt bredbandsuppkoppling :)


Alla tider är GMT +2. Klockan är nu 03:44.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson