fundacja tvn joomla-cms.com.pl
A+ A A-

Class modify date and time

  • Kategoria: Class
  • Opublikowano: sobota, 03, styczeń 2015 14:23
  • Super User
  • Odsłony: 7500

Potrzebowałem klasy do obsługi czasu w PHP więc ją wykonałem.

Od jakiegoś czasu zajmowałem się projektem z dużą ilością danych zapisywanych w dwóch formatach do bazy danych i jeszcze parę innych, jak można tak napisać. Jeden unixsowy, a drugi mysql (tradycyjny).  Ciągłe zmienianie się zapisów do bazy danych, a to w jednym formacie, a to w drugim doprowadzało mnie do pi…pi…pi.  Postanowiłem zrobić klasę, która te wszystkie rzeczy będzie miała w sobie i będzie obsługiwać nie tylko konwersję pomiędzy formatami,  ale także jeszcze wyświetlała całą datę z polskimi dniami jak też z polskimi miesiącami. Ponadto potrzebowałem modyfikowania tej daty albo dodawanie albo odejmowanie dni miesięcy lat, a także czasu godzin, sekund, minut. Tak właśnie powstała klasa którą nazwałem modify_date_and_time czyli modyfikuj datę i czas. Myślę że nie jednemu z was się przyda do pracy, albo do zabawy.

 Wywołanie banalnie proste określamy datę i potem używamy tych metod które są nam potrzebne np. żeby przekonwertować datę na czas unixsowy wystarczy taki kawałek kodu:

 

                      

 
                 $KK = new  modify_date_and_time();
    $KK->set_dates('2015-01-03 08:09:11');  
  ## czas mysql zmienia na uniksowy  ## 
          echo  $KK->format_unix().'
'; 
 
  ## czas uniksowy zmienia na mysql  ## 
  $unix = new  modify_date_and_time();  
  $unix->set_dates('1420268951');
    echo '
'.$unix->format_mysql().'
';
 

Jeżeli natomiast chcemy całą datę z polskimi miesiącami to tak:

 

        $KK = new  modify_date_and_time();
  $KK->set_dates('2015-01-03 08:09:11');  
  ## Cała data z nazwami dni i miesięcy ##
   echo $KK->data_all($cale_nazwy=1).'
';
 

Możemy wyświetlać zmodyfikowaną całą datę jak też pojedyńcze wartości zmodyfikowane jak i nie zmienione.

 Klasa pozwala zrobić odlicznie od data-poczatek do data-koniec pokazuje ile pozostało lat, miesięcy, tygodni i dni.

Całość co potrafi klasa poniżej.

modify_date_and_time.php

/** 
* PHP 5.1
* @version v1 modify_date_and_time
* @license Apache License, Version 2.0.
* @author Adam Berger <ber34#o2.pl>
* @Site www.joomla-cms.com.pl
*/
 
Class modify_date_and_time{
 
   private $years;
   private $month; 
   private $day;
   private $hour; 
   private $minutes;
   private $seconds;
   private $data_czas;
 
 
  public function __construct(){
    $this->dates= new DateTime();
  }
 
   public function data_day($plu_min, $day){
      $this->dates->modify( $plu_min.$day.' day' );
      return $this->dates->format('d');  
  }
 
     public function data_month($plu_min, $month){
      $this->dates->modify( $plu_min.$month.' month');
      return $this->dates->format('m');  
  }
 
     public function data_year($plu_min,$year){
     $this->dates->modify( $plu_min.$year.' years' );
      return $this->dates->format('Y');  
  }
 
 
     public function time_hour($plu_min, $hour){
      $this->dates->modify( $plu_min.$hour.' hour' );
     // return date('G', strtotime($plu_min.$hour.' hour'));  
     return $this->dates->format('G');
  }
 
     public function time_minute($plu_min, $minutes){
      $this->dates->modify( $plu_min.$minutes.' minutes');
      return $this->dates->format('i');  
  }
 
     public function time_seconds($plu_min, $seconds){
      $this->dates->modify( $plu_min.$seconds.' seconds' );
      return $this->dates->format('s');  
  }
 
 
   public function set_dates($praca){
         $this->format = $praca;
     $jj = preg_split('/[-: ]/', $this->format);
     if(!empty($jj[2])){
           $this->years =$jj[0];
         $this->month =$jj[1];         
         $this->day   =$jj[2];
          }
    if(!empty($jj[3])){      
         $this->hour  =$jj[3];
         $this->minutes =$jj[4];
         $this->seconds =$jj[5];  
         }
     }
 
       public function format_mysql(){ 
  ##  format MySQL  ##
      return date('Y-m-d H:i:s', $this->format);   
  }
 
  public function format_unix(){ 
  ##  format unixsowy  ##
      return strtotime($this->format);   
  }
 
 
      public function get_years(){  
          return $this->years;  
     }
 
   public function get_month(){  
          return $this->month;  
     }
 
  public function get_day(){  
          return $this->day;  
     }
 
 
   public function get_hour(){  
          return $this->hour;  
     }
 
   public function get_minutes(){  
          return $this->minutes;  
     }
 
   public function get_seconds(){  
          return $this->seconds;  
     }  
 
 
 
  public function data_modifi(){
   return  $this->dates->setDate($this->years, $this->month, $this->day);   
     }
 
   public function time_modifi(){  
     return $this->dates->setTime($this->hour, $this->minutes, $this->seconds); 
    }
 
    ## data mysql 2015-01-03 08:09:11 ##
    ## parametr nazwy skrócone czy czałe ## 
   public function data_all($cale_nazwy=1){
 
   if($cale_nazwy === 1){
      $dni = array('niedziela','poniedziałek','wtorek','sroda','czwartek','piątek','sobota');
 
    $miesiace = array(1 => 'styczeń',2 => 'luty',3 => 'marzec',4 => 'kwiecień',5 => 'maj',6 => 'czerwiec',7 => 'lipiec',
                  8 => 'sierpień',9 => 'wrzesień',10 => 'październik',11 => 'listopad',12 => 'grudzień');
 
   }else{
     $dni = array('nie','pon','wto','sro','czw','pią','sob');
 
  $miesiace = array(1 => 'sty',2 => 'lut',3 => 'mar',4 => 'kwi',5 => 'maj',6 => 'cze',7 => 'lip',
                  8 => 'sie',9 => 'wrz',10 => 'paź',11 => 'lis',12 => 'gru');
   }
     $czas = ' '.$dni[$this->dates->format('w')];
     $czas.= ' '.$this->dates->format('d');
     $czas.= ' '.$miesiace[$this->dates->format('n')];
     $czas.= ' '.$this->dates->format('Y');
 
       return $czas .= ' r. Godzina '.$this->dates->format('H:i:s');
  } 
 
 
  ## sprawdzamy ile dni pozostało ##
  ## $param może być 1 albo 2 albo  albo 3 albo 123 albo 12 albo 13 albo 23
    ## Jeżeli data end jest pusta to liczy do obecnego czasu ##  
    public function set_date_start_end($param, $data_end){
 
  $data_end = strtotime($data_end); 
 
 if(in_array(1,$param)){
    $zostalo_dni = ' Dni '.floor(($data_end - $this->format_unix())/ 86400);
 }else{$zostalo_dni=null;}
 
 if(in_array(2,$param)){
    $zostalo_tygodni = ' Tygodni '.floor(($data_end - $this->format_unix())/ 604800);
 }else{$zostalo_tygodni=null;}
 
 if(in_array(3,$param)){
     $zostalo_miesiecy = ' Miesięcy '.floor(($data_end - $this->format_unix())/ 2592000);
   }else{$zostalo_miesiecy=null;}
 
   if(in_array(4,$param)){
    $zostalo_lat =' Lat '.floor(($data_end - $this->format_unix())/ 31104000);
   }else{$zostalo_lat=null;}
 
   $this->data_czas = 'Pozostało '. $zostalo_dni.$zostalo_tygodni.$zostalo_miesiecy.$zostalo_lat;
 
}
 
public function set_date_time_start_end($param, $data_end){ 
 
      $data_end = new DateTime($data_end);  
 
         $diff  = $this->dates->diff($data_end); 
 
 
 if(in_array(1,$param)){ 
    $zostalo_dni = ' Dni '.floor($diff->format("%d")); 
 }else{$zostalo_dni=null;} 
 
 if(in_array(2,$param)){ 
    $zostalo_tygodni = ' Tygodni '.floor(strtotime($diff->format("%Y-%m-%d"))/604800); 
 }else{$zostalo_tygodni=null;} 
 
 if(in_array(3,$param)){ 
     $zostalo_miesiecy = ' Miesięcy '.floor($diff->format("%m")); 
   }else{$zostalo_miesiecy=null;} 
 
   if(in_array(4,$param)){ 
    $zostalo_lat =' Lat '.floor($diff->format("%Y")); 
   }else{$zostalo_lat=null;} 
 
   if(in_array(5,$param)){ 
    $zostalo_godzn =' Godzin '.floor($diff->format("%H")); 
   }else{$zostalo_godzn=null;} 
 
   if(in_array(6,$param)){ 
    $zostalo_minut =' Minut '.floor($diff->format("%i")); 
   }else{$zostalo_minut=null;} 
 
   if(in_array(7,$param)){ 
    $zostalo_sekund =' Sekund '.floor($diff->format("%s")); 
   }else{$zostalo_sekund=null;} 
   //$this->data_time_czas =  $diff->format("%Y-%m-%d %H:%I:%S"); 
     $this->data_time_czas = 'Pozostało '. $zostalo_dni.$zostalo_tygodni.$zostalo_miesiecy.$zostalo_lat.$zostalo_godzn.$zostalo_minut.$zostalo_sekund;
} 
 
   public function get_date_time_start_end(){ 
         return $this->data_time_czas; 
     } 
   public function get_date_start_end(){
       return $this->data_czas;
   }
}
 

index.php

 $KK = new  modify_date_and_time();
    ## czas start normalny ##
    $KK->set_dates('2015-01-03 08:09:11');  
    ## Co pokazać 1 = dni 2 = tygodnie 3 = Miesiące 4 = lata ##  
    $param=array(1,2,3,4,5,6,7);
                           ## czas koniec##
         $KK->set_date_start_end($param, '2018-01-03 08:09:11');
    echo $KK->get_date_start_end().'
';
 
               ##  Cała data i czas ##
               $KK->set_date_time_start_end($param, '2018-01-03 08:09:11'); 
          echo $KK->get_date_time_start_end().'
'; 
 
 
       ## Rok nie zmodyfikowany ##   
     echo $KK->get_years().'
';  
     ## Miesuiąc nie zmodyfikowany ##
     echo $KK->get_month().'
';
   ## Dzień nie zmodyfikowany ##
    echo $KK->get_day().'
';
     ##Godzina nie zmodyfikowana ##
    echo $KK->get_hour().'
';
     ## Minuty nie zmodyfikowane ##
    echo $KK->get_minutes().'
';
      ## Sekundy nie zmodyfikowane ##
   echo $KK->get_seconds().'
';
 
    ## Cała data z nazwami dni i miesięcy ##
     echo $KK->data_all($cale_nazwy=1).'
';
 
  ## czas mysql zmienia na uniksowy  ## 
      echo  $KK->format_unix().'
'; 
 
 ## Date ##
 $KK->data_modifi();
 $year=8;
 $month=2;
 $day =19;
 
  echo $KK->data_year('-', $year);
  echo $KK->data_month('+', $month);
  echo $KK->data_day('-', $day);
 
 ## time ##
 $KK->time_modifi();
 $hour=10;
 $minute=5;
 $seconds= 10;
 
  echo $KK->time_hour('+', $hour);
  echo $KK->time_minute('-', $minute);
  echo $KK->time_seconds('+', $seconds);
 
 
 
  ## czas uniksowy zmienia na mysql  ## 
  $unix = new  modify_date_and_time();  
  $unix->set_dates('1420268951');
    echo '
'.($unix->format_mysql()).'
';
 
 
 
<span style="font-size: 12pt;"><span style="color: #c0c0c0;">A to efekt końcowy:</span>
 
 
</span>

 
 
 

 

Class Language

  • Kategoria: Class
  • Opublikowano: niedziela, 05, październik 2014 13:38
  • Super User
  • Odsłony: 8579

Class Language

Od pewnego czasu szukałem klasy, która była by odpowiednia do mojego projektu, postanowiłem wprowadzić dwu języczność. Poszukiwania nie przyniosły zadowalających efektów, które chciałem osiągnąć. Wykonałem klasę, którą nazwałem "Class Language". Klasa bardzo lekka, przejrzysta i bardzo wydajna zero zamuleń. Do "Class Language” można podpiąć dowolną ilość języków, które ma obsługiwać, cała treść tłumaczenia znajduje się w osobnym pliku nazwanym lang.ini, dane w nim się znajdujące są importowane do metody i tam przetwarzane w zależności od języka, jaki na chwilę obecną używamy.

Samo używanie jest banalnie proste sprowadza się do podania języka, jaki ma obowiązywać w danym momencie podajemy go, jako liczby 1 to polski 2 to angielski itd. trzeba zachować tylko jedną regułę w pliku .ini musimy podawać takie same nazwy dla poszczególnych języków.

Jeżeli język polski to w pliku lang.ini tablica [pl] jak angielski to tablica [en] jak czeski to tablica [cz] itd. Następną zmienną, którą należy podać do klasy jest położenie pliku lang.ini z naszymi tłumaczeniami podajemy ścieżkę do pliku. No i już na koniec pozostaje nam tylko określenie słów do tłumaczenia, przez odpowiednią metodę $lang->_lang("ZALOGUJ"); albo $lang->_lang("WYLOGUJ");

Jak wspomniałem wyżej klasa bardzo prosta i wydajna nie powinna przysporzyć w obsłudze żadnych problemów, życzę udanego użytkowania.

 

 

index.php

 
     require_once('class_lang.php'); 
/* Okresl ktory jezyk "1" to polski "2" to angielski */
/* Specify which language "1" is the Polish "2" is an English */
        $file="lang.ini"; 
        $pl=1; 
        $en=2; 
        $lang = new class_lang($en, $file); 
    echo $lang->_lang("ZALOGUJ");    
    echo $lang->_lang("WYLOGUJ");
 

lang.ini

 
 [pl]
 ZALOGUJ= "Zaloguj PL"
 WYLOGUJ= "Wyloguj PL"
 [en]
 ZALOGUJ= "Zaloguj EN"
 WYLOGUJ= "Wyloguj EN"
 
class_lang.php
 
 class class_lang{ 
 
   private $whatlang; 
   private $lang      = array(1=>"pl", 2=>"en", 3=>"cz", 4=>"br"); 
   private $lang_tabl = array(); 
   private $pl        = array(); 
 
 
    public function __construct($whatlangg, $file){ 
           if(file_exists($file)){ 
            $this->lang_tabl = parse_ini_file($file, true); 
           }else{ 
             die("Brak Pliku lang.ini"); 
           } 
           if(!empty($whatlangg)){ 
           $this->whatlang = $this->lang[(int)$whatlangg];     
           }else{ 
            die("Brak okreslonego jezyka"); 
           }        
      } 
 
    private function lang(){  
        if(!empty($this->whatlang)){ 
         return $this->whatlang;  
        }else{ 
         return "pl";  
        }          
    } 
 
    private function multi_lang($param){ 
      $this->pl = $this->lang_tabl[$param];    
    }  
 
    private function get_multi_lang(){ 
        return $this->pl; 
    } 
 
    public function _lang($langgg){   
           $this->multi_lang($this->lang()); 
           if($lan = $this->get_multi_lang()){ 
               return $lan[$langgg]; 
           } 
     }        
}
 

 

 

demo language

 

{jcomments on}

Uniwersal Import Xml

  • Kategoria: Class
  • Opublikowano: niedziela, 03, sierpień 2014 18:41
  • Super User
  • Odsłony: 38187

Uniwersal Import Xml

 

 

Od pewnego czasu podczas wykonywania różnych zleceń z plikami .xml napotykałem na problem , który mnie zawsze irytował . Problem polegał na tym, że za każdym razem musiałem robić nowy integrator pod dany plik .xml i danych się tam znajdujących. Jeżeli kiedykolwiek używaliście takie pliki i importowaliści dane do serwisu to zapewne spotkaliście się z takim problemem że nie które pliki .xml nie pasowały i nie szło przeprowadzić importu zawartości owego pliku. Postanowiłem zrobić klasę uniwersalną żeby każdy , no prawie każdy plik pasował i szło go zaimportować i odczytać. Pomysł oparłem na klasie którą nazwałem „Uniwersal Import Xml „ teraz w łatwy sposób mogę przeprowadzić operację na plikach .xml. Efekt mojej pracy chciałem wam przedstawić.

Same działanie klasy jest banalnie proste. Podajemy ścieżkę z tablicy $_FILES i $_POST. $_FILES    zawiera naszplik .xml do importu, a $_POST znaczniki, które chcemy zaimportować. Dla lepszego zobrazowania działania pokażę formularz i znajdujące się tam dane. Potrzebne dane do importu bierzemy z samego pliku .xml, które nas interesują. Pierwsze pole formularz przypisujemy nasz zbiór i podzbiór oddzielone && , a potem w zależności od zapotrzebowania np. chcemy uzyskać takie dane jak : id, cena, tytuł, url, trzy z nich są selektorami, a jeden to Tag pliku .xml. Teraz tak tytuł jest w tagach „<tytuł>Nasz tytuł</ tytuł >” , a reszta danych znajduje się w tagch jak i w selektorach

 

<dane id=”123” cena=”34,66” url=”http://www.example.com></dane>.

W polach formularza przypiszemy takie wartości.

 

1. nasz zbiór i podzbiór „zbior&&podzbior”

2. nasz tytuł w tagu „tytuł”

3. nasze dane w Tagu i selektorze „dane&&id

 

4. nasze dane w Tagu i selektorze „dane&&cena

 

5. nasze dane w Tagu i selektorze „dane&&url”

 

 

 

 

Reszta danych w pliku nas nie interesuje tak jakby jej tam nie było.

I tak wysłany formularz zwróci nam potrzebne dane w postaci tablicy.

Następny przykład jeżeli plik .xml ma w sobie dane w postaci tylko tagi <?> to wpisujemy

 

  1. nasz zbiór i podzbiór „zbior&&podzbior”
  2. nasz tytuł w tagu „tytuł”
  3. nasza cena w Tagu „cena”
  4. nasz url w Tagu „url”

 

 

 

 

I tak wysłany formularz zwróci nam potrzebne dane w postaci tablicy.

Prawda że to rozwiązanie jest bardziej przyjazne programiście niż dostosowywanie za każdym razem importera pod dany plik. Dla mnie jest to bardzo przydatne.

Może i wam ułatwi pracę w jakiś tam sposób.

 

test.php

 

 
<p style="margin: 0cm 0cm 0.0001pt; line-height: normal;"><form id="" method="post" action="test-post.php" enctype="multipart/form-data"><label>Wczytaj Plik Obcy:</label>
 
<input type="text" name="ZBIOR" placeholder="ZBIOR && PODZBIÓR" required="required" /><b style="color:red;">* Zbiór znaczników podzielony &&</b>
 
<input type="text" name="MARKA"  placeholder="MARKA" required="required" /><b style="color:red;">* Tytuł</b>
 
<input type="text" name="MODEL"  placeholder="MODEL" required="required" /><b style="color:red;">*</b>
 
<input type="text" name="CENA"  placeholder="CENA" required="required" /><b style="color:red;">*</b>
 
<input type="text" name="CENA_NETTO"  placeholder="CENA_NETTO" />
 
<input type="text" name="VAT"  placeholder="VAT" />
 
<input type="text" name="ID"  placeholder="ID" />
 
<input type="text" name="URL_IMG"  placeholder="URL_IMG" required="required" /><b style="color:red;">*</b>
 
<input type="text" name="URL_PROD"  placeholder="URL_PROD" />
 
<input type="text" name="OPIS"  placeholder="OPIS" required="required" /><b style="color:red;">*</b>
<input type="file" name="fileimportxml" accept="text/xml" placeholder="wczytaj plik" required="required" />
<input type="submit" id="" value="Zapisz >>" class="przycisk" /></form>
<hr></p>
 

 

test-post.php

 

 
include("uniwersal_import_xml.class.php");
 
   $import_xml = new uniwersal_import_xml($_FILES);
   $import_xml->save_xml();
   $import_xml->wczytaj_post($_POST['MARKA'], $_POST['MODEL'], $_POST['CENA'], $_POST['ID'], $_POST['VAT'], $_POST['URL_IMG'], $_POST['URL_PROD'], $_POST['OPIS']);
 
               ### nasze aukcje ###
          $ff = $import_xml->uniwersal_plik_xml();
           //// print_r($ff);
          for($i=0; $i < count($ff['MARKA']); $i++){
             // print_r($ff);
               ### wyświetlamy ###
             if(!empty($ff['MARKA'])){
                echo "
".$i."ID ".$ff['ID'][$i]."
";
                echo "
".$i."marka ".$ff['MARKA'][$i]."
";
                echo "
"."model ".$ff['MODEL'][$i]."
";
                echo "
".$i."cena ".$ff['CENA'][$i]."
";
         // echo $ff['CENA_NETTO'][$i]."
";
                echo "
".$i.$ff['VAT'][$i]."
";
                echo "
".$i.$ff['URL_IMG'][$i]."
";
                echo  "
".$i.$ff['URL_PROD'][$i]."
";
                echo "
".$i."opis ".$ff['OPIS'][$i]."
";
             }
         }

 

uniwersal_import_xml.class.php

 

 
#The MIT License
###############################
#Copyright (c) 2014 Adam Berger
###############################
#Permission is hereby granted, free of charge, to any person obtaining a copy
#of this software and associated documentation files (the "Software"), to deal
#in the Software without restriction, including without limitation the rights
#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
#copies of the Software, and to permit persons to whom the Software is
#furnished to do so, subject to the following conditions:
###############################
#The above copyright notice and this permission notice shall be included in
#all copies or substantial portions of the Software.
###############################
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
#THE SOFTWARE.
##############################</p>
<p>/**
 * PHP 5.1
 */
 
/**
 * @version 2.00
 * Full uniwersal import xml
 * @author Adam Berger <ber34#o2.pl-->
 * Class allows you to import a variety of files.
 * Xml assigning appropriate tags that you want to read.
 * We read the same data from different files.
 * The structure of the document must remain the same in each of them. 
 * Tags that you want to display the message given in the table.
 *
 * Klasa pozwala na import różnych plików .xml z przypisaniem odpowiednich tagów, 
 * które chcemy odczytać. 
 * Możemy odczytać te same dane z różnych plików.  
 * Struktura dokumentu musi pozostać taka sama w każdym z nich. 
 * Tagi które chcemy wyświetlić podajemy w tablicy post.
 * Pełny uniwersalny kontapitybilny z ceneo, nokut, okazje, aukcyjny i jeszcze parę innych  
 */</p>
<p>class uniwersal_import_xml {
 
     public $file  = array();
     public $type;
     public $xml_name;
     public $types;
     public $ile_xml;
     public $kk;
     public $ww;
     public $pp = array();
     public $bb = array();
     public $error = false;
     public $post  = array();
     public $t     = array();</p>
<p>    public function __construct($files) {
        if(!empty($files)){
            $this->file[]= $files;
            list($kkk, $this->ww)=each($this->file[0]);
          }
        if(array_key_exists($kkk, $this->file[0])){
              $this->kk = $kkk;
          }else{
              $this->kk =  $this->error;
        }
          $this->error;
    }
     ### nazwa pliku. ###
    public function files_xml(){
      if(!empty($this->file)){
          return $this->kk;
        }else{
          return $this->error;
      }  
    }
    ### nazwa pliku. ###
    public function files_name_xml(){
      if(!empty($this->file)){
            return $this->ww['name'];
        }else{
           return $this->error;
      }  
    }
    ### temp nazwa pliku. ###
    public function files_temp_name_xml(){
      if(!empty($this->file)){
            return $this->ww['tmp_name'];
        }else{
           return $this->error;
      }  
    }
    ### Typ pliku. ###
    public function files_types_xml(){
      if(!empty($this->file)){
          return $this->ww['type'];
        }else{
          return $this->error;
      }  
    }
    ### Błąd pliku. ###
    public function files_error_xml(){
      if(!empty($this->file)){
          return $this->ww['error'];
        }else{
          return $this->error;
      }  
    }
    ### Rozmiar pliku. ###
    public function files_size_xml(){ 
      if(!empty($this->file)){
          return $this->ww['size'];
        }else{
          return $this->error;
      }  
    }
    ### Typ pliku. ###
    public function is_typee(){  
       $typee = array('text/xml');
      if(in_array(self::files_types_xml(), $typee)){
          return true;
        }else{
          return $this->error;
      }
    }
    ### wybierz który import swój czy obcy. ###
    public function select_tag_xml(){
      if($this->kk == "fileimportxml"){
          return true;
        }else{
          return $this->error;
      }
    }
 
    ## zamienienie i rozdzielenie ## 
    protected function load_xml(){
     if(file_exists("xml/".basename($this->files_name_xml()))){ // $this->xml_name
       if(self::files_name_xml()){
          $xml= new DOMDocument('1.0', 'utf-8');// iso-8859-2
          $xml->preserveWhiteSpace=false;
          $xml->loadXML(file_get_contents("xml/".basename($this->files_name_xml()))); // $this->xml_name
          if($xml){
             return $xml;
          }else{
             return $this->error;
          }
 
          }else{
           return $this->error;
         }
      }      
    }
        #### pobieramy tablice post ####
    public function wczytaj_post(){
          if(func_num_args()>0){
             $this->post_a = func_get_args();
             foreach($_POST as $bb =>$pp){
                 if(in_array($pp,$this->post_a)){             
                  $this->pp[] = strip_tags($pp);      
          if(array_key_exists($bb, $_POST)){
               $this->bb[] = array($bb => strip_tags($pp));
        }
           }
             }  
        }
    }
  ### zapisz plik ### 
    public function save_xml(){
            $error ="";
         if(!file_exists($this->files_name_xml())){    
            if ($this->files_error_xml() == '0') {
                $scie   = "xml/".basename($this->files_name_xml()); //// gdzie wgrać plik
         //$scie   = strtolower(strtr($scie, "ąęćłńóśźżĄĆĘŁŃÓŚŹŻ", "aeclnoszzACELNOSZZ")); /// wyczyszczenie nazwy + ustawienie małe litery
         if(is_uploaded_file($this->files_temp_name_xml())){
             if($this->files_size_xml() == '0' or $this->files_size_xml() > '4096000'){ /////Sprawdź czy jest mniejszy od 4MB
                 @$this->error .= "<b style='color: #ff9601;'>Stop Plik większy Od 4MB</b>";            
              }elseif($this->is_typee() !== true){ /// sprawdz czy zdięcie - image
                 @$this->error .= "<b style='color: #ff9601;'>Stop Plik nie jest xml</b>";
              }else{
                 move_uploaded_file($this->files_temp_name_xml(), $scie); /// gdzie zapisac 
                 @$this->error.= "<b style='color: #ff9601;'>Zapis Udany</b>";
             }
            }else{
                 @$this->error.= "<b style='color: #ff9601;'>Stop Błąd Pliku</b>";
           }             
          }
        }        
                 return $this->error;
    }
  public function uniwersal_plik_xml(){
            $t=array();
         if($xml = $this->load_xml()){
             $domXPath = new DOMXPath($xml);
        foreach ($domXPath->query('//*') as $keyDOM) {
            foreach($this->bb as $sss){    
                foreach($sss as $kkkkkkk => $ssssssss){
                    $s = explode('&&', $ssssssss);
                    if(!empty($s[1])){
                        if($keyDOM->getAttribute($s[1]) && $keyDOM->tagName == $s[0]){
                       $MARKA = $keyDOM->getAttribute($s[1]);
                         @$t[$kkkkkkk][]       = $MARKA; // for 
                       }
                      }else if($keyDOM->tagName == $s[0]){ 
                              if(in_array($s[0],$this->pp)){
                       $t[$kkkkkkk][] = $keyDOM->nodeValue;
                               }
                            }
            }
        } 
    }
  }     
         return $t;
 }  
}
 

 

 

Klasa Uniwerasl Import Xml współpracuje z „ceneo”, „nokaut”, „okazje” „aukcyjny” i jeszcze parę innych. Jeżeli masz plik i struktura dokumentu jest taka jak w plikach wyżej wymienionych to twój plik też powinien współpracować z klasą Uniwerasl Import Xml. Jeżeli nie jesteś pewien,to z kontaktuj się ze mną, a ja postaram się wyjaśnić wszystko w czym masz problem.

 

 

Klasa jest na licencji „MIT” , jeżeli chcesz ją wykorzystać w swoich projektach to z kontaktuj się ze mną, aby omówić szczegóły.

Zabraniam wykorzystania klasy bez wcześniejszego kontaktu ze mną    Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript. .

 

{jcomments on}

 

 

Error log

  • Kategoria: Class
  • Opublikowano: wtorek, 19, sierpień 2014 17:37
  • Super User
  • Odsłony: 40468

Error Log

 

Od pewnego czasu potrzebowałem klasy do zapisywania błędów do pilków a także żeby ważniejsze informacje były wysyłane na e-mail. Więc wykonałę taką klasę oparłę ją o gotową funkcję php w celu ułatwienia sobie pracy. Efekt można zobaczyć poniżej.

 

 

Klasa pozwala na zapisywanie błądów do plików .log i wysłaniu ich na wskazany e-mail,

Wybór zależy tylko od nas, można użyć obu na raz i zapis do pliku i wysłać e-mail.

W klasie należy podać ścieżkę do plików i przypisać e-mail gdzie nastąpi wysłanie nszych logów z błędami.

 

 

Sami ustalamy co chcemy tam umieścić, a klasa dopisuje dane

takie jak ip, host, serwer i jeszcze parę innych sami zobaczcie .

 

error-logi.class.php

 

#The MIT License
###############################
#Copyright (c) 2014 Adam Berger
###############################
#Permission is hereby granted, free of charge, to any person obtaining a copy
#of this software and associated documentation files (the "Software"), to deal
#in the Software without restriction, including without limitation the rights
#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
#copies of the Software, and to permit persons to whom the Software is
#furnished to do so, subject to the following conditions:
###############################
#The above copyright notice and this permission notice shall be included in
#all copies or substantial portions of the Software.
###############################
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
#THE SOFTWARE.
##############################
 
/**
 * PHP 5.1
 */
 
/**
 * @version 1.00
 * error_logi
 * @author Adam Berger <ber34#o2.pl---->
 * Class allows you to save the log file error and send them to the e-mail,
 * The choice depends only on us, you can use both at once and save to a file and send an e-mail.
 * The class must specify the path to the file and assign e-mail address where you will send
 * Our logs with errors
 * Themselves we determine what we want to put there, and the class appends data
 * Such as ip, host, server, and a few others see for yourself.
 *
 * Klasa pozwala na zapisywanie błądów do plików .log i wysłaniu ich na wskazany e-mail, 
 * Wybór zależy tylko od nas, można użyć obu na raz i zapis do pliku i wysłać e-mail.
 * W klasie należy podać ścieżkę do plików i przypisać e-mail gdzie nastąpi wysłanie 
 * naszych logów z błędami
 * Sami ustalamy co chcemy tam umieścić, a klasa dopisuje dane 
 * takie jak ip, host, serwer i jeszcze parę innych sami zobaczcie .
 
 */
 
class error_logi {
 
      const USER_DIR   = "user_errors.log";
      const GLOBAL_DIR = 'global_errors.log'; 
      const EMAIL      = 'ber34#o2.pl'; 
 
     private $logi;
     private $ip;
     private $serwer;
     private $data;
 
    public function __construct($SERVER) {
        if(!empty($SERVER)){
            $this->serwer[] = $SERVER;
          while(list($kkk, $jjj)=each($this->serwer[0])){
            if(array_key_exists($kkk, $this->serwer[0])){
               $this->serwer[$kkk]=$jjj;
        }else{
              $this->serwer = false;
            }
          }
        }
        $this->data = date('d-m-Y h:i:s');
    }
 
    private function global_ip(){
 if(filter_var($this->serwer['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE ) !== false){
       return  $this->ip = "Prywatny zakres ".$this->serwer['REMOTE_ADDR'];
     }else if(filter_var($this->serwer['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false){
        return  $this->ip = "IPV4 ".$this->serwer['REMOTE_ADDR'];
        }else if(filter_var($this->serwer['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false){
        return  $this->ip = "IPV6 ".$this->serwer['REMOTE_ADDR'];
     }
 }
    private function global_host(){
      if(!empty($this->serwer['REMOTE_ADDR'])){
         return gethostbyaddr($this->serwer['REMOTE_ADDR']);
      }
    }
 
     private function global_ip_server(){
      if(!empty($this->serwer['SERVER_ADDR'])){
         return $this->serwer['SERVER_ADDR'];
      }
    }
 
     private function global_agent(){
      if(!empty($this->serwer['HTTP_USER_AGENT'])){
         return $this->serwer['HTTP_USER_AGENT'];
      }
    }
 
     private function global_port(){
      if(!empty($this->serwer['REMOTE_PORT'])){
         return $this->serwer['REMOTE_PORT'];
      }
    }
 
    private function global_server_name(){
      if(!empty($this->serwer['SERVER_NAME'])){
         return $this->serwer['SERVER_NAME'];
      }
    }
      ### zapisujemy logi na serwerze w podanej ścieżce ###
  public function user_logi_save($mesage,$user){
 
    $this->logi = "|  Data:  ".$this->data."  |  User:  ".$user." | Wiadomosc: ".$mesage." | IP: ".$this->global_ip()."| Global Port: ".$this->global_port()." | Host: ".$this->global_host()."| Agent: ".$this->global_agent()."| IP Server: ".$this->global_ip_server()." \n";
    error_log($this->logi, 3, self::USER_DIR); 
 } 
   ### wysyłamy logi na e-mail z loginem usera ###
  public function user_logi_email($mesage, $user, $html=false){
 
     $this->logi = "
|  Logi z:  ".$this->global_server_name()."
|  User:  ".$user."
|  Data:  ".$this->data."
| Wiadomosc: ".$mesage."
| IP: ".$this->global_ip()."
| Global Port: ".$this->global_port()."
| Host: ".$this->global_host()."
| Agent: ".$this->global_agent()."
| IP Server: ".$this->global_ip_server()."";
    ### wiadomość html ###
    if($html === true){
     $html='';
     $html.='<h2>Logi z '.$this->global_server_name().'</h2>'; 
$html.='<h3>Data: '.$this->data.'</h3>;
 $html.='<h3>User: '.$user.'</h3>; 
$html.='<h3>IP: '.$this->global_ip().'</h3>';
 $html.='<h3>Global Port: '.$this->global_port().'</h3>';
 $html.='<h3>Host: '.$this->global_host().'</h3>';
 $html.='<h3>Agent: '.$this->global_agent().'</h3>';
 $html.='<h3>IP Server: '.$this->global_ip_server().'</h3>'; 
$html.='<h4>Wiadomosc: '.$mesage.'</h4>'; 
 
 ### Wysyłamy w imieniu ber34#o2.pl z adresu ber34#o2.pl 

error_log($html, 1, self::EMAIL,"subject :lunch\nContent-Type: text/html; charset=UTF-8; Foo\nFrom:".self::EMAIL."\n"); }else{ error_log($this->logi, 1, self::EMAIL,"subject :lunch\nContent-Type: text/html;charset=UTF-8; Foo\nFrom:".self::EMAIL."\n"); } } 
 
### zapisujemy logi na serwerze w podanej ścieżce ### 

public function global_logi_save($mesage){ 
$this->logi = "| Data: ".$this->data." | Wiadomosc: ".$mesage." | IP: ".$this->global_ip()."| Global Port: ".$this->global_port()."
 | Host: ".$this->global_host()."|
 Agent: ".$this->global_agent()."|
 IP Server: ".$this->global_ip_server()." \n"; 
 
error_log($this->logi, 3, self::GLOBAL_DIR); }
 
 ### wysyłamy logi na e-mail ### 

public function global_logi_email($mesage, $html=false){ $this->logi = " | Logi z: ".$this->global_server_name()." |
 Data: ".$this->data." |
 Wiadomosc: ".$mesage." |
 IP: ".$this->global_ip()." |
 Global Port: ".$this->global_port()." |
 Host: ".$this->global_host()." |
 Agent: ".$this->global_agent()." |
 IP Server: ".$this->global_ip_server()." "; if($html === true){
 $html='';
 $html.='<h2>Logi z '.$this->global_server_name().'</h2>';
 $html.='<h3>Data: '.$this->data.'</h3>';
 $html.='<h3>IP: '.$this->global_ip().'</h3>';
 $html.='<h3>Global Port: '.$this->global_port().'</h3>';
 $html.='<h3>Host: '.$this->global_host().'</h3>';
 $html.='<h3>Agent: '.$this->global_agent().'</h3>';
 $html.='<h3>IP Server: '.$this->global_ip_server().'</h3>';
 $html.='<h4>Wiadomosc: '.$mesage.'</h4>';
 
 ### Wysyłamy w imieniu ber34#o2.pl z adresu ber34#o2.pl

 error_log($html, 1, self::EMAIL,"subject :lunch\nContent-Type: text/html; charset=UTF-8; Foo\nFrom: ".self::EMAIL."\n");
 }else{
 error_log($this->logi, 1, self::EMAIL,"subject :lunch\nContent-Type: text/html;charset=UTF-8; Foo\nFrom: ".self::EMAIL."\n"); } } }
 

test-logi.php

 

 
include("error-logi.class.php");
 
  $logi = new error_logi($_SERVER);
 
  $mesage='Błąd log przypisujemy np. błąd pdo lub mysql albo błąd logowania';
     $user='Adam ';
     $html=true;
 
  ## ustawiamy kiedy zapisujey logi urzytkownika ##
     $logi--->user_logi_save($mesage,$user);
     $logi->user_logi_email($mesage, $user, $html);
 
  ## ustawiamy kiedy zapisujey logi globalne ##
      $logi->global_logi_save($mesage);
      $logi->global_logi_email($mesage, $html);
 

 

 

{jcomments on}

Create table class pdo

  • Kategoria: Class
  • Opublikowano: wtorek, 01, kwiecień 2014 18:06
  • Super User
  • Odsłony: 38309

Tworzenie tabel bazy danych w pdo

 

    Wydawać by się może proste, ale. Na początku zastanówmy się jak to ma wyglądać. Sprawdzenie czy już taka tabela nie istnieje, wiem że można to sprawdzić za pomocą samego mysql, lecz chcę zrobić do tego obsługę błędów, które mogą się przydać w późniejszym użytkowaniu.

   Postanowiłem utworzyć taką małą klasę do tworzenia tabel w bazie mysql za pomocą biblioteki PDO. Klasa posiada także usuwanie tabel i dodawanie zapytania insert które czasami podajemy przy tworzeniu takich tabel, wszystko w pdo. Sami zobaczcie co z tego wyszło.

 

 

index.php


 * @Site www.joomla-cms.com.pl 
 */  


$create   = new createtableclass();

   $table="admin";
   
   $sql2 = 'CREATE TABLE IF NOT EXISTS `admin` ('
               .'`id_ad` int(11) NOT NULL AUTO_INCREMENT,'
               .'`login` varchar(255) NOT NULL,'
               .'`password` varchar(255) NOT NULL,'
               .'`sesion` varchar(255) NOT NULL,'
               .'PRIMARY KEY (`id_ad`)'
               .') ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;';
	##################################################################################		   
			   
   // zapytanie
   $insert = "INSERT INTO `admin` (`id_ad`, `login`, `password`, `sesion`) VALUES 
          (?, ?, ?, ?)";
   // dane dla insert	  
   $insert_execute = array('2', 'admin', 'admin', '0');
   
$create->drop_table($table); /* or */ $create->create_table($table, $sql2, $insert, $insert_execute);
   
  
    echo $create->error_table();


create-table-class-pdo.php


 * @Site www.joomla-cms.com.pl 
 */  

class createtableclass{
    
    private $db;
    public $error = false;
	
   public function __construct(){ 
          $this->db   = new databaseClass();   // połączenie z bazą z autoload
		  $this->error;
        }
		
	public function error_table(){
	    if($this->error !== false){
		    return $this->error;
		}
    }	
	
    public function drop_table($table){
	    if(!empty($table)){
		  $sql4 ='DROP TABLE IF EXISTS '.$table; // szukamy tabeli
		 if($this->db->exec($sql4) !== false){
            $this->error= 'Usunięto Tabelę.';
           } else {
            $this->error= 'Nie Usunięto Tabeli .'.$table;
          } 
    }else{$this->error="Podaj nazwę tabeli do usunięcia";}
	}	
		
  public function create_table($table, $sql2, $insert=null, $insert_execute=null){
      try {
	      if(!empty($table) && !empty($sql2)){
		  /* Sprawdzamy niezależnie od podania parametru IF NOT EXISTS
		  ponieważ dostaniemy odpowiedź i wyświetlimy ją sobie na ekranie */
	     $sql ='SHOW TABLES LIKE :table'; // szukamy tabeli
         $stmt = $this->db->prepare($sql);
		 $stmt->bindValue(':table', $table, PDO::PARAM_STR);
         $stmt->execute();
    if($stmt->fetch() > 0){
             $this->error ='Tabela istnieje.';     
      }else{
	  
		if($this->db->exec($sql2) !== false){
            $this->error= 'Tabela utworzona pomyślnie.';
          // return 1; 
           } else {
            $this->error= 'Nie utworzona tabeli .'.$table;
          // return 0;
          }
		  // po utworzeniu tabeli możemy przypisać insert 
		 if(!empty($insert) && !empty($insert_execute)){
		    $q = $this->db->prepare($insert);
         $q->execute($insert_execute); 
		 }
	    }
	       }else{
		   $this->error="Podaj nazwę tabeli lub zapytanie";
		   }
             }catch(PDOException $e){
              echo 'Połączenie nie mogło zostać utw.
'.$e->getMessage();
                    }        
   
   }    
 }          

  
{jcomments on}
 Pozycjonowanie-Joomla, seo-joomla Tworzenie-Sitemap-joomla, TG-Chmura-Tagów, rs-rules-security Admin-Login-Security, joomla Licencja-Drupal, Licencja-ZenCart, Licencja-GPL2, Licencja-GPL3 Creative-Commons-License, joomla-2.5.x Kalendarz-Celtycki data-zodiak-data-majowie, moduł-GA-Gadu-gg, Moduł-Lotto-joomla K2-joomla Moduł-Kodownik-joomla kontakt-admin-3-pl Moduł-miłość-joomla Moduł-minutnik-joomla Google-Gadżet-strona-www Moduł-Multi-AnalogClock-joomla Grafika-Wektorowa-joomla Pascal-podstawy Pascal-instrukcja-if Pascal-pętla-for Pascal-Pętla-white-Repet Pascal-Instrukcja-Case Pascal Pascal-record Pascal-Tablice-(Macierze) Kolory-w-Pascalu Systemy-Liczbowe-10-16-8 Pak-top10-głosowanych-jQuery Waga-Bmi BF-Bear-Form Joomla+2.5+captcha+google BSD joomla, MP3 Creating, SEO, Admin tg RS BF The Celtic Forever Création Erstellen Toujours Immer Multi Contact-Admin-3-EN Contact-Admin-3-fr Contact-Admin-3-DE Open-Software-License-v.3.0-(OSL-3.0) System Interfejsy Mozilla joomla-metadane, seo-katalogi, wymiana Slider aukcjoner, Informator Osiemnaście CiastkoPl sem, Class Class-PDO-session login, registerUserClass, index PHP PDO, Class-ResponsiveCss zarabiarka-allegro Pogodynka Pogodynka Praca-Programisty Praca Funkcja-if Special+Arguments Simple-Captchta Jquery, Od 2 Konfiguracja 4.Instalacja 5.Konfiguracja 6.Instalacja 7.Konfiguracja 8.Metadane 9.Optymalizacja 10.Ciasteczka 11.System 12.Diagnostyka 13.Sesja Klasa Książka responsive Uniwersal Dodatek GoogAd.v1.4-polish-utf-8 Error Cooki Funkcje Linki Google Kompresja pdf, Dynamiczne template wycena Twoja Separation reklama ssd, bezpieczeństwo wzorce rekrutacja Zastosowanie Urządzenia Portale chat, dyski Platformy QUIZ 

Używamy cookies i podobnych technologii m.in. w celach: świadczenia usług, reklamy, statystyk. Korzystanie z witryny bez zmiany ustawień Twojej przeglądarki oznacza, że będą one umieszczane w Twoim urządzeniu końcowym. Pamiętaj, że zawsze możesz zmienić te ustawienia. To find out more about the cookies we use and how to delete them, see our privacy policy.

I accept cookies from this site.

EU Cookie Directive Module Information