CodeIgniter. Zaawansowane tworzenie stron w PHP

CodeIgniter. Zaawansowane tworzenie stron w PHP

Autorzy: Łukasz Sosna

Wydawnictwo: Helion

Kategorie: Informatyka

Typ: e-book

Formaty: EPUB MOBI

Ilość stron: 272

cena od: 37.60 zł



Wolisz proste rozwiązania? Możesz liczyć na CodeIgniter!





CodeIgniter to ni mniej, ni więcej, tylko doskonały framework, którzy przyda się wszystkim programistom języka PHP. Pozwala on na szybkie i efektywne zaimplementowanie tych elementów stron czy aplikacji internetowych, których samodzielne przygotowanie jest trudne i czasochłonne. Jego główne zalety to niewielkie wymagania co do serwera, na którym ma działać oprogramowanie, zapewnienie logicznego i wygodnego rozdziału elementów strony, brak potrzeby konfiguracji oraz świetna dokumentacja i życzliwa społeczność użytkowników, chętnie dzielących się z innymi swoim doświadczeniem w pracy z programem.





Ta książka, przeznaczona zarówno dla początkujących, jak i zaawansowanych programistów PHP pozwoli Ci zapoznać się z wieloma aspektami używania CodeIgniter. Znajdziesz tu informacje o instalacji frameworka i jego strukturze. Zobaczysz, jak działają klasy systemu, jakie funkcje oraz metody warto wykorzystać w różnych sytuacjach i jak działają sterowniki systemu do bazy danych. Będziesz mógł także przećwiczyć tworzenie aplikacji z użyciem tego zestawu bibliotek. Programowanie z frameworkiem CodeIgniter to czysta przyjemność!







  • Instalacja CodeIgniter na serwerze


  • Używanie frameworka (model, widok, kontroler)


  • Klasy systemu


  • Sterowniki systemu dla bazy danych


  • Pomocnicy (funkcje)


  • Tworzenie pierwszej aplikacji




Zyskaj czas z CodeIgniter!



Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione.

Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte

w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION

nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Redaktor prowadzący: Ewelina Burska

Projekt okładki: Michał Wójcik

Materiały graficzne na okładce zostały wykorzystane za zgodą Shutterstock.

Wydawnictwo HELION

ul. Kościuszki 1c, 44-100 GLIWICE

tel. 32 231 22 19, 32 230 98 63

e-mail: helion@helion.pl

WWW: http://helion.pl (księgarnia internetowa, katalog książek)

Drogi Czytelniku!

Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres

http://helion.pl/user/opinie?codeig

Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Materiały do książki znajdują się pod adresem:

ftp://ftp.helion.pl/przyklady/codeig.zip

ISBN: 978-83-246-4964-8

Copyright © Helion 2013

Printed in Poland.

• Kup książkę

• Księgarnia internetowa

• Poleć książkę

• Lubię to! » Nasza społeczność

• Oceń książkę

Spis treci

Wstp

............................................................................................ 11

Rozdzia 1. Instalacja CodeIgnitera na serwerze ............................................... 13

Instalacja oprogramowania na serwerze ......................................................................... 14

Aktualizacja CodeIgnitera .............................................................................................. 14

Praca z ksik ............................................................................................................... 15

Rozdzia 2. Korzystanie z frameworku ............................................................... 17

Model, widok, kontroler ................................................................................................. 17

Adresy URL ................................................................................................................... 18

Adresy URL dla wyszukiwarek ...................................................................................... 18

Kontroler (controller) ..................................................................................................... 19

Definicja domylnego kontrolera (default_controller) ............................................. 19

Metody prywatne (private) ....................................................................................... 20

Umieszczanie kontrolerów w folderach ................................................................... 20

Automatyczne adowanie (__construct) ................................................................... 21

Nazwy zastrzeone ................................................................................................... 21

Widok (view) .................................................................................................................. 21

adowanie widoku do kontrolera (load->view) ....................................................... 22

adowanie kilku widoków ....................................................................................... 23

Umieszczanie widoków w folderach ........................................................................ 23

Dodawanie danych do widoku ................................................................................. 23

Przekazywanie widoków jako danych ...................................................................... 24

Model (model) ................................................................................................................ 24

Pierwszy model ........................................................................................................ 25

adowanie modelu (load->model) ........................................................................... 25

Umieszczanie modeli w katalogu ............................................................................. 26

Dostp do metod modelu .......................................................................................... 26

adowanie bibliotek (load->library) ............................................................................... 27

adowanie klas pomocniczych (load->helper) ............................................................... 28

adowanie sterowników (load->driver) ......................................................................... 28

Automatyczne adowanie zasobów ................................................................................. 29

Routowanie URL ............................................................................................................ 29

Ustanawianie wasnych regu ................................................................................... 30

Zastrzeone nazwy waciwoci ............................................................................... 30

Obsuga bdów .............................................................................................................. 31

Funkcja show_error() ............................................................................................... 31

Funkcja show_404() ................................................................................................. 32

Funkcja log_message() ............................................................................................. 32

Kup książkę

Poleć książkę

4

CodeIgniter. Zaawansowane tworzenie stron w PHP

Zapisywanie stron w plikach tymczasowych (cache) ..................................................... 33

Metoda cache() ......................................................................................................... 34

Usuwanie plików tymczasowych ............................................................................. 34

Bezpieczestwo .............................................................................................................. 34

Zabezpieczanie adresów URL .................................................................................. 35

Opcja register_globals .............................................................................................. 35

Opcja error_reporting ............................................................................................... 35

Opcja magic_quotes_runtime ................................................................................... 36

Najlepsze praktyki .................................................................................................... 36

Rozdzia 3. Klasy systemowe ........................................................................... 37

Wydajno systemu (benchmark) ................................................................................... 37

Wywietlanie informacji o zuyciu pamici podczas generowania strony ............... 38

Kalendarz (calendar) ....................................................................................................... 39

Metoda generate() .................................................................................................... 39

Wyszczególnianie dat w kalendarzu ......................................................................... 40

Opcje wywietlania kalendarza ................................................................................ 41

Opcje konfiguracji kalendarza .................................................................................. 42

Dostosowywanie wygldu kalendarza ...................................................................... 42

Konfiguracja (config) ..................................................................................................... 43

Metoda load() ........................................................................................................... 44

Metoda item() ........................................................................................................... 44

Metoda set_item() .................................................................................................... 45

Metoda site_url() ...................................................................................................... 45

Metoda base_url() .................................................................................................... 46

Metoda system_url() ................................................................................................ 46

E-mail (email) ................................................................................................................. 46

Metoda from() .......................................................................................................... 47

Metoda reply_to() ..................................................................................................... 47

Metoda cc() .............................................................................................................. 47

Metoda bcc() ............................................................................................................ 47

Metoda subject() ....................................................................................................... 47

Metoda message() .................................................................................................... 48

Metoda set_alt_message() ........................................................................................ 48

Metoda clear() .......................................................................................................... 48

Metoda attach() ........................................................................................................ 48

Metoda send() ........................................................................................................... 48

Metoda print_debugger() .......................................................................................... 48

Ustawianie zawijania wierszy w treci wiadomoci ................................................. 49

Ustawianie opcji ....................................................................................................... 49

Opcje wysyania wiadomoci e-mail ........................................................................ 49

Kodowanie i szyfrowanie (encrypt) ................................................................................ 50

Metoda encode() ....................................................................................................... 51

Metoda decode() ....................................................................................................... 52

Metoda sha1() ........................................................................................................... 53

Przesyanie plików na serwer (upload) ........................................................................... 53

Ustawianie preferencji .............................................................................................. 55

Metoda do_upload() ................................................................................................. 57

Metoda display_errors() ........................................................................................... 57

Metoda data() ........................................................................................................... 57

Walidacja formularzy (form_validation) ........................................................................ 58

Metoda set_rules() .................................................................................................... 62

Metoda run() ............................................................................................................. 62

Twoja wasna metoda ............................................................................................... 63

Kup książkę

Poleć książkę

Spis treci

5

Funkcja form_error() ................................................................................................ 64

Funkcja validation_errors() ...................................................................................... 64

FTP (ftp) ......................................................................................................................... 64

Metoda connect() ...................................................................................................... 65

Metoda upload() ....................................................................................................... 66

Metoda download() .................................................................................................. 66

Metoda rename() ...................................................................................................... 67

Metoda move() ......................................................................................................... 68

Metoda delete_file() ................................................................................................. 68

Metoda delete_dir() .................................................................................................. 69

Metoda list_files() .................................................................................................... 70

Metoda mirror() ........................................................................................................ 70

Metoda mkdir() ........................................................................................................ 71

Metoda chmod() ....................................................................................................... 72

Metoda close() .......................................................................................................... 72

Generowanie tabel HTML (table) ................................................................................... 73

Metoda generate() .................................................................................................... 74

Metoda set_caption() ................................................................................................ 74

Metoda set_heading() ............................................................................................... 75

Metoda add_row() .................................................................................................... 75

Metoda make_columns() .......................................................................................... 75

Metoda set_template() .............................................................................................. 76

Metoda set_empty() .................................................................................................. 76

Metoda clear() .......................................................................................................... 77

Metoda function() ..................................................................................................... 78

Wprowadzanie danych (input) ........................................................................................ 79

Filtrowanie XSS ....................................................................................................... 80

Wykorzystywanie $_POST, $_COOKIE i $_SERVER ........................................... 80

Metoda get() ............................................................................................................. 80

Metoda get_post() .................................................................................................... 81

Metoda set_cookie() ................................................................................................. 81

Metoda ip_address() ................................................................................................. 82

Metoda valid_ip() ..................................................................................................... 83

Metoda user_agent() ................................................................................................. 83

Metoda request_headers() ........................................................................................ 84

Metoda get_request_header() ................................................................................... 84

adowanie klas i przeksztacanie ich w obiekty ............................................................. 85

Metoda library() ....................................................................................................... 85

Metoda view() .......................................................................................................... 86

Metoda model() ........................................................................................................ 86

Metoda database() .................................................................................................... 87

Metoda helper() ........................................................................................................ 87

Metoda language() .................................................................................................... 87

Jzyki (lang) ................................................................................................................... 88

Tworzenie pliku z wersj jzykow ......................................................................... 88

Metoda load() ........................................................................................................... 89

Metoda line() ............................................................................................................ 89

Automatyczne adowanie plików jzykowych ......................................................... 90

Generowanie strony (output) .......................................................................................... 90

Metoda set_output() ................................................................................................. 90

Metoda set_content_type() ....................................................................................... 90

Metoda set_header() ................................................................................................. 91

Metoda set_status_header() ...................................................................................... 91

Metoda enable_profiler() .......................................................................................... 91

Kup książkę

Poleć książkę

6

CodeIgniter. Zaawansowane tworzenie stron w PHP

Dzielenie treci (pagination) ........................................................................................... 91

Metoda initialize() .................................................................................................... 92

Metoda create_links() ............................................................................................... 93

Opcje podziau treci na strony ................................................................................ 93

Bezpieczestwo (security) .............................................................................................. 95

Filtrowanie XSS ....................................................................................................... 95

Metoda xss_clean() .................................................................................................. 95

Metoda sanitize_filename() ...................................................................................... 96

Ochrona przed atakami typu CSRF .......................................................................... 97

Sesja (session) ................................................................................................................ 97

Metoda userdata() ..................................................................................................... 98

Metoda set_userdata() .............................................................................................. 98

Metoda all_userdata() ............................................................................................... 99

Metoda unset_userdata() ........................................................................................ 100

Ustawienia sesji ...................................................................................................... 100

Wygld strony (parser) ................................................................................................. 101

Metoda parse() ....................................................................................................... 102

URI (uri) ....................................................................................................................... 103

Metoda segment() ................................................................................................... 103

Metoda uri_to_assoc() ............................................................................................ 103

Metoda assoc_to_uri() ............................................................................................ 104

Przegldarka uytkownika (user_agent) ....................................................................... 105

Identyfikacja przegldarki uytkownika ................................................................. 105

Metoda is_browser() .............................................................................................. 106

Metoda is_mobile() ................................................................................................ 107

Metoda is_robot() ................................................................................................... 107

Metoda is_referral() ................................................................................................ 108

Metoda browser() ................................................................................................... 108

Metoda version() .................................................................................................... 109

Metoda mobile() ..................................................................................................... 109

Metoda robot() ....................................................................................................... 110

Metoda platform() .................................................................................................. 110

Metoda referrer() .................................................................................................... 111

Metoda agent_string() ............................................................................................ 111

Metoda accept_lang() ............................................................................................. 112

Metoda accept_charset() ......................................................................................... 113

Kompresja plików (zip) ................................................................................................ 113

Metoda add_data() .................................................................................................. 114

Metoda add_dir() .................................................................................................... 114

Metoda read_file() .................................................................................................. 115

Metoda read_dir() ................................................................................................... 115

Metoda archive() .................................................................................................... 116

Metoda download() ................................................................................................ 116

Metoda get_zip() .................................................................................................... 117

Metoda clear_data() ................................................................................................ 117

Rozdzia 4. Sterowniki systemu do obsugi bazy danych .................................. 119

Praca z baz danych ...................................................................................................... 119

Wczytanie sterownika (load->database) ....................................................................... 120

Poczenie z baz danych — konfiguracja danych dostpowych ................................. 120

Poczenie z baz danych (database) ............................................................................ 122

Metoda reconnect() ....................................................................................................... 123

Metoda close() .............................................................................................................. 124

Wykonywanie zapytania (query) .................................................................................. 125

Kup książkę

Poleć książkę

Spis treci

7

Metoda query() ............................................................................................................. 126

Zabezpieczanie danych (escape, escape_str i escape_like_str) ..................................... 126

Bezpieczne zapytania (query) ....................................................................................... 127

Generowanie rezultatów zapytania ............................................................................... 128

Metoda result() ....................................................................................................... 128

Metoda result_array() ............................................................................................. 129

Metoda num_rows() ............................................................................................... 129

Metoda free_result() ............................................................................................... 130

Metoda insert_id() .................................................................................................. 131

Metoda affected_rows() ......................................................................................... 131

Metoda count_all() ................................................................................................. 132

Metoda platform() .................................................................................................. 132

Metoda version() .................................................................................................... 133

Metoda last_query() ............................................................................................... 133

Informacje o tabelach ................................................................................................... 134

Metoda list_tables() ................................................................................................ 134

Metoda table_exists() ............................................................................................. 134

Informacje o polach tabeli ............................................................................................ 135

Metoda list_fields() ................................................................................................ 135

Metoda field_exists() .............................................................................................. 136

Metoda field_data() ................................................................................................ 137

Rozdzia 5. Klasy pomocnicze ........................................................................ 139

Tablica (array) .............................................................................................................. 139

Funkcja element() ................................................................................................... 139

Funkcja random_element() ..................................................................................... 140

Funkcja elements() ................................................................................................. 141

Wysyanie danych z formularza ............................................................................. 142

Pliki cookie (cookie) ..................................................................................................... 143

Funkcja set_cookie() .............................................................................................. 143

Funkcja get_cookie() .............................................................................................. 143

Funkcja delete_cookie() ......................................................................................... 143

Data (date) .................................................................................................................... 144

Funkcja now() ........................................................................................................ 144

Funkcja standard_date() ......................................................................................... 144

Funkcja local_to_gmt() .......................................................................................... 145

Funkcja unix_to_human() ...................................................................................... 146

Funkcja timespan() ................................................................................................. 146

Funkcja days_in_month() ....................................................................................... 147

Funkcja timezones() ............................................................................................... 148

Funkcja timezone_menu() ...................................................................................... 148

Katalog (directory) ....................................................................................................... 150

Funkcja directory_map() ........................................................................................ 150

Pobieranie (download) .................................................................................................. 152

Funkcja force_download() ..................................................................................... 152

E-mail (email) ............................................................................................................... 153

Funkcja valid_email() ............................................................................................. 153

Funkcja send_email() ............................................................................................. 154

Plik (file) ...................................................................................................................... 154

Funkcja write_file() ................................................................................................ 154

Funkcja read_file() ................................................................................................. 155

Funkcja delete_files() ............................................................................................. 155

Funkcja get_dir_file_info() .................................................................................... 156

Funkcja get_file_info() ........................................................................................... 158

Kup książkę

Poleć książkę

8

CodeIgniter. Zaawansowane tworzenie stron w PHP

Funkcja get_mime_by_extension() ........................................................................ 159

Funkcja symbolic_permissions() ............................................................................ 159

Funkcja octal_permissions() ................................................................................... 160

Formularz (form) .......................................................................................................... 161

Funkcja form_open() .............................................................................................. 161

Funkcja form_open_multipart() ............................................................................. 162

Funkcja form_hidden() ........................................................................................... 162

Funkcja form_input() ............................................................................................. 163

Funkcja form_password() ....................................................................................... 164

Funkcja form_upload() ........................................................................................... 164

Funkcja form_textarea() ......................................................................................... 165

Funkcja form_dropdown() ..................................................................................... 165

Funkcja form_multiselect() .................................................................................... 166

Funkcje form_fieldset() i form_fieldset_close() ..................................................... 167

Funkcja form_checkbox() ...................................................................................... 167

Funkcja form_radio() ............................................................................................. 168

Funkcja form_submit() ........................................................................................... 169

Funkcja form_reset() .............................................................................................. 169

Funkcja form_button() ........................................................................................... 170

Funkcja form_close() ............................................................................................. 171

Funkcja form_prep() .............................................................................................. 171

HTML (html) ................................................................................................................ 171

Funkcja br() ............................................................................................................ 172

Funkcja heading() ................................................................................................... 172

Funkcja img() ......................................................................................................... 173

Funkcja link_tag() .................................................................................................. 174

Funkcja nbs() .......................................................................................................... 175

Funkcje ol() i ul() ................................................................................................... 175

Funkcja meta() ....................................................................................................... 177

Funkcja doctype() ................................................................................................... 179

Jzyk (language) ........................................................................................................... 179

Funkcja lang() ........................................................................................................ 180

Liczba (number) ........................................................................................................... 181

Funkcja byte_format() ............................................................................................ 181

cieka (path) ............................................................................................................... 182

Funkcja set_realpath() ............................................................................................ 183

Bezpieczestwo (security) ............................................................................................ 184

Funkcja xss_clean() ................................................................................................ 184

Funkcja sanitize_filename() ................................................................................... 184

Funkcja do_hash() .................................................................................................. 185

Funkcja strip_image_tags() .................................................................................... 185

Funkcja encode_php_tags() .................................................................................... 186

Cig (string) .................................................................................................................. 187

Funkcja random_string() ........................................................................................ 187

Funkcja increment_string() .................................................................................... 188

Funkcja alternator() ................................................................................................ 188

Funkcja repeater() .................................................................................................. 189

Funkcja reduce_double_slashes() ........................................................................... 190

Funkcja trim_slashes() ........................................................................................... 190

Funkcja quotes_to_entities() .................................................................................. 191

Funkcja strip_quotes() ............................................................................................ 191

Tekst (text) ................................................................................................................... 192

Funkcja word_limiter() ........................................................................................... 192

Funkcja character_limiter() .................................................................................... 193

Funkcja ascii_to_entities() ..................................................................................... 193

Kup książkę

Poleć książkę

Spis treci

9

Funkcja entities_to_ascii() ..................................................................................... 194

Funkcja highlight_code() ....................................................................................... 194

Funkcja word_wrap() ............................................................................................. 195

Funkcja ellipsize() .................................................................................................. 196

URL (url) ...................................................................................................................... 197

Funkcja site_url() ................................................................................................... 197

Funkcja base_url() .................................................................................................. 197

Funkcja current_url() .............................................................................................. 198

Funkcja uri_string() ................................................................................................ 198

Funkcja index_page() ............................................................................................. 199

Funkcja anchor() .................................................................................................... 199

Funkcja redirect() ................................................................................................... 200

XML (xml) ................................................................................................................... 200

Funkcja xml_convert() ........................................................................................... 201

Rozdzia 6. Tworzenie pierwszej aplikacji ........................................................ 203

Rozpoczcie pracy ........................................................................................................ 203

Baza danych ................................................................................................................. 204

Gówny plik aplikacji ................................................................................................... 204

Plik konfiguracyjny ...................................................................................................... 204

Konfiguracja automatycznego adowania ..................................................................... 204

Konfiguracja bazy danych ............................................................................................ 205

Konfiguracja domylnego kontrolera ........................................................................... 205

Tworzenie pliku do przepisywania adresów ................................................................. 205

Kontroler — logowanie administratora ........................................................................ 206

Kontroler — wylogowanie administratora ................................................................... 208

Kontroler — strona gówna .......................................................................................... 209

Kontroler — kategoria wpisów .................................................................................... 212

Kontroler — wpis ......................................................................................................... 215

Kontroler — edycja wpisów ......................................................................................... 219

Model — logowanie uytkownika ................................................................................ 227

Model — strona gówna ............................................................................................... 228

Model — kategoria ....................................................................................................... 229

Model — wpis .............................................................................................................. 231

Model — polecenia wspódzielone ............................................................................... 233

Model — edycja ........................................................................................................... 233

Widok — nagówek ...................................................................................................... 237

Widok — stopka ........................................................................................................... 240

Widok — menu ............................................................................................................ 240

Widok — menu administratora .................................................................................... 242

Widok — menu administratora przed zalogowaniem ................................................... 242

Widok — kategoria ...................................................................................................... 243

Widok — edytowanie kategorii .................................................................................... 245

Widok — dodawanie kategorii ..................................................................................... 246

Widok — wpisy ............................................................................................................ 246

Widok — nowy wpis .................................................................................................... 249

Widok — edytowanie wpisu ........................................................................................ 251

Widok — najnowsze wpisy .......................................................................................... 253

Widok — zaloguj ......................................................................................................... 254

Widok — strona gówna ............................................................................................... 255

Widok — zmie haso .................................................................................................. 256

Zakoczenie .................................................................................................................. 257

Kup książkę

Poleć książkę

10

CodeIgniter. Zaawansowane tworzenie stron w PHP

Nazwy

zastrzeone

....................................................................... 259

Podsumowanie

............................................................................. 261

Skorowidz

.................................................................................... 263

Kup książkę

Poleć książkę

Rozdzia 4.

Sterowniki systemu

do obsugi bazy danych

Sterownik przeznaczony do obsugi bazy danych umoliwia korzystanie z jej zasobów. CodeIgniter pozwala na wykorzystywanie takich baz danych jak na przykad MySQL i PostgreSQL. Dziki temu jest dogodn platform do tworzenia zaawanso-wanych aplikacji — umoliwia przeprowadzenie rónych operacji na rekordach, takich jak umieszczanie ich w tabeli, aktualizowanie czy usuwanie.

Praca z baz danych

Zanim zaczniemy przygod z baz danych, musimy utworzy dwie bazy: pierwsz o nazwie codeigniter oraz drug — codeigniter2. Najprawdopodobniej pracujesz na opro-gramowaniu XAMPP, wic w celu ich utworzenia moesz skorzysta z narzdzia phpMyAdmin, do którego dostp uzyskasz, wpisujc adres URL w pasku adresu przegldarki internetowej: http://localhost/phpMyAdmin.

Nastpnie w pierwszej bazie o nazwie codeigniter naley wykona poniszy kod zapyta SQL:

CREATE TABLE IF NOT EXISTS 'tabela' (

'id' int(11) NOT NULL AUTO_INCREMENT,

'tytul' varchar(255) COLLATE utf8_unicode_ci NOT NULL,

PRIMARY KEY ('id')

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ; INSERT INTO 'tabela' ('id', 'tytul') VALUES

(1, 'Tre 1'),

(2, 'Tre 2');

CREATE TABLE IF NOT EXISTS 'tabela_post' (

'post_id' int(11) NOT NULL AUTO_INCREMENT,

'post_tytul' varchar(255) COLLATE utf8_unicode_ci NOT NULL,

'post_tresc' text COLLATE utf8_unicode_ci NOT NULL,

Kup książkę

Poleć książkę

120

CodeIgniter. Zaawansowane tworzenie stron w PHP

'post_aktywny' char(1) COLLATE utf8_unicode_ci NOT NULL,

PRIMARY KEY ('post_id')

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ; INSERT INTO 'tabela_post' ('post_id', 'post_tytul', 'post_tresc', 'post_aktywny') VALUES

(1, 'Temat wiadomoci', '', 't'),

(2, 'Kolejny temat wiadomoci', '', 't');

CREATE TABLE IF NOT EXISTS 'uzytkownicy' (

'uzytkownik_id' int(11) NOT NULL AUTO_INCREMENT,

'uzytkownik_nazwa' varchar(255) COLLATE utf8_unicode_ci NOT NULL,

PRIMARY KEY ('uzytkownik_id')

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; W przypadku zainstalowania oprogramowania XAMPP uytkownik majcy peen do-stp do baz danych to root, a jego haso jest puste.

Wczytanie sterownika (load->database)

Sterownik sucy do obsugi bazy danych jest uruchamiany poprzez metod database() z obiektu load (listing 4.1). Wszystkie dane potrzebne do nawizania poczenia z baz

danych definiuje si w pliku konfiguracyjnym.

Listing 4.1. adowanie sterownika bazy danych

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

}

}

?>

Poczenie z baz danych

— konfiguracja danych dostpowych

Aby zapewni sobie moliwo wykorzystania bazy danych, najpierw naley skonfi-gurowa dane dostpowe: okreli nazw hosta, nazw uytkownika i jego haso, wska-za nazw bazy danych oraz zdefiniowa inne potrzebne waciwoci. W przypadku CodeIgnitera dane te s przechowywane w pliku application/config/database.php.

Kup książkę

Poleć książkę

Rozdzia 4. i Sterowniki systemu do obsugi bazy danych

121

Plik ten zawiera tablic, w której ustawia si rónego rodzaju dane dostpowe do bazy danych (listing 4.2).

Listing 4.2. Tablica konfiguracji danych dostpowych do bazy danych $db['default']['hostname'] = "localhost";

$db['default']['username'] = "root";

$db['default']['password'] = "";

$db['default']['database'] = "codeigniter";

$db['default']['dbdriver'] = "mysql";

$db['default']['dbprefix'] = "";

$db['default']['pconnect'] = TRUE;

$db['default']['db_debug'] = FALSE;

$db['default']['cache_on'] = FALSE;

$db['default']['cachedir'] = "";

$db['default']['char_set'] = "utf8";

$db['default']['dbcollat'] = "utf8_general_ci";

$db['default']['swap_pre'] = "";

$db['default']['autoinit'] = TRUE;

$db['default']['stricton'] = FALSE;

$db['default']['port'] = 3306;

Poniej zostay objanione dostpne parametry:

 hostname — nazwa hosta bazy danych,

 username — nazwa uytkownika,

 password — haso uytkownika,

 database — nazwa bazy danych,

 dbdriver — typ sterownika bazy danych, przykadowe wartoci tego parametru to: mysql, postgres, odbc itd.,

 dbprefix — prefiks nazw tabel w bazie danych, który bdzie automatycznie dodawany w przypadku korzystania z interfejsu Active Record,

 pconnect (TRUE/FALSE) — definiuje, czy chcemy uywa staego poczenia,

 db_debug (TRUE/FALSE) — wywietlanie komunikatów o bdach bazy danych,

 cache_on (TRUE/FALSE) — wczenie pamici podrcznej do przechowywania wyników zapyta,

 cachedir — katalog na serwerze do tymczasowego przechowywania wyników zapyta do bazy danych,

 char_set — zestaw znaków wykorzystywany do pracy z baz danych,

 dbcollat — ustawienie kodowania pól w bazie danych,

 swap_pre — prefiks nazw tabel, stosowany podczas pracy nad wersj rozwojow

aplikacji,

 autoinit — okrelenie automatycznego czenia si z baz danych po wczeniu interfejsu,

Kup książkę

Poleć książkę

122

CodeIgniter. Zaawansowane tworzenie stron w PHP

 stricton (TRUE/FALSE) — wymuszenie poczenia z baz danych w trybie Strict Mode 1,

 port — port wykorzystany do nawizania poczenia z baz danych.

Nie wszystkie opcje konfiguracyjne dostpne w pliku database.php s zawsze potrzebne. To, jakie dane bdziesz musia zdefiniowa , zaley od rodzaju bazy danych.

Przedstawiona powyej konfiguracja jest odpowiednia dla bazy MySQL.

Poczenie z baz danych (database)

CodeIgniter umoliwia dwa sposoby czenia si z baz danych. Pierwszy z nich po-lega na kadorazowym zaadowaniu odpowiedniego sterownika podczas uruchamia-nia aplikacji, co powoduje automatyczne nawizanie poczenia z baz danych. Opcja ta jest bardzo przydatna, gdy mamy zamiar utworzy aplikacj korzystajc z zasobów tylko jednej bazy danych.

Drugim sposobem jest rczne zestawianie poczenia za pomoc metody database().

Pierwszym parametrem tej metody jest nazwa klucza tablicy, w której znajduj si dane potrzebne do poczenia z baz danych. Jak pamitasz, tablic t deklarujemy w pliku application/config/database.php. Kopiujemy ju obecn w tym pliku tablic $db

´['default'] i zmieniamy jej klucz na dowolny inny, wane jednak, by by on zgodny z nazwami kluczy w jzyku PHP (listing 4.3). Moe si on nazywa na przykad drugiepolaczenie (listing 4.4).

Listing 4.3. Fragment zmodyfikowanego pliku database.php

$db['default']['hostname'] = "localhost";

$db['default']['username'] = "root";

$db['default']['password'] = "";

$db['default']['database'] = "codeigniter";

$db['default']['dbdriver'] = "mysql";

$db['default']['dbprefix'] = "";

$db['default']['pconnect'] = TRUE;

$db['default']['db_debug'] = FALSE;

$db['default']['cache_on'] = FALSE;

$db['default']['cachedir'] = "";

$db['default']['char_set'] = "utf8";

$db['default']['dbcollat'] = "utf8_general_ci";

$db['default']['swap_pre'] = "";

$db['default']['autoinit'] = TRUE;

$db['default']['stricton'] = FALSE;

$db['default']['port'] = 3306

$db['drugiepolaczenie']['hostname'] = "localhost";

$db['drugiepolaczenie']['username'] = "root";

$db['drugiepolaczenie']['password'] = "";

1 Strict Mode — tzw. tryb cisy pracy, w którym baza danych nie bdzie podejmowaa prób obsuenia danych przekazanych w nieprawidowym formacie — przyp. red.

Kup książkę

Poleć książkę

Rozdzia 4. i Sterowniki systemu do obsugi bazy danych

123

$db['drugiepolaczenie']['database'] = "codeigniter2";

$db['drugiepolaczenie']['dbdriver'] = "mysql";

$db['drugiepolaczenie']['dbprefix'] = "";

$db['drugiepolaczenie']['pconnect'] = TRUE;

$db['drugiepolaczenie']['db_debug'] = FALSE;

$db['drugiepolaczenie']['cache_on'] = FALSE;

$db['drugiepolaczenie']['cachedir'] = "";

$db['drugiepolaczenie']['char_set'] = "utf8";

$db['drugiepolaczenie']['dbcollat'] = "utf8_general_ci";

$db['drugiepolaczenie']['swap_pre'] = "";

$db['drugiepolaczenie']['autoinit'] = TRUE;

$db['drugiepolaczenie']['stricton'] = FALSE;

$db['drugiepolaczenie']['port'] = 3306;

Listing 4.4. Rczne czenie si z baz danych

$this->load->database('drugiepolaczenie');

Na etapie tworzenia projektu aplikacji naley si dobrze zastanowi , z ilu baz danych bdzie si korzysta . W zalenoci od tego, czy bdzie to jedna baza, czy wiksza ich liczba, konstrukcja polece w metodzie bdzie nieco inna (listingi 4.5 i 4.6).

Listing 4.5. Wykonywanie zapyta w przypadku czenia si z tylko jedn baz danych $this->db->query();

$this->db->result();

Listing 4.6. Wykonywanie zapyta w przypadku czenia si z dwiema lub wiksz liczb baz danych $DB1->query();

$DB1->result();

$DB2->query();

$DB2->result();

Pamitaj, e poszczególne obiekty obsugujce bazy danych zawieraj w swojej nazwie liczby odpowiadajce kolejnoci dokonywania pocze. Znajomo tych numerów umoliwi prawidowe odwoywanie si do tych obiektów.

Metoda reconnect()

Podczas pracy aplikacji niekiedy dochodzi do utraty poczenia z baz danych, na przykad na skutek przekroczenia limitu bezczynnoci serwera bazy danych. Aby unikn ponownego definiowania wszystkich argumentów, w celu ponownego poczenia si

z baz wystarczy wywoa metod reconnect(), która automatycznie podtrzyma po-

czenie lub — w przypadku jego utraty — ponownie je nawie (listing 4.7).

Kup książkę

Poleć książkę

124

CodeIgniter. Zaawansowane tworzenie stron w PHP

Listing 4.7. Podtrzymanie lub powtórne nawizanie poczenia z baz danych

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$Informacje = $this->db->query('SELECT * FROM tabela');

echo '<pre>';

print_r($Informacje);

echo '</pre>';

$this->db->reconnect();

$Informacje = $this->db->query('SELECT * FROM tabela');

echo '<pre>';

print_r($Informacje);

echo '</pre>';

}

}

?>

Metoda close()

CodeIgniter zapewnia automatyczne zamykanie poczenia z baz danych, jednak jeeli chcesz zamkn je rcznie, moesz wywoa metod close() (listing 4.8).

Listing 4.8. Zako czenie poczenia z baz danych

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$this->db->close();

}

}

?>

Kup książkę

Poleć książkę

Rozdzia 4. i Sterowniki systemu do obsugi bazy danych

125

Wykonywanie zapytania (query)

Zapytanie, które chcemy wykona w bazie danych, musi spenia wymagania stan-dardu jzyka SQL zgodnego z baz danych, któr bdziemy wykorzystywa . Zapytanie SQL podajemy jako parametr metody query() z obiektu db (listing 4.9). Przykadowy rezultat wykonania skryptu obrazuje rysunek 4.1.

Listing 4.9. Wykonanie zapytania SQL

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$Informacje = $this->db->query('SELECT * FROM tabela');

echo '<pre>';

print_r($Informacje);

echo '</pre>';

}

}

?>

Rysunek 4.1.

Wynik zapytania

Kup książkę

Poleć książkę

126

CodeIgniter. Zaawansowane tworzenie stron w PHP

Metoda query()

Same zapytania wysyane do bazy danych konstruuje si w jzyku SQL w imple-mentacji odpowiadajcej zastosowanej bazie danych. Jednak ze wzgldu na obowi-

zujce standardy w wikszoci przypadków skadnia SQL jest bardzo podobna.

W jzyku PHP do uzyskiwania wyników zapyta SQL wykorzystuje si metod query().

Parametrem tej metody jest zapytanie w jzyku SQL. Na listingu 4.10 przedstawiono przykad prostego zapytania do bazy danych.

Listing 4.10. Zapytanie do bazy danych

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$this->db->query('SELECT * FROM tabela');

}

}

?>

W przypadku zapytania SQL pobierajcego dane z bazy danych, takiego jak SELECT, metoda query() zwraca obiekt zbioru wyników odpowiadajcy wykonanemu zapytaniu.

W dalszej czci rozdziau pokaemy, w jaki sposób mona przetworzy ten obiekt.

W pozostaych przypadkach (kiedy w wyniku zapytania nie otrzymujemy zbioru danych) wartoci przekazan przez metod query() jest TRUE, gdy zapytanie zostanie poprawnie wykonane, lub FALSE, gdy nastpi bd.

Zabezpieczanie danych (escape,

escape_str i escape_like_str)

Aby uchroni swoj aplikacj przed atakami typu SQL Injection, trzeba pamita o prze-filtrowaniu danych przed ich wprowadzeniem do zapytania SQL i wysaniem do bazy danych. Jest to bardzo wane ze wzgldu na bezpieczestwo naszej aplikacji. W tabeli 4.1 przedstawiono dostpne w CodeIgniterze metody umoliwiajce zabezpieczanie danych wpisywanych przez uytkownika poprzez wstawianie lewych ukoników przed znakami specjalnymi, takimi jak apostrof czy cudzysów.

Kup książkę

Poleć książkę

Rozdzia 4. i Sterowniki systemu do obsugi bazy danych

127

Tabela 4.1. Metody zabezpieczajce dane

Metoda

Opis

Przykad

$this->db->escape()

Odpowiedni tylko dla cigów

$Sql = "INSERT INTO tabela

znakowych

(tytul) VALUES (".$this->

db->escape($Tytul).")";

$this->db->escape_str()

Odpowiedni dla wszystkich

$Sql = "INSERT INTO tabela

danych, bez wzgldu na ich typ

(tytul) VALUES('".$this->

db->escape_str($Tytul)."')";

$this->db->escape_

Odpowiedni dla cigu znakowego

$Tytul = '20% upustu';

like_str()

wykorzystanego jako parametr

$Sql = "SELECT id FROM

w zapytaniach z uyciem sowa

tabela WHERE tytul LIKE

kluczowego LIKE

'%".$this->db->escape_like_

str ($Tytul)."%'";

Bezpieczne zapytania (query)

Zastosowanie tego typu zapyta pozwala na zapewnienie wikszego bezpieczestwa aplikacji, poniewa programista nie musi pamita o sprawdzaniu danych wejciowych.

Sterownik bazy danych CodeIgnitera zapewni odpowiednie filtrowanie danych (listing 4.11).

Listing 4.11. Tworzenie zapytania wizanego

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$Zapytanie = "SELECT * FROM tabela_post WHERE post_id = ? AND post_tytul = ?

ÁND post_aktywny = ?";

$Parametry = array(1, 'Temat wiadomoci', 't');

$this->db->query($Zapytanie, $Parametry);

}

}

?>

Metoda query() przyjmuje w tym przypadku dwa parametry. Pierwszym jest zapytanie do bazy danych wraz ze znakami zapytania (?) w miejscach, w których powinny si

znale konkretne wartoci. Drugim parametrem jest tablica z tymi wanie wartociami.

Kup książkę

Poleć książkę

128

CodeIgniter. Zaawansowane tworzenie stron w PHP

Musimy pamita o jeszcze jednej bardzo wanej sprawie: liczba wartoci w tablicy musi by równa liczbie znaków zapytania umieszczonych w pierwszym parametrze.

Generowanie rezultatów zapytania

Istnieje kilka sposobów generowania rezultatu wykonanego zapytania. Wybór konkret-nego sposobu zaley od tego, jak warto chcemy uzyska , w jaki sposób ma zosta zaprezentowana uytkownikowi i do czego ma nam suy .

Metoda result()

Metoda result() daje dostp do wyniku zapytania uzyskanego z wczeniej omówionej metody query(). Wynik ten jest udostpniany jako obiekt, który mona przetworzy w ptli foreach. Na listingu 4.12 pokazano przykadowy skrypt. Rezultatem jego wykonania bdzie:

1 Temat wiadomoci t

2 Kolejny temat wiadomoci t

Listing 4.12. Odbieranie wyniku zapytania za pomoc metody result()

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$Rezultat = $this->db->query('SELECT * FROM tabela_post');

foreach($Rezultat->result() as $dane)

{

echo $dane->post_id;

echo ' ';

echo $dane->post_tytul;

echo ' ';

echo $dane->post_aktywny;

echo '<br />';

}

}

}

?>

Kup książkę

Poleć książkę

Rozdzia 4. i Sterowniki systemu do obsugi bazy danych

129

Metoda result_array()

Metoda result_array() umoliwia otrzymanie wyniku zapytania w postaci zwykej tablicy asocjacyjnej, w której kluczami s nazwy kolumn z tabeli (listing 4.13).

Listing 4.13. Odbieranie wyników zapyta za pomoc metody result_array()

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$Rezultat = $this->db->query('SELECT * FROM tabela_post');

foreach ($Rezultat->result_array() as $dane)

{

echo $dane['post_id'];

echo ' ';

echo $dane['post_tytul'];

echo ' ';

echo $dane['post_aktywny'];

echo '<br />';

}

}

}

?>

Metoda num_rows()

Aby otrzyma liczb rekordów uzyskanych w wyniku zapytania, mona si posuy metod num_rows(). Wywoujemy j jako metod obiektu zawierajcego rezultat tego zapytania. Na listingu 4.14 pokazano przykadowy skrypt. Wynikiem jego wykonania bdzie liczba 2.

Listing 4.14. Przekazywanie liczby wybranych rekordów

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

Kup książkę

Poleć książkę

130

CodeIgniter. Zaawansowane tworzenie stron w PHP

$this->load->database();

$Rezultat = $this->db->query('SELECT * FROM tabela_post');

echo $Rezultat->num_rows();

}

}

?>

Metoda free_result()

Zwykle PHP automatycznie zwalnia pami przy zakoczeniu przetwarzania skryptu.

Jeli jednak tworzysz duy projekt i chcesz unikn ryzyka wystpienia bdu PHP

spowodowanego wyczerpaniem si przydzielonych aplikacji zasobów pamici RAM

serwera, warto rozway rczne, a nie automatyczne zwalnianie pamici po kadym wykonaniu zapytania. Do tego celu suy metoda free_result(). Na listingu 4.15 znajduje si przykad zastosowania tej metody.

Listing 4.15. Czyszczenie zawartoci zapytania z pamici serwera

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$Rezultat = $this->db->query('SELECT * FROM tabela_post');

foreach ($Rezultat->result_array() as $dane)

{

echo $dane['post_id'];

echo ' ';

echo $dane['post_tytul'];

echo ' ';

echo $dane['post_aktywny'];

echo '<br />';

}

$Rezultat->free_result();

}

}

?>

Kup książkę

Poleć książkę

Rozdzia 4. i Sterowniki systemu do obsugi bazy danych

131

Metoda insert_id()

Metoda insert_id() przekazuje identyfikator wartoci, która zostaa ostatnio dodana do tabeli za pomoc zapytania INSERT. Jest on pobierany z pola typu auto_increment.

Rezultatem wykonania skryptu z listingu 4.16 bdzie liczba 3.

Listing 4.16. Wywietlanie ostatniego dodanego numeru w polu auto_increment

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$Rezultat = $this->db->query('INSERT INTO tabela_post

´(post_tytul,post_aktywny) VALUES ("Inny post", "t")'); echo $this->db->insert_id();

}

}

?>

Metoda affected_rows()

Metoda affected_rows() przekazuje liczb rekordów zmienionych podczas wyko-nywania ostatniego zapytania UPDATE. Rezultatem wykonania skryptu z listingu 4.17

bdzie liczba 1.

Listing 4.17. Wywietlanie liczby rekordów zmienionych podczas ostatniego zapytania

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$Rezultat = $this->db->query('UPDATE tabela_post SET post_tytul = "Nowy post"

´WHERE post_id = 3');

echo $this->db->affected_rows();

Kup książkę

Poleć książkę

132

CodeIgniter. Zaawansowane tworzenie stron w PHP

}

}

?>

Metoda count_all()

Metoda ta zlicza wszystkie rekordy tabeli, której nazw podano w parametrze. Na listingu 4.18 znajduje si przykadowy skrypt. Rezultatem jego wykonania bdzie liczba 3.

Listing 4.18. Wywietlanie liczby rekordów w tabeli

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

echo $this->db->count_all('tabela_post');

}

}

?>

Metoda platform()

Metoda platform() pozwala na wywietlenie nazwy typu bazy danych. Rezultatem wykonania skryptu z listingu 4.19 moe by na przykad mysql.

Listing 4.19. Przekazywanie informacji o typie bazy danych

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

echo $this->db->platform();

}

}

?>

Kup książkę

Poleć książkę

Rozdzia 4. i Sterowniki systemu do obsugi bazy danych

133

Metoda version()

Metoda version() przekazuje numer wersji aktualnie wykorzystywanej bazy danych.

Na listingu 4.20 znajduje si odpowiedni przykad. Rezultatem wykonania tego skryptu bdzie 5.5.8 (wersja bazy danych moe si róni ).

Listing 4.20. Numer wersji bazy danych

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

echo $this->db->version();

}

}

?>

Metoda last_query()

Metoda last_query() pozwala na wywietlenie ostatniego zapytania, jakie wykonano na bazie danych. Na listingu 4.21 pokazano przykad wykorzystania tej metody. Rezultatem wykonania tego skryptu bdzie UPDATE tabela_post SET post_tytul = "Nowy post"

WHERE post_id = 3.

Listing 4.21. Wywietlanie ostatniego wykonanego zapytania

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$Rezultat = $this->db->query('UPDATE tabela_post SET post_tytul = "Nowy post"

´WHERE post_id = 3');

echo $this->db->last_query();

}

}

?>

Kup książkę

Poleć książkę

134

CodeIgniter. Zaawansowane tworzenie stron w PHP

Informacje o tabelach

W ramach obsugi baz danych CodeIgniter udostpnia równie metody pozwalajce na uzyskanie pewnych informacji o tabelach w bazie danych.

Metoda list_tables()

Za pomoc metody list_tables() moemy uzyska nazwy wszystkich tabel z aktualnie wykorzystywanej bazy danych. Na listingu 4.22 pokazano odpowiedni przykad.

Rezultatem wykonania tego skryptu bdzie wynik:

tabela

tabela_post

uzytkownicy

Listing 4.22. Wywietlanie nazw tabel z obecnie wykorzystywanej bazy danych

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$Tabele = $this->db->list_tables();

foreach ($Tabele as $Tabela)

{

echo $Tabela;

echo '<br />';

}

}

}

?>

Metoda table_exists()

Metoda table_exists() umoliwia sprawdzenie, czy tabela o nazwie podanej jako parametr tej metody istnieje w bazie danych (listing 4.23). Rezultatem wykonania skryptu bdzie: Tabela istnieje w bazie danych, jeeli si tam rzeczywicie znajduje, lub komunikat: Tabela NIE istnieje w bazie danych w przypadku jej braku.

Kup książkę

Poleć książkę

Rozdzia 4. i Sterowniki systemu do obsugi bazy danych

135

Listing 4.23. Sprawdzenie, czy dana tabela istnieje w bazie danych

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

if($this->db->table_exists('tabela'))

{

echo 'Tabela istnieje w bazie danych';

}

else

{

echo 'Tabela NIE istnieje w bazie danych';

}

}

}

?>

Informacje o polach tabeli

Twórcy CodeIgnitera udostpnili programistom metody pomocne w uzyskiwaniu do-datkowych informacji na temat pól (kolumn) w tabelach bazy danych.

Metoda list_fields()

Metoda list_fields() przekazuje list wszystkich pól w tabeli, której nazwa zostaa podana jako parametr tej metody. Na listingu 4.24 znajduje si przykadowy kod. Rezultatem jego wykonania bdzie:

post_id

post_tytul

post_tresc

post_aktywny

Listing 4.24. Informacje o polach tabeli

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

Kup książkę

Poleć książkę

136

CodeIgniter. Zaawansowane tworzenie stron w PHP

{

public function index()

{

$this->load->database();

$Pola = $this->db->list_fields('tabela_post');

foreach ($Pola as $Pole)

{

echo $Pole;

echo '<br />';

}

}

}

?>

Metoda field_exists()

Metoda field_exists() umoliwia sprawdzenie, czy w tabeli istnieje dane pole. Pierwszym parametrem metody jest nazwa kolumny, a drugim — nazwa tabeli (listing 4.25).

Rezultatem wykonania skryptu bdzie Kolumna post_tytul istnieje w tabeli w przypadku stwierdzenia jej obecnoci.

Listing 4.25. Informacja o okrelonym polu w tabeli

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

if($this->db->field_exists('post_tytul', 'tabela_post'))

{

echo 'Kolumna post_tytul istnieje w tabeli';

}

else

{

echo 'Kolumna post_tytul NIE istnieje w tabeli';

}

}

}

?>

Kup książkę

Poleć książkę

Rozdzia 4. i Sterowniki systemu do obsugi bazy danych

137

Metoda field_data()

Metoda field_data() przekazuje podstawowe informacje na temat pola w tabeli, któ-

rego nazw podano jako parametr tej metody. Odpowiedni przykad znajduje si na listingu 4.26. Rezultatem jego wykonania bdzie:

post_id int 11 1

post_tytul varchar 255 0

post_tresc text 0

post_aktywny char 1 0

Listing 4.26. Wywietlanie informacji o polach tabeli

<?php

if(!defined('BASEPATH'))

{

exit('No direct script access allowed');

}

class Mvc extends CI_Controller

{

public function index()

{

$this->load->database();

$Pola = $this->db->field_data('tabela_post');

foreach($Pola as $Pole)

{

echo $Pole->name;

echo ' ';

echo $Pole->type;

echo ' ';

echo $Pole->max_length;

echo ' ';

echo $Pole->primary_key;

echo '<br />';

}

}

}

?>

Poniej omówiono przekazywane wartoci:

 name — nazwa pola,

 type — typ pola,

 max_length — maksymalna dugo danych w polu (wielko przechowanych informacji),

 primary_key — jeeli dane pole stanowi klucz gówny tabeli, warto tego parametru wyniesie 1.

Kup książkę

Poleć książkę

138

CodeIgniter. Zaawansowane tworzenie stron w PHP

Kup książkę

Poleć książkę

Skorowidz

A

D

adres

dane sesji, 99

e-mail, 153

data, 144

IP, 82

dodawanie

URL, 18

danych do widoku, 23

aktualizacja CodeIgnitera, 14

pliku do archiwum, 114

arkusz stylów, 174

dostp do

atak

bazy danych, 121

CSRF, 97

metod modelu, 26

directory travelsal, 184

dzielenie treci, 91

XSS, 79

automatyczne adowanie, 21, 204

E

B

e-mail, 46, 153

baza danych, 12, 119, 204

F

benchmark, 37

bezpieczestwo, 34, 95, 184

filtrowanie

bezpieczne zapytania, 127

danych, 95, 142

biblioteka, 27

XSS, 80, 95

lang, 88

format daty, 145

pagination, 92, 213

formularz, 54, 55, 58, 161

bd 404, 31

framework

buforowanie stron, 34

CodeIgniter, 11

Symfony, 261

C

Yii, 261

Zend, 11, 261

cig, 187

FTP, 64

CodeIgniter, 11

funkcja

CSRF, Cross-Site Request Forgeries, 97

alternator(), 188

czas generowania strony, 37

anchor(), 199

czyszczenie zawartoci zapytania, 130

ascii_to_entities(), 193

base_url(), 197

br(), 172

byte_format(), 181

character_limiter(), 193

current_url(), 198

Kup książkę

Poleć książkę

264

CodeIgniter. Zaawansowane tworzenie stron w PHP

funkcja

reduce_double_slashes(), 190

days_in_month(), 147

repeater(), 189

delete_cookie(), 143

sanitize_filename(), 184

delete_files(), 155

send_email(), 154

directory_map(), 150

set_cookie(), 143

do_hash(), 185

set_realpath(), 183

doctype(), 179

show_404(), 32

element(), 139

show_error(), 31

elements(), 141

site_url(), 197

ellipsize(), 196

standard_date(), 144

encode_php_tags(), 186

strip_image_tags(), 185

entities_to_ascii(), 194

strip_quotes(), 191

force_download(), 152

symbolic_permissions(), 159

form_button(), 170

timespan(), 146

form_checkbox(), 167

timezone_menu(), 148

form_close(), 171

timezones(), 148

form_dropdown(), 165

trim_slashes(), 190

form_error(), 64

ul(), 175

form_fieldset(), 167

unix_to_human(), 146

form_fieldset_close(), 167

uri_string(), 198

form_hidden(), 162

valid_email(), 153

form_input(), 163

validation_errors(), 64

form_multiselect(), 166

word_limiter(), 192

form_open(), 161

word_wrap(), 195

form_open_multipart(), 162

write_file(), 154

form_password(), 164

xml_convert(), 201

form_prep(), 171

xss_clean(), 184

form_radio(), 168

form_reset(), 169

G

form_submit(), 169

form_textarea(), 165

generowanie

form_upload(), 164

adresu URL, 197

get_cookie(), 143

cigu URI, 104

get_dir_file_info(), 156

czy, 93

get_file_info(), 158

nagówków, 91

get_mime_by_extension(), 159

przycisku, 170

heading(), 172

rezultatów zapytania, 128

highlight_code(), 194

strony, 90

img(), 173

grupowanie pól, 167

increment_string(), 188

index_page(), 199

lang(), 180

H

link_tag(), 174

local_to_gmt(), 145

HTML, 171

log_message(), 32

meta(), 177

I

nbs(), 175

now(), 144

identyfikacja przegldarki, 105

octal_permissions(), 160

informacje o

ol(), 175

plikach, 157

quotes_to_entities(), 191

polach tabeli, 135

random_element(), 140

przegldarce, 112

random_string(), 187

tabelach, 134

read_file(), 155

typie bazy danych, 132

redirect(), 200

instalacja CodeIgnitera, 14

Kup książkę

Poleć książkę

Skorowidz

265

J

konfiguracja, 43

automatycznego adowania, 204

jzyk, 88, 179

bazy danych, 205

domylnego kontrolera, 205

K

kalendarza, 42

obiektu email, 49

kalendarz, 39

obiektu upload, 56

opcje konfiguracji, 42

sesji, 100

opcje szablonu, 43

kontroler, 11, 17, 19

opcje wywietlania, 41

edycja wpisów, 219

wyszczególnianie dat, 40

domylny, 19

katalog, 150

formularza, 59

cache, 33

kategoria wpisów, 212

CodeIgniter, 19

logowanie administratora, 206

CodeIgniterBlog, 203

strona gówna, 209

controllers, 18

wpis, 215

helpers, 28

wylogowanie administratora, 208

libraries, 27

konwersja znaczników, 186

logs, 33

uploads, 55

L

views, 54

klasa

LAMPP, 203

array, 139

liczba, 181

CI_Model, 25

liczba rekordów, 132

cookie, 143

lista

date, 144

rozwijana, 166

directory, 150

wielokrotnego wyboru, 166

download, 152

wypunktowana, 176

email, 153

file, 154

à

form, 161

html, 171

adowanie

language, 179

automatyczne zasobów, 29

number, 181

biblioteki, 27, 53

parser, 101

biblioteki dzielenia treci, 92

path, 182

biblioteki email, 85

security, 95, 184

biblioteki table, 86

session, 97

klasy, 85

string, 187

klasy pomocniczej, 28, 87

text, 192

modelu, 25, 87

uri, 103

obiektu encrypt, 51

url, 197

obiektu form_validation, 58

user_agent, 105

obiektu ftp, 64

xml, 200

obiektu zip, 113

zip, 113

pliku jzykowego, 88, 90

klasy

pliku konfiguracyjnego, 44

pomocnicze, 28, 139

preferencji, 41

systemowe, 37

sterownika, 29

kodowanie, 53

sterownika bazy danych, 120

UTF-8, 113

wersji jzykowej, 89

wyrazów, 185

widoku, 22, 23, 86

kolorowanie skadni, 194

cza do stron, 93, 199

kompresja plików, 113

Kup książkę

Poleć książkę

266

CodeIgniter. Zaawansowane tworzenie stron w PHP

M

language(), 87

last_query(), 133

metoda

library(), 85

accept_charset(), 113

line(), 89

accept_lang(), 112

list_fields(), 135

add_data(), 114

list_files(), 70

add_dir(), 114

list_tables(), 134

add_row(), 75

load(), 44, 89

affected_rows(), 131

log_message(), 33

agent_string(), 111

make_columns(), 75

all_userdata(), 99

message(), 48

archive(), 116

mirror(), 70

assoc_to_uri(), 104

mkdir(), 71

attach(), 48

mobile(), 109

base_url(), 46

model(), 86

bcc(), 47

move(), 68

browser(), 108

num_rows(), 129

cache(), 34

parse(), 102

cc(), 47

platform(), 110, 132

chmod(), 72

print_debugger(), 48

clear(), 48, 77

query(), 125, 126

clear_data(), 117

read_dir(), 115

close(), 72, 124

read_file(), 115

connect(), 65

reconnect(), 123

count_all(), 132

referrer(), 111

create_links(), 93

rename(), 67

data(), 57

reply_to(), 47

database(), 87, 120, 122

request_headers(), 84

decode(), 52

result(), 128

delete_dir(), 69

result_array(), 129

delete_file(), 68

robot(), 110

display_errors(), 57

run(), 62

do_upload(), 57

sanitize_filename(), 96

download(), 66, 116

segment(), 103

enable_profiler(), 91

send(), 48

encode(), 51

set_alt_message(), 48

field_data(), 137

set_caption(), 74

field_exists(), 136

set_content_type(), 90

free_result(), 130

set_cookie(), 81

from(), 47

set_empty(), 76

function(), 78

set_header(), 91

generate(), 39, 74

set_heading(), 75

get(), 80

set_item(), 45

get_post(), 81

set_output(), 90

get_request_header(), 84

set_rules(), 62

get_zip(), 117

set_status_header(), 91

helper(), 28, 87

set_template(), 76

initialize(), 92

set_userdata(), 98

insert_id(), 131

sha1(), 53

ip_address(), 82

site_url(), 45

is_browser(), 106

subject(), 47

is_mobile(), 107

system_url(), 46

is_referral(), 108

table_exists(), 134

is_robot(), 107

unset_userdata(), 100

item(), 44

upload(), 66

Kup książkę

Poleć książkę

Skorowidz

267

uri_to_assoc(), 103

P

user_agent(), 83

userdata(), 98

pami , 38

valid_ip(), 83

plik, 154

version(), 109, 133

.htaccess, 18, 205

view(), 86

autoload.php, 29, 44, 90, 204

xss_clean(), 95

config.php, 18, 204

metody

database.php, 120, 122, 205

prywatne, 20

index.php, 31, 204

zabezpieczajce dane, 127

routes.php, 19, 30, 205

model, 11, 17, 24

pliki

edycja, 233

cookie, 81, 143

kategoria, 229

dziennika, 33

logowanie uytkownika, 227

konfiguracyjne, 43

polecenia wspódzielone, 233

kontrolerów, 20

strona gówna, 228

modelu, 26

wpis, 231

tymczasowe, 33, 35

MVC, Model–View–Controller, 11, 17

widoku, 22, 102

pobieranie, 152

adresu IP, 82

N

archiwum, 116

pliku, 66

nagówek MIME, 159

pliku generowanego w locie, 152

nagówki, 84, 91

zmiennej, 80

narzdzie phpMyAdmin, 119, 204

podzia na strony, 92

nazwy zastrzeone, 259

pola tabeli, 135

nazwy zastrzeone waciwoci, 30

pole

tekstowe, 163

O

typu checkbox, 168

typu file, 164

obiekt

typu radio, 168

benchmark, 37

ukryte, 162

calendar, 39

wieloliniowe, 165

email, 46, 49

poczenie z baz danych, 120, 122

encrypt, 50

pozycjonowanie strony, 29

form_validation, 58

prawa dostpu do pliku, 160

ftp, 64

przegldarka uytkownika, 105

input, 79

przekazywanie widoków, 24

load, 85

przenoszenie pliku, 68

modelu, 25

przesyanie pliku, 53, 66

output, 90

table, 73

R

upload, 53, 56

zip, 113

reguy walidacji, 59

obsuga

resetowanie formularza, 170

bazy danych, 119

rezultaty zapyta, 128

bdów, 31

odczytywanie zawartoci pliku, 155

odszyfrowywanie, 52

S

opcja

sesja, 97

error_reporting, 35

spolszczenie, 13

magic_quotes_runtime, 36

sprawdzanie cieki dostpu, 183

register_globals, 35

sterownik bazy danych, 120

opcje walidacji formularza, 61

strefy czasowe, 149

Kup książkę

Poleć książkę

268

CodeIgniter. Zaawansowane tworzenie stron w PHP

struktura katalogu, 150

widok, 11, 17, 21

szablon

dodawanie kategorii, 246

kalendarza, 42

edytowanie kategorii, 245

tabeli, 77

edytowanie wpisu, 251

szyfrowanie, 51

formularz, 54

kategoria, 243

menu, 240

menu administratora, 242

cieka, 182

nagówek, 237

rodowisko pracy, 203

najnowsze wpisy, 253

nowy wpis, 249

stopka, 240

T

strona gówna, 255

wpisy, 246

tabele, 73, 134

zaloguj, 254

tablica, 139

zmie haso, 256

$_POST, 80

wieloznaczniki, wildcards, 30

$config[], 43

wasna metoda sprawdzajca, 63

$route, 19, 30

wprowadzanie danych, 79

tekst, 192

wydajno systemu, 37

tworzenie

wydruk

aplikacji, 203

nagówka, 172

archiwów, 116, 118

wartoci pola, 171

bazy danych, 204

wygld strony, 101

formularza, 161

wyraenia regularne, 30

katalogu, 71

wysyanie

kolumn, 75

danych z formularza, 142, 169

kopii katalogu, 71

wiadomoci, 46, 49

listy, 176

wywietlanie

cza, 199

daty, 145

struktury katalogu, 150

U

wpisów, 212

znacznika czasu, 145

URI, 103

URL, 197

urzdzenie mobilne, 107

X

usuwanie

XAMPP, 203

apostrofów, 191

XML, 200

danych z sesji, 100

XSS, Cross-Site Scripting, 79

katalogu, 69

plików, 68, 156

plików tymczasowych, 34

Z

ukoników, 190

znaczników, 186

zabezpieczanie

danych, 126

nazwy pliku, 184

V

zamykanie

formularza, 171

VPS, Virtual Private Server, 11

poczenia, 72

zapis

W

do sesji, 98

tekstu do pliku, 154

walidacja

zapytania SQL, 119, 125

adresu e-mail, 153

zapytanie wizane, 127

formularzy, 58

Kup książkę

Poleć książkę

Skorowidz

269

zastrzeone nazwy

zmienna

funkcji, 259

$c, 18

kontrolerów, 259

$m, 18

staych, 260

znacznik

zmiennych, 260

<br />, 172

zawijanie wierszy, 49

<link />., 174

zmiana

<META>, 177

nazwy pliku, 67

DTD, 179

praw katalogu, 72

IMG, 173

znaki ASCII, 193

zuycie pamici, 38

Kup książkę

Poleć książkę

270

CodeIgniter. Zaawansowane tworzenie stron w PHP

Kup książkę

Poleć książkę

KSIĄŻKI TEGO AUTORA

Linux. Komendy i polecenia. Wydanie V Yii Framework Linux. Komendy i polecenia. Wydanie IV rozszerzone Linux. Komendy i polecenia. Wydanie III CodeIgniter. Zaawansowane tworzenie stron w PHP Yii2 Framework - Nauka poprzez tworzenie systemu CMS