Includowanie - baza danych Drukuj
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Patryk yarpo Jar   
sobota, 26 września 2009 12:39

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="/component/content/?id_strony=1">home</a></li>
  <li><a href="/component/content/?id_strony=2">o mnie</a></li>
  <li><a href="/component/content/?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="/component/content/?id_strony=%27.%24rekord%5B%27id_strony%27%5D.%27">'
        .$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 :)