ForumCała strona

Nawigacja

Aktualnie online

Gości online: 3

Użytkowników online: 0

Łącznie użytkowników: 25,399
Najnowszy użytkownik: AlojzyBartek

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

Musisz zalogować się, aby móc dodać wiadomość.

JazOOn
06.12.2024 23:45:46
Amen

Zbigniew@
17.11.2024 11:33:24
Nie ten grzeszy kto pije, ale ten, kto się nie upije.

JazOOn
16.11.2024 20:46:18
tja

Zbigniew@
15.11.2024 18:58:17
Kto pije, ten nie bije.

JazOOn
31.10.2024 20:49:47
Kto pije?

Pobierz nową wersję
Pobierz podręcznik
Zobacz inne oficjalne Supporty
Statystyki supportu
PHP-Fuson PL na Facebooku

RSS

Polecamy hosting SferaHost.pl

Nawigacja

Pierwsza wtyczka do PHP-Fusion v7 cz.4: Baza danych

Napisane przez Chemikpil dnia 13 marca 2011 15:52 · 0 komentarzy · 12174 czytań · Drukuj · Facebook · Wykop

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

Brak komentarzy. Może czas dodać swój?

Dodaj komentarz

Zaloguj się, aby móc dodać komentarz.

Oceny

Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony
Zaloguj się lub zarejestruj, żeby móc zagłosować.

Świetne! Świetne! 100% [2 głosy]
Bardzo dobre Bardzo dobre 0% [0 głosów]
Dobre Dobre 0% [0 głosów]
Średnie Średnie 0% [0 głosów]
Słabe Słabe 0% [0 głosów]
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl