Klasa służąca do dodawania opcji do witryny
Przedmowa do lekcji
Pracując z CMS WordPress, bardzo spodobał mi się pomysł opcji we wtyczkach., którego można używać jak w panelu administracyjnym, oraz po stronie użytkownika. Opcje te można umieścić jako informacje techniczne podczas opracowywania (dane połączenia z bazą danych, przechowywać listę niestandardowych pól, opcje przechowywania, które mają zastosowanie do określonych typów danych), oraz niektóre dane statyczne, które są wyświetlane na wszystkich stronach (adres zamieszkania, telefon, Nazwa witryny, hasło reklamowe). Te opcje są bardzo przydatne do wyświetlania informacji kontaktowych., które często się nie zmieniają, ale często znajdują się one w różnych częściach kodu i ich wyszukiwanie jest bardzo niewygodne.
Od słów do czynów
Myślę, że zakończyliśmy wstęp i pierwszą rzeczą, którą wam podam, jest kod samej klasy.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
<?php class optionsClass { var $option; var $value; var $autoload; var $new_value; var $prefix; var $db; var $error; function __construct($db, $prefix){ // создает таблицу в базе даных с нужным префиксом, сразу после подключения класса if(!$db || !$prefix){ $this->error[] = 'Не хватает параметров'; exit; } $this->db = $db; $this->prefix = $prefix; $createTable = ' CREATE TABLE `'.$prefix.'_options` ( `option_id` bigint(20) unsigned zerofill NOT NULL AUTO_INCREMENT, `option_name` varchar(64) DEFAULT NULL, `option_value` longtext, `autoload` varchar(20) DEFAULT NULL, PRIMARY KEY (`option_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; '; $query = 'select * from `'.$prefix.'_options`'; $result = mysql_query($query , $this->db); if($result === false){ $result = mysql_query($createTable , $this->db); } } function get_option( $option, $default='' ){ // достаем опции из базы $query = "select option_value from ".$this->prefix."_options WHERE option_name='".$option."'"; $result = mysql_query($query , $this->db); $row = mysql_fetch_array($result); if($row['option_value']){ return $row['option_value']; }else{ $this->error[] = 'Опция не найдена'; return false; } } function add_option($option, $value, $autoload='yes'){ if($this->is_name_options($option) == false){ // Добавляем опции $query = "INSERT INTO ".$this->prefix."_options (option_name, option_value, autoload) VALUES ('".$option."', '".$value."', '".$autoload."')"; $result = mysql_query($query , $this->db); if(!$result){ $this->error[] = 'Не удалось добавиь опцию в базу данных'; }else{ $this->error[] = 'Опция ("'.$option.'" => "'.$value.'") добавлена в базу данных в базу данных'; } }else{ $this->error[] = 'Имя не уникально'; return false; } } function is_name_options($option_name){ // проверяем наицие опции в базе if(isset($option_name)){ $query = "select * from ".$this->prefix."_options WHERE option_name='".$option_name."'"; $result = mysql_query($query , $this->db); $row = mysql_fetch_array($result); if($row){ return true; }else{ return false; } }else{ $this->error[] = 'Опция не задана'; } } function update_option($option, $value){ // Обновляем опции if($this->is_name_options($option)){ $query = "update ".$this->prefix."_options SET option_value='".$value."' WHERE option_name='".$option."'"; $result = mysql_query($query , $this->db); if($result){ $this->error[] = 'Опция '.$option.' обновлена'; }else{ $this->error[] = 'Опция '.$option.' не обновлена'; } }else{ $this->error[] = 'Нет такой опции ['.$option.'] в базе'; } } function delete_option($option){ // удаляем опции if($this->is_name_options($option)){ //echo $option; exit; $query = "delete from ".$this->prefix."_options WHERE option_name='".$option."'"; //echo $query ; $result = mysql_query($query , $this->db); if($result){ $this->error[] = 'Опция '.$option.' удалена'; }else{ $this->error[] = 'Опция '.$option.' не удалена'; } }else{ $this->error[] = 'Нет такой опции ['.$option.'] в базе'; } } function load_alloptions(){ // вывести на экран все опции $query = "select option_name, option_value from ".$this->prefix."_options"; $result = mysql_query($query , $this->db); while($row = mysql_fetch_array($result)){ echo '[ '.$row['option_name'].' ] => [ '.$row['option_value'].' ]<br />'; } } function log(){ // лог операций и ошибок if($this->error){ echo '<pre>'; print_r($this->error); echo '</pre>'; } } } ?> |
To taka trudna klasa., spójrzmy na wszystkie jego metody w kolejności.
Konstruktor klasy - czeki, czy baza danych ma tabelę opcji, jeśli nią nie jest, następnie niezależnie tworzy tę tabelę. Konstruktor akceptuje zmienną połączenia z bazą danych $db i zmienną prefiksu tabeli $prefix. Jeśli nie ma zmiennych $db lub $prefix, następnie do właściwości $error zapisywany jest komunikat o błędzie i program zatrzymuje się.
metoda get_option() potrzebne do wyświetlenia jednej opcji, która jest już w bazie danych. Oto zwykły wybór, Myśleć, jeśli pracujesz z OOP, wtedy nie można już o tym mówić.
metoda opcja_dodania($opcja, $wartość) potrzebne do dodania nowych opcji do bazy danych, jeśli opcja o podanej nazwie już istnieje, następnie do posesji $ten->błąd zostanie dodana wiadomość, które programista może wyświetlić dla siebie lub dla odwiedzających witrynę za pomocą tej metody dziennik().
metoda is_name_options() pomaga sprawdzić, czy istnieje opcja o sugerowanej nazwie w tabeli opcji.
metoda opcja_aktualizacji() aktualizuje dane w już istniejących opcjach. akceptuje 2 wymagane parametry $opcja i $wartość (nazwa i wartość opcji).
metoda klasowa opcja_usuń() potrzebne do usunięcia niepotrzebnych opcji, jeśli istnieje w bazie danych. Opcja jest zaznaczona i jeśli znaleziona, następnie usuwane z bazy danych według nazwy.
metoda wczytaj_przydziały() zaprojektowany do wyświetlania wszystkich opcji na ekranie, ta funkcja jest potrzebna wyłącznie do przeglądania opcji przez programistę.
O metodzie dziennik() już powiedzieliśmy, ta metoda służy do wyprowadzania wszystkich komunikatów, który dostał się do tablicy właściwości $ten->błąd.
Praca z klasą opcji
Ale już, po rozważeniu wszystkich metod możemy płynnie przejść do pracy z naszą klasą.
Ponieważ klasa działa dla nas za pośrednictwem bazy danych, najpierw musimy go utworzyć i połączyć, a tabela zostanie utworzona przez naszą klasę.
1 2 3 4 5 6 |
$db = mysql_connect('localhost', 'db', 'wp-admin'); if (!$db) { die('Could not connect: ' . mysql_error()); } mysql_select_db( 'db-name', $db ); |
Następnie łączymy naszą klasę i próbujemy jej użyć:
1 2 3 4 5 6 7 8 9 10 11 12 |
include './optionsClass.php'; $prefix = 'cl'; $obj = new optionsClass($db, $prefix); $obj->add_option('optionsName',12); //$obj->update_option('optionsName',13); //$obj->delete_option('optionsName'); $obj->load_alloptions(); $opt = $obj->get_option('optionsName'); echo $opt; $obj->log(); mysql_close($db); |
Pobaw się metodami klas i spróbuj dodać nowe opcje za pomocą metod, wyświetlić je na ekranie, zaktualizuj dane w opcjach, usuń opcje. Pamiętaj, aby spróbować wyświetlić komunikaty przy użyciu metody dziennik().
To jest cały ogólny zarys klasy, Myślę, że to zrozumiesz. Aby pracować z przykładem, musisz wprowadzić nowe dane, aby połączyć się z bazą danych. Umieściłem samą klasę w pliku, aby podczas kopiowania nie pojawiały się błędy, ale pamiętaj, aby zrozumieć jego działanie przed użyciem.
Jeśli znajdziesz nieścisłości, napisz do nas w komentarzach, a my postaramy się je naprawić.
/*
- Podstawowy kurs projektowania stron internetowych;
- Układ stron;
- Ogólny kurs CMS WordPress oraz kontynuacja kursu dotyczącego tworzenia szablonów;
- Tworzenie stron internetowych w PHP.