Jump to content
php.lv forumi

john.brown

Reģistrētie lietotāji
  • Posts

    510
  • Joined

  • Last visited

Posts posted by john.brown

  1. Saskāros ar problēmu. Kāds gudrinieks bija taisījis projektiņu, un db tabulām kodējumu uzlicis latin1_swedish_ci, kaut kā dabūjis tur iekšā 1257, un tas viss ir gājis. Tagad vairs neiet... Ar vien vārd sakot, ko var darīt? Vai var kā nokonvertēt to db saturu uz 1257, vai ko citu izdarīt?

  2. Pieļauju iespēju, ka var iekļauties 3 rindiņās (pati pārbaude, bez ģenerēšanas)

    if($_SESSION['control_number'] != $_POST['control_number']) die('Nepareizs validacijas kods');

    Ko tu vēl divās rindiņās gribēji likt? :)

  3. simts un 1 veidā :) Pats primitīvākais - saglabā uz diska, notepadā izmaini visu, ko gribi, un posto ;)

    Cīnīties - neglabāt hidden laukā "ļoti svarīgas" vērtības, bet izmantot sessiju priekš tā, pārbaudīt, vai tu tiešām saņem to, ko gaidi :) Īpaši paranojiskos gadījumos var dublēt sessiju un hidden, tad salīdzināt, vai sakrīt, un ja nē - skaļi bļaut "turiet zagli!" ;) Nu u.t.t.

  4. Pareiza oop gadjumā, laikam tomēr "class DB extends mysqli {..}" :)

    Bet ja iespringsti uz dažādu db izmantošanu, tad fasādes klase, un draiveru klases dažādām db. Kaut kā tādā stilā:

     

    class DB {
      private $db_driver = NULL;
    
      public function __construct($driver_name) {
       $this->db_driver = new $driver_name();
      } 
      public function insert($table,$values) {
       $this->db_driver->insert($table,$values);
      } 
      ...
    }
    class Mysqli_db {
    ...
    }
    class Postgre_db {
    ...
    }

  5. Nu, fig znajet... Es kādreiz sāku ar Perl, kur var vēl vairāk "sazin kā"... Un nekas, kad sāku putroties globālajos variabļos , sapratu, ka jālieto "use strict" ;) Un sapratu, kāpēc nav jālieto globālie variabļi... Apmācība caur pretējo, ja tā var teikt ;) Man šķiet, ja galva nav iekārtota pareizajā virzienā, tad nesapratīs nekad, bet ja ir - pilnīgi pof, kādā valodā mācīties...

     

    p.s. kaut arī, tev, protams, taisnība. c++ vai jav krietni ātrāk pieradinās pie kārtības :D

  6. Var dažādi, atkarībā, ko vajag :) Tikai ne tā, kā tev ir darīts. Un, ja gribi oop, lieto php5. ātrāk pie skaidrības varbūt tiksi...

    class Klase_1{
    private $mainigais_clas1 = NULL;
    
    public function __construct() {
    	$this->mainigais_clas1 = 'Klases 1 mainigais';
    }
    
    public function class1_func(){
    	echo $this->mainigais_clas1;
    	return $this->mainigais_clas1;
    }
    }
    class Klase_2{
    private $class1_obj = NULL;
    
    public function __construct(Klase_1 $class1_obj) {
    	$this->class1_obj = $class1_obj;
    }
    public function class2_func() {
    	//man jālieto ir pirmas klases funkcija
    
    	$this->class1_obj->class1_func();
    }
    }
    $klass2 = new Klase_2(new Klase_1());
    $klass2->class2_func(); //jaizvada 1 klases  funkciju

    class Klase_1{
    private $mainigais_clas1 = NULL;
    
    public function __construct() {
    	$this->mainigais_clas1 = 'Klases 1 mainigais';
    }
    
    public function class1_func(){
    	echo $this->mainigais_clas1;
    	return $this->mainigais_clas1;
    }
    }
    class Klase_2 extends Klase_1{	
    
    public function class2_func() {
    	//man jālieto ir pirmas klases funkcija
    
    	$this->class1_func();
    }
    }
    
    $class2 = new Klase_2();
    $class2->class2_func(); // izvada pirms klases funkciju
    $class2->class1_func(); // arī izvada pirmās klases funkciju;)

     

    Ak jā, un ja jēgā gribi tikt, tad definē tomēr katrai klasei mainīgos sākumā, un nevis lieto fīču, kura ļauj šos radīt on the fly

  7. Aaaksti gatavie... es maku programmet normali, tacu neesmu macijies javascript... man likas ka sitais ir palidzibas forums nevis dirseju forums

    Un kā tu domā, kādas atbildes pēc šitā "opusa" tev tiks dotas? Pieklājību tev neviens nav mācījis?

    Ja esi tik kruts "programmētājs", tad nebija nekādu problēmu paskatīt javascript manuāli, un saprast, kas un kā darās. Vēl jo vairāk, tev pateica priekšā, kādas funkcijas tev vajadzīgas. Tie ir web programēšanas pamati...

    Bet vai tev nav zinams kods kur jau tas ir izdarits

    Tas laikam gan nav brēciens pēc gatava koda, ne? Te ir nevis labdarības forums, bet "palīdzības" forums programmētājiem. Un nevis sliņķiem, kuri nevēlas paši domāt un mācīties!

  8. Tas viss atiecas pagaidām uz tā saukto datu slāni. Tak oop labumi ir daudz plašāki :) OOP ļauj strukturēt visu programmu loģiskajās vienībās un slāņos, kas uzlabo gan programmas struktūras saprašanu, gan atvieglo izmaiņu veikšanu vajadzības gadījumā. Kā visplašāk pazīstamo var pieminēt model-view-controller paternu. Ideālā gadījumā mēs varam mainīt jebkuru no trīs slāņiem, neaiztiekot pārējos...

    Nu, un protams OOP ir koda daudzkārtējā izmantošana. Atkal ņemot to pašu mvc, mēs rakstam kaut kādas bāzes klasses, kuras realizē vai definē katra slāņa interfeisu un savstarpējo viņu darbību, un izmantojam tās visos savos projektos, pierakstot klāt tik atsevišķas specifiskas lietas. Uz šī bāzes tiek realizēti vairums freimvorku...

    Tak foruma ietvaros ir diezgan nereāli izskaidrot kāpēc tieši oop ir labs. Var ieteikt tik lasīt par šo tēmu, piem. četru bandas "Projektēšanas patternus", vai par php5 "PHP 5 Objects, Pattens and Practice", Matt Zandstra. Nu, un ietekmējoties no lasītā, mēģināt pašam ko rakstīt tādā stilā. Iesākumā liksies dīvaini, bet tad smadzenēs kaut kas noklikšķēs, un vairs citu programēšanas stilu lietot negribēsies ;)

  9. Cik var par vienu un to pašu ;)

    Nelieciet php no installera!

    1)Uzliec normālu binary.

    2) iekš php.ini norādi extension_dir=C:\php\ext priek php5 vai c:\php\extensions priekš php4

    3) atkomentējam vajadzīgo extensionu

     

    Jau kādu ceturto reizi šito rakstu! Vai tiešām search lietot nevar :(

    artis

    No zipa izvelc to php_gd2.dll un iemet extensions mapē.

    Ļoti nav fakts, ka ies. Versijas var izrādīties dažādas...

  10. Un ko tā? Seekbots tā arī saka: No information could be accessed? Vai tipa tā? Varbūt sākumam pēdiņas pieliec pie keywords, un samaini vietām content un name. Sīkumi, bet var būt pie vainas. Sevišķi tizlais pieradums nelietot pēdiņas ;)

  11. 2 goldy

    kad vienreiz sapratīsies, ka OOP jēga parādās tikai tad, ja to uztaisa fleksiblu, var bez sāpēm nēsāt no viena projekta uz otru un bez nekādām izmaiņām to tur pielietot

    Bet tā jau ar ir. Sāc rakstīt oop, pielietot design patterns, un pēc kāda laika jauns projekts sākas ar to, ka tu kopē folderī klašu "skeletu", un pieliec klāt tik atsevišķas ekstensijas pamat klasēm :) Rakstīt kļūst jauki un patīkami :P

    Bez tam koda pavadīšana iekš oop ir daudz reālāka, kā procedūrās - tu pilnīgi noteikti zini, kur kas atrodas, nekādu rakšanos caur libiem, tipa "ar kur es to funkciju iebāzu"...

    Nē, kad esi iebraucis iekš oop kaifiem, atteikties no tiem vairs negribas :)

  12. Atvainojos par garo penteri, bet jēga tam būtu apm. tā:

    class News {
    private $id = NULL;	
    private $title = NULL;	
    private $foto = NULL;	
    private $text = NULL;	  
    private $cat_id = NULL;	
    private $date = NULL;
    
    public function set($key,$value) {
    	if(isset($this->$key)) {
    		$this->$key = $value;			
    	} 		
    }
    public function get($key) {
    	if(isset($this->$key)) {
    		return $this->$key;
    	}
    }
    public function fill($row) {
    	foreach($row as $key => $value) {
    		$this->set($key,$value);
    	}
    }
    }
    
    class NewsMapper {
    
    public function find($id) {
    	$res = mysql_query("SELECT * FROM news WHERE id=$id");
    	$row = mysql_fetch_array($res);
    	$news = new News();
    	$news->fill($row);
    	return $row;		
    }
    public function findByCategorie($cat_id,$ofset = 0,$limit = 10,$order = 'date') {
     // te dabonam ziņas kategorijai
     // atgriežam kā objektu massīvu	
    }
    public function findByDate($date_no,$date_lidz) {
     // te dabonam ziņas pēc dauma
     // atgriežam kā objektu massīvu		
    }
    public function save(News $news) {
      // te saglabājam ziņu datubāzē	
    }
    }
    
    $zinuMappers = new NewsMapper();
    // atrodam ziņu pēc id
    
    $zina = $zinuMappers->find($zinasId); 
    // dabonam ziņas kategorijā
    
    $zinas_kategorija = $zinuMappers->findByCategorie($cat_id);
    // dabonam ziņas noteiktā laika periodā
    
    $zinas_pec_laika = $zinuMappers->findByDate($datums_no,$datums_lidz);
    // izmainam ziņu un saglabājam
    
    $zina->set('title','Jauns virsraksts');
    $zinuMappers->save($zina);

    Protams, tik kā ilustrācija. Lasi par design patterns un oop pamatiem

  13. 2 blackhalt

    Tā gan laikam īsti labi nebūs. Iedomājies, tev failā ir 1000 rindu, jānis ir, piem. 3. Un ko, viņš izvedīs infu par jāni, un tālāk pārlasīs 997 rindas? :) Bez tam arī foreach dotajā gadījumā ir lieks - izpildās krietni lēnāk par for().

    <?php
    $lines=file('data.txt');
    $count = sizeof($lines);
    
    for($i = 0;$i < $count;$i++) {
    $a=explode('|',$line);
    if($_GET['id']==$a[0]) break;
    }
    echo'<h1>Personas dati</h1>';
    echo'<h2>'.$a[1].'</h2>
    <p>Year: '.$a[2].'</p>
    <p>City: '.$a[3].'</p>
    <p>Atrodas data.txt rindā: '.($i+1).'.</p>';
    // vispaar saak skaitiit no 0, ja der, tad bez +1
    ?>

  14. IMHO, tam tā vajadzētu izskatīties. Testējis gan neesmu, tak pēc loģikas, vajadzētu iet :)

    <?php
    
    $days_this_month = 31; // te dabunam konkreta menesa dienu skaitu
    
    $query = "SELECT room_id FROM rooms";
    $res = mysql_query($query);
    ?>
    <table>
    <?
    while($row = mysql_fetch_array($res)) {
    $occupied = get_occupied_dates($row['room_id']);  
    
    echo '<tr>';
    
    for($i = 1; $i <= $days_this_month; $i++) {
    	$class = in_array($i,$occupied)? 'occupied' : 'free';
    
    	echo '<td class="'.$class.'">'.$i.'</td>';
    }
    echo '</tr>';	  
    }
    ?>
    </table>
    <?
    function get_occupied_dates($room_id) {
    $occupied = array();
    $query = "SELECT DAY(oc_from) as oc_from, DAY(oc_to) as oc_to FROM activity WHERE room_id=$room_id";
    $res = mysql_query($query);
    while($row = mysql_fetch_array($res)) {
    	$occ = range($row['oc_from'],$row['oc_to']);
    	$occupied = array_merge($occupied,$occ);
    }
    return $occupied;
    }
    ?>

×
×
  • Create New...