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ń
{codecitation}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');{/codecitation}
Jeśli udało cię się już stworzyć bazę danych i odpowiednią tabelę, zapraszam dalej. Teraz stworzymy stronę index.php:
{codecitation class='brush: html'}<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>{/codecitation}
Menu będzie wyglądać tak:
{codecitation class='brush: html'}<ul>
<li><a href="index.php?id_strony=1">home</a></li>
<li><a href="index.php?id_strony=2">o mnie</a></li>
<li><a href="index.php?id_strony=3">konakt</a></li>
</ul>{/codecitation}
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:
{codecitation class='brush: html'}<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="index.php?id_strony='.$rekord['id_strony'].'">'
.$rekord['menu']."</a></li>\n";
?>
</ul>{/codecitation}
A tak będzie wyglądać kod PHP:
{codecitation class='brush: 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);
?>{/codecitation}
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 :) Read more
|