Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Smarty mala pomoc za mene :)

[es] :: PHP :: Smarty template engine :: Smarty mala pomoc za mene :)

[ Pregleda: 4228 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

username1987
Ne radim

Član broj: 270860
Poruke: 31
178.77.27.*



Profil

icon Smarty mala pomoc za mene :)20.02.2011. u 15:45 - pre 159 meseci
Pozdrav.Počeo sam da radim malo sa Smarty-em na nagovor prijatelja i nakon pročitanih komentara. Ideja je super, pa sam ga počeo da pomalo učim ali sam zapeo kod nekih stvari pa bi volio da čujem savjete.

Prvi problem mi je što želim da uradim preko Smarty da mi se čitaju neki podatci iz baze i da se autoamtski pravi lista isčitanih npr poruka sa checkboxovima koji kad kliknem da se izbrišu.Evo koda koji sam uradio.
Ovaj kod koji ću da postavim mi izlista checkboxova onoliko koliko ima i redova u tabeli ali nece da mi izlista npr imena kao output, već u svakom redu piše array

Php
Code:
<?php
// These are the smarty files
require 'Smarty.class.php';


require 'baza.php';
$smarty = new Smarty;



$sql=mysql_query("SELECT * FROM `knjige`");



$value=array();
// For each result that we got from the Database
while ($line = mysql_fetch_assoc($sql))
{
 $value[] = $line;
}

// Assign this array to smarty...
$smarty->assign('podaci',$value);


// Display the news page through the news template
$smarty->display('ch.tpl');


?>


Evo tpl koda.
Code:
<html>
<head>
</head>

<body>

{html_checkboxes name='id' values=$podaci output=$podaci.naziv separator='<br />'}

</body>
</html>


Slijedeće šti mi treba je da mi neko prokomentariše kod koji sam uradio i da li je ispravan način.Uradio sam npr ovaj prethodni primjer u php ali sam ga obradio u Smarty.Zanima me da li sam ispravno ovo uradio.

Php
Code:
<?php

require 'Smarty.class.php';

require 'baza.php';
$smarty = new Smarty;


$uzmi=$_POST['checkbox'];

foreach($uzmi as $nesto)
{
    $upit=mysql_query("DELETE FROM $tabela WHERE id=$nesto");
}

if($upit){
    $value='true';
}
else
{
    $value='ne';
}

// Assign this array to smarty...
$smarty->assign(upit,$value);


// Display the news page through the news template
$smarty->display('izbrisi.tpl');

?>


Tpl
Code:
<html>
<head>
  </head>
  <body>
  {if $upit='true'}
  Uspjesno izbrisano hahdqodqohdoq
  {else}
  Nemoze
  {/if}
 </body>
</html>


Samo da napomenem da mi ovaj kod funkcioniše i da radi onako kako sam ga zamislio.

I 3će pitanje je zašto bi koristio npr ovu mogućnost Smarty-a

Code:
{$smarty.post.page}

kada mogu uraditi to POST metodom u Php i samo poslati ispis u templejt. Malo me ovo zbunilo jer ako smarty sluzi za razdvajanje logike od prezentacije, zašto nudi ovu opciju ako bi to mogao uraditi i u Php.

I želio bih da se svima zahvalim na komentarima i savjetima, početnik sam u Php tako da molim malo strpljenja.
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Član broj: 31848
Poruke: 1792
..106.109.adsl.dyn.beotel.net.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Smarty mala pomoc za mene :)20.02.2011. u 20:37 - pre 159 meseci
nulti problem koji se tice prvog problema je sto zelis da "preko Smarty da mi se čitaju neki podatci iz baze". :) Kao sto si i sam rekao, smartijem treba da radis samo prezentacionu logiku aplikacije, da kazem kao najpravilniji pristup upotrebi bilo kog template engina, te stoga ne bi on smeo da ima dodira uopste sa bazom, niti da zna niti da ga zanima dal su podaci iz baze ili iz xml-a ili iz memorije itd.

U prvom problemy je negde problem oko formata niza koji saljes, probaj da ga formatiras tako da on bude asocijativni (id=>naziv) pa onda samo niz prosledi html_checkboxes funckiji. Ili dva nezavisna niza. Probaj sa dva niza prvo pa onda sa asocijativnim nizom, lose prosledjujes parametar za output (prosledjujes clan pod-niza kao clan niza).
2. blizu. Smartijem samo pokazuj poruke, a poruke biraj odnosno setuj u php-u, a ne u smartiju preko statusa upita. Jeste da radi, ali nije dobro odvajanjem prezentacione od aplikacione logike. Napravi jednu promenjivu negde u neaderu sajta i ako njoj setujes iz php-a recimo
$smartyInfosLabel = "Uspesno je obrisan (izmenjen, dodat, snimljen, pomeren....) podatak tajitaj";
onda ce smarty da pokaze tu poruku. Ne bi trebao smarty da gleda da li je upit izvrsen i koje mu je stanje i da li ti uopste koristis mysql kao bazu niti da li koristis bazu uopste.
Delovace ti komplikovano, ali se visestruko isplati, posle dodas labelu za Errors na primer, koja ce biti crvene boje, i NISTA ne moras da menjas u templejtima posle.
3. Convenience, u formama recimo, u templejtu imas odmah
<form>
<input name="search_string" value="{$smarty.post.search_string|default:'Pretraga'}" />
....
</form>

Ili u formi za login ili kontakt formi, ista stvar.
Samo da ponovo pokazes neki podatak ako ga vec ima u postu ili u getu, cisto komfora radi.

Samo malo jos dublje poradi na odvajanju prezentacije logike. Procitaj jos malo o MVC arhitekturi i svakom elementu posebno, pa probaj da ih tako i tretiras. Idealno zamisli da svaki element bude nezavisan, znaci da kontroler uopste ne zavisi od modela, da view u potpunosi moze da zameni model ili cak i kontroler, a da nije potrebna izmena templejta itd.
 
Odgovor na temu

username1987
Ne radim

Član broj: 270860
Poruke: 31
178.77.28.*



Profil

icon Re: Smarty mala pomoc za mene :)20.02.2011. u 23:51 - pre 159 meseci
Prvo da ti se zahvalim za veoma brz i iscrpan odgovor.Ove zadnje druge 2ije stavke su mi jasne.
Što se tiče MVC arhitekture,daleko sam od toga,mada sam malo preletio CodeIgniter i 10ak-20 tutoriala, malo dokumentacije na sajtu, čisto onako da vidim o čemu se radi.Shvatio sam moć frameworka,mada sam iskreno daleko od toga. Tek sam počeo da učim PHP.
Ne želim da "kilavim" i ovo što sam do sad naučio i da radim OOP nepravilno.Tek` kada naučim proceduralno raditi dobro, onda ću učiti OOP.
Dosta o tome :)

Ovo prvo pitanje me muči,još nisam uspio da nadjem odgovor. Evo već par sati pokušavam sa raznim idejama.Netražim da se piše kod,ionako sam sve svoje postavio ali dobro bi došao primjer sa kodom. Tek 4-5 mjeseci radim Php.
Hvala svima,pogotovo Daki-ju :)
 
Odgovor na temu

username1987
Ne radim

Član broj: 270860
Poruke: 31
178.77.4.*



Profil

icon Re: Smarty mala pomoc za mene :)21.02.2011. u 19:25 - pre 159 meseci
Evo da postavim i ovaj dio koda što sam uradio,čisto onako da se prokomentariše. Mnogo mi je pregledniji sada templejt jer sam mu samo proslijedio varijablu a uslov sam postavio u php fajlu.
Evo dio php fajla

Code:
$uspjesno="Ovo se prikazuje ako je uspješno izbrisano";
$neuspjesno="Nije uspjesno izbrisano";



$uzmi=$_POST['checkbox'];

foreach($uzmi as $nesto)
{
    $upit=mysql_query("DELETE FROM $tabela WHERE id=$nesto");
}

if($upit){
    $smarty->assign(vrijednost,$uspjesno);
}
else
{
    $smarty->assign(vrijednost,$neuspjesno);
}


// Display the news page through the news template
$smarty->display('izbrisi2.tpl');


A u tpl, sam samo prikazau varijablu vrijednost i on čita iz nje u zavisnosti koji je uslov ispunjen.U kratkim crtama komentari,čisto onako još da znam na šta da obratim pažnju. Hvala
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Član broj: 31848
Poruke: 1792
..106.109.adsl.dyn.beotel.net.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Smarty mala pomoc za mene :)21.02.2011. u 20:07 - pre 159 meseci
Pa ok je ovako. Vremenom ce ti se komplikovati kod pa ces videti koliko je kod ustvari ziv i koliko se menja, ali je ok princip.
Ukljuci error_reporting na E_ALL cisto da teras pravilnu sintaxu (ako vec nisi i ako je ovo samo draft koda) i vremenom ces poraditi na nazivima promenjivih, kad ti kod postanem sve veci i veci
 
Odgovor na temu

[es] :: PHP :: Smarty template engine :: Smarty mala pomoc za mene :)

[ Pregleda: 4228 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.