Blog webdeveloperski Patryk yarpo Jar

Includowanie oparte o bazę danych

Autor wiadomości Październik 31, 2010

Porada ta jest rozwinięciem: Includowanie - pliki

Przedstawię tu, w jaki sposób mając tylko 1 [słownie: jeden] plik – 'index.php' – można wczytywać nieskończenie wiele różnych stron. Wszystko dzięki odpowiednim wykorzystaniu bazy danych MySQL (równie dobrze może to być każda inna). Stwórzmy więc najpierw odpowiednią bazę danych:

Przydatną może się okazać porada: MySQL z wiersza poleceń

create database moja;    # utwórz bazę danych
use moja;             # przejdź do tej bazy danych
create table strony (
    id_strony int(5) primary key auto_increment,
    menu char(30) not null,
    tresc text
);
insert into strony values (null, 'home', 'to jest strona główna');
insert into strony values (null, 'o mnie', 'to jestem ja');
insert into strony values (null, 'kontakt', 'moje GG: 00000');

Jeśli udało cię się już stworzyć bazę danych i odpowiednią tabelę, zapraszam dalej. Teraz stworzymy stronę index.php:

<html>
<head>
    <meta http-equiv="Content-type" content="application/xhtml+xml; charset=utf-8" />
    <title>Includowanie z bazy danych</title>
</head>
<body>
    <!-- Tu stały top, banner, logo itp. -->

<?php /*Tu będzie kod php */ ?>

    <p>Tu stała stopka</p>
</body>
</html>

Menu będzie wyglądać tak:

<ul>
    <li><a href="/php/artykuly.html?id_strony=1">home</a></li>
    <li><a href="/php/artykuly.html?id_strony=2">o mnie</a></li>
    <li><a href="/php/artykuly.html?id_strony=3">konakt</a></li>
</ul>

Gdzie `id_strony' jest numerem rekordu w bazie danych, który przechowuje treść dla tej podstrony. Oczywiście aby to miało sens, także menu powinno być generowane automatycznie:

<ul>
<?PHP
$conn = mysql_connect('localhost', 'root', 'krasnal');
mysql_select_db('moja');

$query = 'SELECT id_strony, menu FROM strony;';
$wynik = mysql_query($query);

while($rekord = mysql_fetch_assoc($wynik)) {
    echo '<li><a href="/php/artykuly.html?id_strony = $rekord[$id_strony]">' . $rekord['menu'] . "</a></li>\n";
}
?>
</ul>

A tak będzie wyglądać kod PHP:

<?PHP
if (isset($_GET['id_strony']))
{
    @$id_strony = $_GET['id_strony'];
}
else
{
    $id_strony = 1; // jeśli nie wysłano takiej zmiennej - wczytaj index
}

$query = 'SELECT tresc FROM strony where id_strony='.$id_strony.';';
$wynik = mysql_query($query);
$rekord = mysql_fetch_assoc($wynik);
echo '<p>'.$rekord['tresc'].'</p>';
mysql_close($conn);

I to by było na tyle. Oczywiście jest to bardzo prymitywny kod. Jak może zauważyłeś brakuje też panelu administracyjnego, w którym można by dodawać nowe treści. Jednak pokazuje zasadę działania includowania treści z bazy danych. Na podstawie tego można juz całkiem sporo zbudować. Życzę miłego eksperymentowania :P.

Uwaga: Nie przypadkiem użyłem 'id_strony' zamiast 'id'. Jest to zalecenie google [a każdy w google być chce, więc lepiej się stosować:P ]

Uwaga2: Kod pisałem dawno temu. Jego styl pokazuje raczej zasadę działania includowania - nie zasady dobrego kodowania 🙂

Komentarze (0) Trackbacks (0)

Brak komentarzy.


Leave a comment

 

Brak trackbacków.