Nawigacja
Pierwsza wtyczka do PHP-Fusion v7 cz.4: Baza danych
Napisane przez Chemikpil
dnia 13 marca 2011 15:52 ·
0 komentarzy ·
12453 czytań ·
·
·
Streszczenie:
Podstaw? ka?dej aplikacja s? dane, na których wykonywane s? pewne operacje. Dane te musz? by? gdzie? sk?adowane, i przewa?nie jest to baza danych. Nie inaczej sprawa wygl?da, je?li mówimy o wtyczkach w PHP-Fusion. Chc? stworzy? powa?ny skrypt, musimy uwzgl?dni? wykorzystanie bazy danych i tym si? dzi? zajmiemy.Uwaga! Aby dobrze zrozumie? ten artyku?, wymagana jest cho?by podstawowa wiedz na temat SQL.
Plik infusion.php
Na pocz?tek dokonamy edycji pliku instalacyjnego, w którym zadeklarujemy struktur? tabeli wykorzystywanej przez nasz skrypt. Przypominam, ?e zajmujemy si? skryptem losuj?cym cytaty. Zanim to jednak zrobimy, musimy poinformowa? instalator ile tabel b?dziemy tworzy? i usuwa?.
$inf_newtables = 1; // Ilo?? tworzonych tabel
$inf_insertdbrows = 0; // Ilo?? wstawianych wierszy
$inf_altertables = 0; // Ilo?? zmienianych tabel
$inf_deldbrows = 1; // Ilo?? usuwanych tabel
W tabeli b?dziemy przechowywa? tre?? cytatu i jego autora.
$inf_newtable[1] = DB_CYTATY." (
id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
cytat VARCHAR(255) NOT NULL,
autor VARCHAR(100) NOT NULL,
PRIMARY KEY(id)
) TYPE=MyISAM;";
Przyjrzyjmy si? bli?ej sk?adni. $inf_newtable to tablica w której trzymamy kolejne deklaracje tabel, DB_CYTATY to sta?a zast?puj?ca nam nazw? tabeli o której powiem za chwile, a dalej to ju? tylko SQL.
Nast?pnie dodajemy linijk? informuj?c? deinstalator, które tabele ma usun??.
$inf_droptable[1] = DB_CYTATY;
Poza wymienionymi sposobami interakcji z baz? danych s? jeszcze dwa inne: wstawianie nowych kolumn...
$inf_altertable[1] = DB_CYTATY." ADD year DATE";
... oraz wstawianie nowych wierszy:
$inf_insertdbrow[1] = DB_CYTATY."(cytat, autor) VALUES('Cz?owiek jest tym, o czym przez ca?y dzie? my?li', 'Ralph Waldo Emerson')";
Oczywi?cie o ka?dym takim zabiegu nale?y informowa? instalator, przypisuj?c wi?ksz? liczb? do zmiennych z pocz?tku artyku?u.
Plik infusion_db.php
W pliku infusion_db.php definiujemy sta?e, które wykorzystywane by?y w pliku infusion.php oraz b?d? u?ywane w pozosta?ych plikach naszej aplikacji zamiast ca?ych nazw tabel. Poni?ej poprawna zawarto?? pliku infusion_db.php:
if (!defined("IN_FUSION")) { die("Access Denied"); }
if (!defined("DB_CYTATY")) {
define("DB_CYTATY", DB_PREFIX."cytaty");
}
Po utworzeniu tego pliku musimy go doda? jeszcze do naszego instalatora:
include INFUSIONS."cite_panel/infusion_db.php";
... do tego pami?tajmy by wcze?niej odinstalowa? wcze?niejsz? wersje wtyczki i mo?emy zainstalowa? now?, wykorzystuj?c? baz? danych.Warto jeszcze sprawdzi? prze PHPMyAdmin czy tabele faktycznie zosta?y utworzone, tak dla wi?kszej pewno?ci.
Poni?ej prezentuje poprawny plik infusion.php:
<?php
if (!defined("IN_FUSION")) { die("Access Denied"); }
include INFUSIONS."cite_panel/infusion_db.php";
if (file_exists(INFUSIONS."cite_panel/locale/".$settings['locale'].".php")) {
include INFUSIONS."cite_panel/locale/".$settings['locale'].".php";
}
$inf_title = "Cite panel"; // Nazwa infusiona
$inf_description = $locale['HL102']; // Opis infusiona
$inf_version = "1.0"; // Wersja infusiona
$inf_developer = "Autor"; // Autor infusiona
$inf_email = "adres@email.com"; // Email autora
$inf_weburl = "www.twojastrona.pl"; // Strona domowa autora
$inf_folder = "cite_panel"; // Folder w którym znajduj? si? pliki infusiona
$inf_newtables = 1; // Ilo?? tworzonych tabel
$inf_insertdbrows = 0; // Ilo?? wstawianych wierszy
$inf_altertables = 0; // Ilo?? zmienianych tabel
$inf_deldbrows = 1; // Ilo?? usuwanych tabel
$inf_newtable[1] = DB_CYTATY." (
id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
cytat VARCHAR(255) NOT NULL,
autor VARCHAR(100) NOT NULL,
PRIMARY KEY(id)
) TYPE=MyISAM;";
$inf_droptable[1] = DB_CYTATY;
$inf_sitelink[1] = array(
"title" => $locale['HL103'], // Tytu? linku
"url" => "cite_index.php", // Adres pliku
"visibility" => "0" //Widoczno?? 0 - wszyscy, 1 - zalogowani, 2 - admin
);
?>
Zapytania
By wykona? jakie? zapytanie do bazy danych, nale?y skorzysta? z funkcji dbquery. Jako argument przyjmuje ona zapytanie w j?zyku SQL, np takie:
dbquery("SELECT * FROM ".DB_CYTATY." ");
Takie zapytanie warto wywo?ywa? jako warunek if, gdy? w przypadku niepowodzenia funkcja zwraca false, dzi?ki czemu b?dziemy mogli obs?u?y? po swojemu tego typu zaj?cia.
Inn? wa?na funkcj? jest dbarray, która zwraca wyniki w postaci tablicy asocjacyjnej. Przyk?ad: mamy tabel? o takiej strukturze:
id | imie | nazwisko
Chc?c teraz pobra? i wy?wietli? wszystkie imiona, najpierw musimy wykona? zapytanie SELECT, przy pomocy dbquery, a potem wyniki zwróci? w postaci tablicy asocjacyjnej przy pomocy dbarray:
$resutl = dbquery("SELECT * FROM ".DB_OSOBY." ");
while($data = dbarray($result)) {
echo $data['imie'];
}
Oczywi?cie PHP-Fusion posiada wi?cej wbudowanych funkcji obs?uguj?cych baz?, ale po wi?cej informacji odsy?am do dokumentacji:
Przyk?ad
Tu powinien znale?? si? przyk?ad bazuj?cy na naszej aplikacji wy?wietlaj?cej losowy cytat. Zostawiam to jednak jako ?wiczenie w my?l pytania: "jak chcesz zdoby? wiedz? inaczej ni? przez praktyk??". W nast?pnej cz??ci zg??bimy tajniki administracji oraz bezpiecze?stwa (najprawdopodobniej po??cz? dwie ostatnie cz??ci).
Komentarze
Dodaj komentarz
Oceny
Zaloguj się lub zarejestruj, żeby móc zagłosować.
Świetne! | ![]() |
100% | [2 głosy] |
Bardzo dobre | ![]() |
0% | [0 głosów] |
Dobre | ![]() |
0% | [0 głosów] |
Średnie | ![]() |
0% | [0 głosów] |
Słabe | ![]() |
0% | [0 głosów] |