[PHP] Jak założyć bazę danych dBase (dbf) i dodać do niej rekordy?
Chcesz stworzyć bazę w formacie DBF i dodawać do niej rekordy z danymi.
Bazy danych formatu dBase (z rozszerzeniem .dbf) mają prostą konstrukcję, są popularne i można ich użyć w wypadku, gdy nie masz dostępu do tradycyjnych baz, jak MySQL czy Postgres.
Korzystają z nich także inne programy (jak wspomniany dBase), a więc, jeżeli baza ma być współdzielona przez skrypty PHP i inne aplikacje bazodanowe, może to być najlepsze rozwiązanie do przechowywania danych.
Stwórzmy bazę .dbf i dodajmy do niej rekordy z danymi. Zanim jednak zaczniesz operować na bazach DBF, musisz w pliku php.ini usunąć komentarz z rozszerzenia php_dbase:
extension=php_dbase.dll
Założenie bazy nie jest skomplikowane:
<?
$dbf = "moja.dbf";
$struktura = array(
array("imie", "C", 50),
array("nazwisko", "C", 50),
array("dataur", "D"),
array("zarobki", "N", 10, 2),
);
if (!dbase_create($dbf, $struktura)) {
echo "Błąd podczas tworzenia bazy!";
}
?>
Musisz zdefiniować nazwę pliku, strukturę danych i stworzyć bazę funkcją dbase_create(). Struktura rekordu musi być zapisana w tablicy dwuwymiarowej. Tablica dla każdego pola zawiera nazwę pola (do 10 znaków), typ pola, oraz jego długość i precyzję (dla liczb).
Do wyboru masz pola oznaczone jako:
"C" - typ znakowy (łańcuchy znaków), z określeniem długości pola (do 255 znaków)
"L" - typ logiczny (nie trzeba niczego dodatkowego określać)
"D" - typ daty w formacie RRRRMMDD (nie trzeba określać długości/typu)
"N" - typ numeryczny
"M" - typ memo, ale PHP nie obsługuje go poprawnie i lepiej z niego nie korzystać.
Mamy już stworzoną bazę, czas aby dopisać do niej jakieś dane, co też nie jest trudne:
<?
$dbf = "moja.dbf";
$db = dbase_open($dbf, 2); // 0 - odczyt, 1 - zapis, 2 - zapis i odczyt
$rekord = array("Jan","Kowalski","19740714","1230.30");
$wynik = dbase_add_record($db, $rekord);
if (!$wynik) echo "Nie udało się dodać rekordu!";
dbase_close($db);
?>
Określamy nazwę bazy, otwieramy ją do zapisu (tryb 2), tworzymy tablicę z wartościami rekordów i dodajemy ją do bazy poleceniem dbase_add_record(). I to wszystko.
Przed zamknięciem bazy możemy jeszcze sprawdzić, czy rekord udało się poprawnie dopisać do bazy.
Dodajmy wiele rekordów za jednym zamachem:
<?
$dbf = "moja.dbf";
$db = dbase_open($dbf, 2); // 0 - odczyt, 1 - zapis, 2 - zapis i odczyt
dbase_add_record($db, array("Jan","Kowalski","19740123","2200.00"));
dbase_add_record($db, array("Piotr","Paks","19780411","1923.40"));
dbase_add_record($db, array("Ania","Kiwak","19810929","1798.11"));
dbase_add_record($db, array("Basia","Nowak","19720303","2112.00"));
dbase_close($db);
?>