PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
Template failid, mysql, andmed ja kontroll
Postitaja: mrq 2004-11-19 16:29:43
Ühesõnaga mul on üks ideefix aga idee vajab veel läbimõtlemist. Nimelt kasutan toredat kleepimise tehnika template näol. Loon template faili ja kirjutan sisse mida tahan. Alusfailiks on fail, mis ei sisalda bodyt aga kõik titled ja headid on seal kirjas. Ehk siis ühtne style jääb sinna. Ühesõnaga kõik on tore nii kaua kui suudad nautida tabelite ja andmete pistmist ükskõik kuhu veebi ilma, et midagi lolliks läheks.

Aga probleem tekib siis, kui on vaja teha kontrolle ning piirata andmete väljastamist. Kasutan ainult klasse ja nendesiseseid funktsioone.

Ühesõnaga on nt. kaks klassi. Üks tegeleb teemadega ja teine tegeleb kasutajatega.
Teemal on lisaparameeterid: lukus, autor, oigus
Kasutajal on lisaparameeter: oigus

Teemat saab kustutada, muuta kui (teema.autor = kasutaja.id AND teema.lukus=0) OR teema.oigus = kasutaja.oigus

Nimelt tekib küsimus, et kus kohas oleks mõistlikum teha sellist kontrolli, kas teema klassi sees või sellest väljapool ehk siis näiteks tase kõrgeml olev foorum klass, mis tegeleb kogu üldpildi kokkupanemisega. Foorum klass saaks andmed kätte nt. masiivi näol. Foorum klassi jaoks ei omaks üldse tähtsust kust andmed tulevad.

Mis oleksid seejuures tekkivad probleemid:
1. Andmeid küsitakse rohkem kui vaja
2. Andmetoimingud hakkavad suhtlema ainult masiivi või faili näol

Mis oleksid eelised:
1. Alamklassid oleksid iseseisvad üksused, mis tegelevad ainult andmete pumpamistega ja oskavad suhelda nende objektidega kust andmeid saada
2. Ülemised klassid oskavad tegeleda ainult andmetöötlusega masiivi näol
3. Kõik loodavad klassid oleksid iseseisvad.(Taaskasutatav kood)

Näide kuidas umbes praegu on tehtud. Ühesõnaga toorelt võtan andmebaasist andmed ja kleebin templade külge. Siin on väga raske nt. piirata seda, et kõiki kasutaja andmeid ei näidataks. Nt. mingi konkreetne veeru jätaks kuvamata!


PHP kood:
 
require_once'_file.php';
require_once
'_mysql.php';
require_once
'_html.php';

$tmpltsDir 'templid/';

define("TEEMA"file::read('teema.tpl.php'));
define("TEEMAD"file::read('teemad.tpl.php'));

class 
teema{
   function 
koik(){
        global 
$mysql;
        
$rakend $mysql->lause("SELECT * FROM teema WHERE parent_id=$id ORDER by kord");
        while (
$teema $mysql->tagasta_masiiv($rakend)) {
            
$teemad['teemad'] .= file::parse_template(TEEMA$teema);
        }
        return 
file::parse_template(TEEMAD,$teemad);
   } 
}

define("KASUTAJAD",file::read('kasutajad.tpl.php',$tmpltsDir));
define("KASUTAJA",file::read('kasutaja.tpl.php',$tmpltsDir));

class 
kasutaja{
    
/*
    * Kasutajad
    */
    
function koik(){
        global 
$mysql;
        
$rakend $mysql->lause("SELECT * FROM kasutaja WHERE deleted=0");
        while(
$rida $mysql->tagasta_masiiv($rakend)){
            
$valja['kasutajad'] .= file::parse_template(KASUTAJA$rida);
        }
        return 
file::parse_template(KASUTAJAD$valja);
    }
}

Kõiksugused vastused on oodatud. Võite lolliks ka sõimata kui parem hakkab ;)

Viimati muudetud: 19-11-2004 16:34:07
Muutja: mrq
Põhjus:


Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0915780067444