Jak wygenerować statyczny plik .html z bazy danych, PHP Skrypty


[PHP][MySQL] Jak wygenerować statyczny plik .html z bazy danych?

0x01 graphic

Chcesz stworzyć statyczny plik HTML zawierający informacje pobrane z bazy danych.

0x01 graphic

Jeżeli informacje w Twojej bazie danych nie zmieniają się zbyt często, a serwis ma bardzo dużą oglądalność, nie opłaca się za każdym razem pobierać danych z bazy i wypisywać ich na stronie. Dobrym przykładem są notowania walut, które ustalane są raz dziennie - można je umieścić w pliku HTML zamiast każdorazowo pobierać z bazy danych.

Połączenie z bazą danych i czas potrzebny na pobranie wyników w przypadku jednej osoby może okazać się znikomy, praktycznie niezauważalny. Natomiast gdy tą samą czynność będzie wykonywać tysiące osób przez cały dzień, a jeszcze gdy notowania będą widoczne na każdej stronie - wtedy pojawią się poważne problemy z wydajnością serwera, szczególnie gdy do bazy danych kierujesz skomplikowane pytania zawierające np. sortowanie rekordów.

Aby ustrzec się przed taką sytuacją, na podstawie danych z tabeli w bazie danych można stworzyć statyczny plik HTML, który będzie dołączany do każdej ze stron. Jego zawartość będzie zmieniana tylko wtedy gdy nastąpi aktualizacja bazy danych, a więc stosunkowo niewiele razy w ciągu dnia.

Ponieważ będzie on zawierał tylko HTML, łatwo można go podpiąć do dowolnej strony, a czas jego pobrania i pokazania na stronie będzie natychmiastowy, bez jakichkolwiek strat i obciążania serwera.

Stwórzmy przykładową tabelę z ogłoszeniami i zapiszmy z niej np. 3 ostatnio dodane ogłoszenia do pliku HTML, aby potem można go było włączyć do innych podstron. Niech nasza tabela ma prostą konstrukcję na potrzeby tego przykładu:

CREATE TABLE ogloszenia (

id INT NOT NULL PRIMARY KEY auto_increment,

nadawca CHAR(100) NOT NULL,

tresc TEXT NOT NULL

);

Teraz dodajmy kilka ogłoszeń:

INSERT INTO ogloszenia (nadawca,tresc)

VALUES ("Janek", "Sprzedam tokarke z 1965 r.");

INSERT INTO ogloszenia (nadawca,tresc)

VALUES ("Piotr", "Kupie uszkodzony samochod");

INSERT INTO ogloszenia (nadawca,tresc)

VALUES ("Anna", "Szukam pracy na stanowisku ksiegowej");

INSERT INTO ogloszenia (nadawca,tresc)

VALUES ("Arek", "Zamienie dom na apartament");

Co ostatecznie stworzy nam tabelę w takiej postaci:

id | nadawca | tresc

---+---------+---------------------------------------

1 | Janek | Sprzedam tokarke z 1965 r.

2 | Piotr | Kupie uszkodzony samochod

3 | Anna | Szukam pracy na stanowisku ksiegowej

4 | Arek | Zamienie dom na apartament

Najnowsze ogłoszenie ma numer 4, ponieważ pole ID jest typu auto_increment, a więc zwiększa się po dodaniu kolejnego ogłoszenia.

Chcemy pobrać trzy ostatnio dodane ogłoszenia i zapisać je do pliku. Należy to zrobić po każdym dopisaniu nowego ogłoszenia aby uaktualnić plik HTML. W ten sposób aby odczytać najnowsze ogłoszenia i pokazać je na wszystkich stronach serwisu wystarczy sięgać do bazy tylko tyle razy ile dodanych zostało ogłoszeń. W przeciwnym wypadku wciąż trzeba by było pobierać nowe rekordy, co w wypadku dużej ilości ogłoszeń i odwiedzających przeciążyłoby serwer.

Stwórzmy zatem skrypt, który zapisze do pliku ostatnio dodane ogłoszenia. Oczywiście w zależności od konstrukcji tabeli musisz zmodyfikować wygląd zapisywanych danych, ale jest to proste do zrobienia mając już gotowy szablon w postaci uniwersalnego przykładu:

<?

// połączenie z bazą i pobranie danych

$baza=mysql_connect("localhost", "user", "password");

mysql_select_db("baza1",$baza);

$wynik=mysql_query(

"SELECT * FROM ogloszenia ORDER BY id DESC LIMIT 3",$baza);

mysql_close($baza);

// formatowanie strony

$wierszy = mysql_num_rows($wynik);

$pol = mysql_num_fields($wynik);

$strona .= "<table border=1 cellpadding=5 cellspacing=1><tr>

<td><b>id</b></td><td><b>nadawca</b></td><td><b>ogłoszenie</b></td></tr>";

for ($i=0;$i<$wierszy;$i++) {

$wiersz = mysql_fetch_row($wynik);

$strona .= "<tr>";

for ($j=0;$j<$pol;$j++) $strona .= "<td>".$wiersz[$j]."</td>";

$strona .= "</tr>";

}

$strona .= "</table>";

// echo $strona; //aby wyświelić stworzony kod na stronie WWW

//zapisanie do pliku

$f=fopen("ogloszenia3.html","w");

fputs($f,"$strona\n");

fclose($f);

?>

W pierwszych linijkach skryptu łączymy się z bazą danych aby pobrać ogłoszenia spełniające nasze kryteria wyszukiwania. Ponieważ są to ogłoszenia dodane ostatnio, więc sortujemy wynik względem pola id w porządku odwróconym (ORDER BY id DESC), a więc od największej wartości id do najmniejszej. Ponieważ chcemy dostać tylko trzy ostatnie, dodajemy jeszcze ograniczenie ilości w wyniku do trzech (LIMIT 3).

Kolejny blok programu odpowiada za formatowanie elementów HTML i włożenie do kodu pobranych wyników. Cały utworzony tekst HTML zostaje dodawany do zmiennej $strona.

W pierwszym etapie konstruowania statycznej strony zamiast umieszczać wszystko w zmiennej lepiej zastosować od razu echo aby oglądać wynik na ekranie. Dopiero potem można wszystkie echo zamienić na zmienną, która będzie zawierać kod HTML z wynikami z tabeli.

W naszym przykładzie tworzę tabelę w HTML, gdzie zostają zapisane trzy rekordy. W takiej postaci statyczna strona będzie dołączana do innych stron w serwisie.

Przed ostatecznym zapisaniem kodu HTML możesz jeszcze podglądnąć, jak będzie on wyglądał za pomocą echo $strona. W tej chwili ta linijka jest komentarzem.

Na końcu tradycyjna procedura zapisania kodu HTML do pliku ogloszenia3.html. Mamy już trzy ostatnie ogłoszenia w statycznym HTMLu, więc można go umieścić na dowolnej stronie stosując zwykłego "includa":

include("ogloszenia3.html");

Jeżeli chcesz stworzyć niezależną stronę HTML, wtedy przed zapisaniem zmiennej $strona musisz dodać jeszcze nagłówek strony i stopkę, np. w ten sposób:

<?

$naglowek = '

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

<html><head><meta http-equiv="content-type"

content="text/html; charset=iso-8859-2">

<title>tytuł strony</title></head><body>';

$stopka = '</body></html>'

$strona = $naglowek.$strona.$stopka;

//zapisanie do pliku

$f=fopen("ogloszenia3.html","w");

fputs($f,"$strona\n");

fclose($f);

?>



Wyszukiwarka

Podobne podstrony:
Jak wysłać mailem w formacie HTML zawartość tabeli z bazy danych, PHP Skrypty
Jak zapisać dane pochodzące z animacji do pliku lub do bazy danych, PHP Skrypty
Jak zapisać i potem odczytać grafikę lub dowolny plik w bazie danych, PHP Skrypty
jak zapisac i potem odczytac grafikę lub dowolny plik w bazie danych, PHP Skrypty
Jak za pomocą PHP pobrać nazwy tabel dostępne w wybranej bazie danych, PHP Skrypty
Jak zakładać i kasować tabele w bazie danych, PHP Skrypty
Jak stworzyć zaawansowany test wyboru lub quiz, PHP Skrypty
jak miedzy stronami przesłać zmienne korzystajac z sesji, PHP Skrypty
Jak zrobić licznik pobrań plików ze strony, PHP Skrypty
Jak zrobić przekierowanie z jednej strony na drugą, PHP Skrypty
Jak dopisać dane na początku pliku tekstowego, PHP Skrypty
Jak zamienić liczby na kwoty zapisane słownie, PHP Skrypty
jak samodzielnie obliczyc numer dnia w dowolnym roku, PHP Skrypty
Jak odbierać dane pochodzące z różnych pól formularza, PHP Skrypty
Jak wysłać list do grup dyskusyjnych USENET, PHP Skrypty
jak stworzyc licznik klikniec ze statystyka dzienną, PHP Skrypty
Jak cenzurować wypowiedzi i brzydkie słowa na forum, PHP Skrypty
jak w grafice zmienic wybrane kolory na inne, PHP Skrypty
jak wykonac strone z logowaniem do innej strony, PHP Skrypty

więcej podobnych podstron