[ spezia @ 11.08.2008. 16:49 ] @
Zanima me nesto kod smarty klase...Imam formu za unos korisnickih podataka.
Sada mi trebaju blokovi da recimo korisnik nije uneo ime,ili to ime vec postoji u bazi,nije
potvrdio lozinku....
Ja sam to resio kao pisuci za svaku gresku
{if $error1=='username'} ... {/if}
{if $error2==;password} ... {/if}
...
i u programu
if($error[username]) $smarty->assign("error1","username");
if($error[password]) $smarty->assign("error2","password");
....
Da li smarty nudi neku pogodnost kao recimo FastTemplate klasa??
Da se to kroz petlju lakse odradi.
[ dakipro @ 11.08.2008. 19:04 ] @
Iskreno, mislim da bi ti ovo bio bolji princip:

Code:

$errors = array();

//desila se greska ta-i-ta
$errors[] = "Korisnicko ime je obavezno";
...


//desila se greska ta-i-ta
$errors[] = "sifra je obavezna";
....

$smarty->assign('errors', $errors);


i u smartiju samo imas
{foreach from=$errors item=error}
{$error}<br />
{/foreach}

ili sam promasio temu? Na kakvu pogodnost tacno mislis?
[ spezia @ 11.08.2008. 21:15 ] @
Ma ja nesto tako probao..videcu ponovo.
Ma nekako mi je bilo lakse sa FastTemplate klasom,gde pravim dinamicke blokove za gresku...Pa sam se prebacio na smarty.
Mozda je on i laksi oko toga ,samo dok pohvatam njegovu logiku.
U svakom slucaju tnx
[ ColdKeyboard @ 12.08.2008. 02:06 ] @
Ajd pojasni malo kako to izgleda u tom FastTemplate ili sta tacno zelis pa cemo ti moci pomoci...


A ne vidim sta fali ovom sto je dakipro napisao, ja tako radim. Eventualno radim

Code:

if($desila_se == 'greska') {
$error .= "Poruka <br>";
}
.
.
.
.

if (!empty($error)) { $smarty->assign('error', $error); }


Pokusaj objasniti tacno sta zelis ili daj nam neki primjer...
[ spezia @ 12.08.2008. 17:03 ] @
Code:

function person_register_save(){
global $smarty,$error;
if($_REQUEST['data']){
$data=$_REQUEST['data'];
}

   $error=array();
   if(empty ($data[username])) $error['username']=1;
   if(empty($data[password])) $error['password']=1;
   if(empty($data[password2])) $error['password2']=1;
   if($data[password]!=$data[password2]) $error['different']=1;
   if(empty($data[mail])) $error['mail']=1;
   if(!(eregi("^[^@ ][email protected][^@]+\.[^@ .]+$",$data[mail])))  $errors['nmail']=1;
   
   $result=mysql_query("SELECT user_name,email  FROM user");
   while($l=mysql_fetch_array($result)){
    if( $data['username']==$l[user_name]) $error[name_take]=1;
    if($data['mail']==$l[email]) $error['email']=1;
    }
    if (count($error)==0){
    $query=mysql_query("INSERT INTO user (user_name,user_pass,user_subtext,user_subnick,user_posts,profil,lastaccess,email,reg_time)
    VALUES ( '$data[username]','$data[password]','$data[sub]','$data[subnick]',0,'$data[profil]',now(),'$data[mail]',now())");
   if(!($query))  echo "Nije uspesno izvrsena registracija";
  } 
  
        if(count($error)>0){
        person_register();
        return;    
    }
    
    $smarty->display("register_save.html");
}        

i iznad u funkciji koja poziva formu
Code:

....
if($error[username])  $smarty->assign("error1","username");
    if($error[password])   $smarty->assign("error3","password");
    if($error[password2]) $smarty->assign("error4","password2");
    if($error[different]) $smarty->assign("error5","different");
    if($error[mail]) $smarty->assign("error7","mail");
    if($error[nmail]) $smarty->assign("error6","nmail");
    if($error[email]) $smarty->assign("error8","email");
    if($error[name_take]) $smarty->assign("error2","name_take");

    
    

    
    $smarty->display("register.html");

Za sada radi->ne znam da li vam i treba template a imate celu sliku?? Meni se cini kao jednostavnije resenje,ili gresim.Poruke se pokazuju posebno ispod lozinke,ili mail-a....
Imam mali problem.U bazi imam korisnika Zexx,a u formi kada ukucam zexx ne izbacuje gresku.Samo kada iskucam sa veliko Z. Sta mi je ciniti...Da li da vracam podatke iz baze bez velika slova,pa da tako uporedjujem??
[ Man-Wolf @ 21.08.2008. 14:42 ] @
Evo ti kako sam ja to odradio:

signup.php (Ovde se obradjuju podaci, i ukoliko ima gresaka, prikazuje se ponovo stranica za registraciju):

Code:

if (!$check->check_length($data['firstname'], 35) OR strlen($data['firstname']) < 3)

// Data is not valid .... We enter the error into errors array ....
    $errors[] = "First name length must be longer than 3 characters, and shorter than 35 characters";
}
    
if (!$check->check_length($data['lastname'], 35) OR strlen($data['lastname']) < 3)

     // Data is not valid .... We enter the error into errors array ....
     $errors[] = "Last name length must be longer than 3 characters, and shorter than 35 characters";
}

if (count($errors) > 0)
{
  // Ima gresaka, prikazi stranicu za registraciju ......
  $smarty->assign("errors", $errors);
  $smarty->display("signup.tpl");
  die()
}

// U suprotnom, nema gresaka,.....
// ovde stavis sta ti treba ....


signup.tpl:

Code:

{if $errors|@count > 0}
{* Errors were reported, lets show them .... *}
<div style="border-style: dotted; border-color: red; border-width: 1; text-align: left;">
{foreach from=$errors key=k item=v}
ERROR: {$v}
<br>
{/foreach}
</div>
{/if}

.
.
.


Nadam se da sam bio od pomoci :-)

EDIT: Sad vidim da je ovo sto sam ja napisao, identicno onome sto je daki napisao :-)) Sad imas praktican primer i primenu onoga sto je rekao :-)