2. Pobieranie informacji z BD forum (wybrane tematy):
To już na prawdę nic trudnego
Pierwsze co musimy zrobić to połączyć się z bazą danych naszego forum:
Kod php:
function polaczenie_db_forum()
{
@$db=new mysqli('localhost','UŻYTKOWNIK BAZY','HASŁO','NAZWA BAZY');
if(mysqli_connect_errno())
{
echo "Błąd: Połączenie z bazą danych nie powiodło się. Spróbuj ponownie później.";
}
return $db;
}
Jedyne co musimy tutaj zrobić to podać swoje dane w funkcji mysqli() - najpierw nazwa hosta (jeśli jest on inny niż localhost należy go zmienić), następnie nazwa użytkownika bazy danych, hasło do bazy danych oraz nazwę bazy
Teraz po wywołaniu funkcji polaczenie_db_forum() będziemy mieć dostęp do zawartości naszego forum
No to pobierzmy sobie z naszego forum 5 najnowszych tematów i ułóżmy je od najnowszego:
Kod php:
$db = polaczenie_db_forum();
$sql = "SELECT * FROM `thread` ORDER BY `thread`.`threadid` DESC LIMIT 0 , 5";
$wynik = $db->query($sql);
$i = 0;
$dane = $wynik->fetch_array();
$ilosc_rekordow = $wynik->num_rows;
$wynik_a = $db->query($sql);
while($dane = $wynik_a->fetch_array()){
$i++;
$data = date('d.m.Y H:i',$dane['dateline']);
$teraz = time();
$nowosc = $teraz - $dane['dateline'];
$nowosc = floor($nowosc/(24*60*60));
if($nowosc <= 7){
$new_img = "<img src=\"http://vbhelp.pl/images/new.png\" style=\"vertical-align:middle;\" /> ";
}
$temat = $dane['title'];
if(strlen($temat) >= 30){
$temat = substr($temat,0,25);
$temat = $temat."...";
}
print"
<table style=\"width:100%;\"><tr>
<td style=\"width:10%; text-align:center;\">".$i."</td>
<td style=\"width:60%;\">".$new_img."<a href=\"forum/showthread.php?t=".$dane['threadid']."\" target=\"_blank\"><b>".$temat."</b></a></td>
<td style=\"width:40%; text-align:right;\">".$data."</td>
</tr></table>
";
}
Jeśli chcemy pobierać informacje z konkretnego działu zapytanie powinno wyglądać tak:
Kod:
$sql = "SELECT * FROM `thread` WHERE `forumid` = IDFORUM ORDER BY `thread`.`threadid` DESC LIMIT 0 , 5";
Uwaga!!! Za IDFORUM wpisujemy id wybranego przez nas działu
---------------------------------------
Nie będę wiersz po wierszu opisywał co dany skrypt robi, ale tak z grubsza:
1. Łączy się z bazą danych poprzez wywołanie funkcji którą omówiliśmy wcześniej.
2. Odpowiedź z bazy danych przekształca na tablicę.
3. Określa czy dany temat jest starszy niż 7 dni, jeśli nie to przy temacie pojawi się ikonka NEW.
4. Wyświetla tematy (pętla WHILE()) wypisując:
- numer wiersza
- temat + tworzy link do niego + ewentualna ikonka NEW
- data dodania tematu
Cały skrypt wygląda następująco:
Kod php:
<?php
header('Content-type:text/html; charset=ISO-8859-2');
function polaczenie_db_forum()
{
@$db=new mysqli('localhost','kkdesign_user','534534','kkdesign_lg');
if(mysqli_connect_errno())
{
echo "Błąd: Połączenie z bazą danych nie powiodło się. Spróbuj ponownie później.";
}
return $db;
}
$db = polaczenie_db_forum();
$sql = "SELECT * FROM `thread` ORDER BY `thread`.`threadid` DESC LIMIT 0 , 5";
$wynik = $db->query($sql);
$i = 0;
$dane = $wynik->fetch_array();
$ilosc_rekordow = $wynik->num_rows;
$wynik_a = $db->query($sql);
while($dane = $wynik_a->fetch_array()){
$i++;
$data = date('d.m.Y H:i',$dane['dateline']);
$teraz = time();
$nowosc = $teraz - $dane['dateline'];
$nowosc = floor($nowosc/(24*60*60));
if($nowosc <= 7){
$new_img = "<img src=\"http://vbhelp.pl/images/new.png\" style=\"vertical-align:middle;\" /> ";
}
$temat = $dane['title'];
if(strlen($temat) >= 30){
$temat = substr($temat,0,25);
$temat = $temat."...";
}
print"
<div class=\"art_pad\">
<table style=\"width:100%;\"><tr>
<td style=\"width:10%; text-align:center;\">".$i."</td>
<td style=\"width:60%;\">".$new_img."<a href=\"forum/showthread.php?t=".$dane['threadid']."\" target=\"_blank\"><b>".$temat."</b></a></td>
<td style=\"width:40%; text-align:right;\">".$data."</td>
</tr></table>
</div>
";
if($i < $ilosc_rekordow){
print "<hr />";
}
}
?>
Dodatkowo tylko na początku skryptu wysyłamy nagłówek, w którym określamy kodowanie znaków
W załączniku mamy ikonkę NEW (umieszczamy ją w folderze IMAGES)
KONIEC
Kolejne części już niebawem Pozdrawiam