Ten artykuł jest archiwalny, korzystasz z niego na własną odpowiedzialność.

System artykułów

W tym tutorialu opiszę jak zrobić system artykułów z ocenianiem, kategoriami i komentarzami.

Tradycyjnie zaczniemy od stworzenia tabeli - będą to articles, articles_categories i articles_comments.

CREATE TABLE `articles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_cat` int(11) NOT NULL,
  `tytul` text NOT NULL,
  `tresc` text NOT NULL,
  `opis` text NOT NULL,
  `data` int(11) NOT NULL,
  `suma` int(11) NOT NULL,
  `ocen` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM ;
CREATE TABLE `articles_categories` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `tytul` text NOT NULL,
  `opis` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM ;
CREATE TABLE `articles_comments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_art` int(11) NOT NULL,
  `nick` text NOT NULL,
  `tresc` text NOT NULL,
  `data` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM ; 

Jak już stworzyliśmy tabelki to możemy przystąpić do pisania... ;) Wszystko jest wytłumaczone w kodzie w komentarzach więc nie powinno być problemu :)

index.php

<?php
// rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
ob_start();
// połączenie z mysql
mysql_connect('localhost', 'root', '')
    or die('Nieudane polaczenie z baza danych...');
// wybór bazy danych
mysql_select_db('test')
    or die('Nie udalo sie wybrac bazy danych...');
// nagłówek
echo '<h2>Kategorie artykułów</h2>';
// tworzymy zapytanie na wszystkie kategorie
$result = mysql_query("SELECT * FROM articles_categories ORDER BY id ASC");
// i je wyświetlamy
while($row = mysql_fetch_array($result))
{
    echo '<a href="cat.php?id='.$row['id'].'"><b>'.stripslashes($row['tytul']).'</b></a><br />';
    echo stripslashes($row['opis']).'<br /><br />';
}
// rozłączenie z bazą danych
mysql_close();
// koniec buforowania
ob_end_flush();
?> 

cat.php

<?php
// rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
ob_start();
// połączenie z mysql
mysql_connect('localhost', 'root', '')
    or die('Nieudane polaczenie z baza danych...');
// wybór bazy danych
mysql_select_db('test')
    or die('Nie udalo sie wybrac bazy danych...');
// przerabiamy dane z GETa na liczbę (zabezpieczenie)
$id = (int)$_GET['id'];
 
// tworzymy zapytanie na kategorię, żeby wydobyć z niej nazwę
$result = mysql_query("SELECT * FROM articles_categories WHERE id='$id'");
// przerabiamy na tablicę
$row = mysql_fetch_array($result);
// i wyświetlamy nagłówek
echo '<h2>'.stripslashes($row['tytul']).'</h2>';
// tworzymy zapytanie na artykuły z tej kategorii
$result = mysql_query("SELECT * FROM articles WHERE id_cat='$id' ORDER BY tytul ASC");
// i je wyświetlamy
while($row = mysql_fetch_array($result))
{
    echo '<a href="art.php?id='.$row['id'].'"><b>'.stripslashes($row['tytul']).'</b></a> ('.date("d.m.Y, H:i", $row['data']).')<br />';
    echo stripslashes($row['opis']).'<br /><br />';
}
// rozłączenie z bazą danych
mysql_close();
// koniec buforowania
ob_end_flush();
?> 

art.php

<?php
// rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
ob_start();
// połączenie z mysql
mysql_connect('localhost', 'root', '')
    or die('Nieudane polaczenie z baza danych...');
// wybór bazy danych
mysql_select_db('test')
    or die('Nie udalo sie wybrac bazy danych...');
// przerabiamy dane z GETa na liczbę (zabezpieczenie)
$id = (int)$_GET['id'];
// jeśli zostanie naciśnięty przycisk "Dodaj"
if(isset($_POST['ok']))
{
    // filtrujemy dane
    $nick = trim(strip_tags( mysql_real_escape_string(HTMLSpecialChars($_POST['nick']))));
    $tresc = trim(strip_tags( mysql_real_escape_string(HTMLSpecialChars($_POST['tresc']))));
    // pobieramy datę
    $data = time();
 
    // sprawdzamy czy zostały podane wszystkie dane
    if(empty($nick) || empty($tresc)) $komunikat = 'Wpisz wszystkie pola!';
    else
    {
        // tworzymy zapytanie
        $query = "INSERT INTO `articles_comments` (`id_art`, `nick`, `tresc`, `data`) VALUES ('$id', '$nick', '$tresc', '$data')";
 
        // jeśli zapytanie zostanie poprawnie wykonane to wyświetlamy komunikat
        if(mysql_query($query)) $komunikat = 'Pomyslnie dodano komentarz!';
    }
}
// jeśli zostanie naciśnięty przycisk "Oceń"
if(isset($_POST['ocenaok']))
{
    // zapisujemy ocenę do zmiennej jako liczbę
    $ocena = (int)$_POST['ocena'];
 
    // sprawdzamy czy artykuł był już oceniany przez tą osobę
    if(isset($_COOKIE['ocena'.$id])) $komunikat = 'Już oceniałes ten artykuł!';
    else
    {
        // wysyłamy ciasteczko informujące o ocenieniu
        setcookie('ocena'.$id, 'oceniono',time()+2592000);
 
        // tworzymy zapytanie
        $query = "UPDATE articles SET suma=suma+$ocena, ocen=ocen+1 WHERE id=$id";
 
        // jeśli zapytanie zostanie poprawnie wykonane to wyświetlamy komunikat
        if(mysql_query($query)) $komunikat = 'Pomyslnie oceniono artykuł!';
    }
}
 
// tworzymy zapytanie na artykuł
$result = mysql_query("SELECT * FROM articles WHERE id='$id'");
// przerabiamy na tablicę
$row = mysql_fetch_array($result);
// wyświetlamy nagłówek
echo '<h2>'.stripslashes($row['tytul']).'</h2>';
// i tresc artykułu
echo '<p>'.stripslashes($row['tresc']).'</p>';
// wyświetlenie komunikatów
echo $komunikat;
// wyświetlanie oceny
echo '<h3>Ocena: ';
// jeśli nie było jeszcze żadnej oceny to wyświetla 0, w przeciwnym wypadku zaokrąglamy do 2 miejsc po przecinku dzielenie sumy/ilość ocen
echo ($row['ocen']==0) ? 0 : round(($row['suma']/$row['ocen']),2);
echo '</h3>';
// formularz do oceniania
echo 'Oceń ten artykuł:';
echo '<form action="" method="POST">
    <input type="radio" name="ocena" value="1">1
    <input type="radio" name="ocena" value="2">2
    <input type="radio" name="ocena" value="3">3
    <input type="radio" name="ocena" value="4">4
    <input type="radio" name="ocena" value="5">5
    <input type="radio" name="ocena" value="6">6
    <input type="submit" name="ocenaok" value="Oceń">
    </form>';
// nagłówek dla komentarzy
echo '<h3>Komentarze</h3>';
// tworzymy zapytanie na komentarze
$result = mysql_query("SELECT * FROM articles_comments WHERE id_art='$id' ORDER BY id DESC");
// jeśli są jakieś komentarze
if(mysql_num_rows($result)>0)
{
    // to je wyświetlamy
    while($row = mysql_fetch_array($result))
    {
        echo '<b>'.stripslashes($row['nick']).'</b> ('.date("d.m.Y, H:i", $row['data']).')<br />';
        // przy treści zamieniamy znaki nowej lini \n \rn \r na <br />
        echo str_replace(array("\r\n", "\r", "\n"), "<br />", stripslashes($row['tresc'])).'<br /><br />';
    }
}
else echo 'Narazie brak komentarzy. Twój może być pierwszy!';
// nagłówek dodawania komentarzy
echo '<h3>Dodaj komentarz</h3>';
// wyświetlamy prosty formularz
echo '<form action="" method="POST">
    Nick: <br />
    <input type="text" name="nick" style="width:400px;"><br />
    Tresc: <br />
    <textarea name="tresc" style="width:400px;height:200px;"></textarea><br />
    <input type="submit" name="ok" value="Dodaj">
    </form>';
// rozłączenie z bazą danych
mysql_close();
// koniec buforowania
ob_end_flush();
?> 

I największy plik: admin.php

<?php
// rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
ob_start();
// start sesji
session_start();
// połączenie z mysql
mysql_connect('localhost', 'root', '')
    or die('Nieudane polaczenie z baza danych...');
// wybór bazy danych
mysql_select_db('test')
    or die('Nie udalo sie wybrac bazy danych...');
// definiujemy hasło admina    
$adminpass = 'haslo';
// nagłówek
echo '<a href="admin.php"><h2>Panel admina</h2></a>';
// jeśli zostanie naciśnięty przycisk "Zaloguj"
if(isset($_POST['logowanie']))
{
    // sprawdzamy poprawność hasła
    if($_POST['pass']==$adminpass) $_SESSION['admin'] = true;
    else $komunikat = 'Hasło niepoprawne!';
}
// jeśli nie jesteśmy zalogowani na admina to wyświetlamy formularz
if(!$_SESSION['admin'])
{
    echo 'Niestety nie jestes zalogowany!<br />
    <form action="admin.php" method="POST">
    Hasło: <br />
    <input type="password" name="pass"><br />
    <input type="submit" name="logowanie" value="Zaloguj">
    </form>';
    echo $komunikat; // jeśli będzie błąd hasła to wyświetli komunikat
}
else
{
    // przy odpowieniej stronie wyświetlamy daną funkcję
    switch($_GET['page'])
    {
        // dodawanie artykułu
        case 'artykuly_dodaj':
            artykuly_dodaj();
        break;
 
        // edycja artykułu
        case 'artykuly_edytuj':
            artykuly_edytuj($_GET['id']);
        break;
 
        // usuwanie artykułu
        case 'artykuly_usun':
            artykuly_usun($_GET['id']);
        break;
 
        // wyświetlenie komentarzy
        case 'komentarze':
            komentarze($_GET['id']);
        break;
 
        // edycja komentarza
        case 'komentarze_edytuj':
            komentarze_edytuj($_GET['id']);
        break;
 
        // usuwanie komentarza
        case 'komentarze_usun':
            komentarze_usun($_GET['id']);
        break;
 
        // wyświetlenie kategorii
        case 'kategorie':
            kategorie();
        break;
 
        // dodawanie kategorii
        case 'kategorie_dodaj':
            kategorie_dodaj();
        break;
 
        // edycja kategorii
        case 'kategorie_edytuj':
            kategorie_edytuj($_GET['id']);
        break;
 
        // usuwanie kategorii
        case 'kategorie_usun':
            kategorie_usun($_GET['id']);
        break;
 
        // i domyślnie wyświetlamy liste artykułów
        default:
            artykuly();
    }
}
// LISTA ARTYKUŁÓW
function artykuly()
{
    // wyświetlamy napis
    echo '<b>Lista artykułów</b>';
    // wyświetlamy początek tabeli
    echo '<table border="1" style="width: 600px;">
        <tr>
            <th style="width:30px;">Lp.</th>
            <th>Tytul</th>
            <th>Data</th>
            <th>Kategoria</th>
            <th style="width:80px;">Akcje</th>
        </tr>';
 
    // tworzymy zapytanie na wszystkie kategorie
    $result = mysql_query("SELECT * FROM articles_categories ORDER BY id ASC");
    // i zapisujemy je do tablicy $kategorie
    while($row = mysql_fetch_array($result))
        $kategorie[$row['id']] = stripslashes($row['tytul']);
    // tworzymy zapytanie na wszystkie artykuły
    $result = mysql_query("SELECT * FROM articles ORDER BY id ASC");
    // i je wyświetlamy
    while($row = mysql_fetch_array($result))
    {
        echo '<tr><td>'.$row['id'].'</td><td>'.stripslashes($row['tytul']).'</td><td>'.date("d.m.Y, H:i", $row['data']).'</td><td>'.$kategorie[$row['id_cat']].'</td><td><a href="admin.php?page=artykuly_edytuj&id='.$row['id'].'">[E]</a> <a href="admin.php?page=artykuly_usun&id='.$row['id'].'">[U]</a> <a href="admin.php?page=komentarze&id='.$row['id'].'">[K]</a></td></tr>';
    }
    // wyświetlamy koniec tabeli
    echo '</table>';
 
    // wyświetlamy linki
    echo '<a href="admin.php?page=artykuly_dodaj">Dodaj nowy artykuł</a><br />';
    echo '<a href="admin.php?page=kategorie">Zarzadzaj kategoriami</a>';
}
// DODAWANIE ARTYKUŁU
function artykuly_dodaj()
{
    // jeśli zostanie naciśnięty przycisk "Dodaj"
    if(isset($_POST['ok']))
    {
        // filtrujemy dane aby zapytanie do mysql nam się nie psuło, tj. zamieniamy ` na \`
        $tytul = mysql_real_escape_string($_POST['tytul']);
        $opis = mysql_real_escape_string($_POST['opis']);
        $tresc = mysql_real_escape_string($_POST['tresc']);
        // pobieramy id kategorii
        $kategoria = $_POST['kategoria'];
        // pobieramy date
        $data = time();
 
        // tworzymy zapytanie
        $query = "INSERT INTO `articles` (`tytul`, `opis`, `tresc`, `id_cat`, `data`, `suma`, `ocen`) VALUES ('$tytul', '$opis', '$tresc', '$kategoria', '$data', '0', '0')";
 
        // jeśli zapytanie zostanie poprawnie wykonane to wyświetlamy komunikat
        if(mysql_query($query)) echo 'Pomyslnie dodano artykul! <a href="admin.php">wróć</a>';
        return 1; // zapobiegamy wyświetlania się formularza
    }
    // wyświetlamy napis
    echo '<b>Dodaj nowy artykuł</b>';
    // wyświetlamy prosty formularz
    echo '<form action="" method="POST">
    Tytuł: <br />
    <input type="text" name="tytul" style="width:400px;"><br />
    Opis: <br />
    <input type="text" name="opis" style="width:400px;"><br />
    Kategoria: <br />
    <select name="kategoria">';
    // wykonanie zapytania na kategorie artykułów i wyświetlenie ich w rozwijanym menu
    $result = mysql_query("SELECT * FROM articles_categories");
    while($row = mysql_fetch_array($result))
    {
        echo '<option value="'.$row['id'].'">'.stripslashes($row['tytul']).'</option>';
    }
    echo '</select><br />
    Tresć: <br />
    <textarea name="tresc" style="width:400px;height:200px;"></textarea><br />
    <input type="submit" name="ok" value="Dodaj">
    </form>';
}
// EDYCJA ARTYKUŁU
function artykuly_edytuj($id)
{
    // jeśli zostanie naciśnięty przycisk "Edytuj"
    if(isset($_POST['ok']))
    {
        // filtrujemy dane aby zapytanie do mysql nam się nie psuło, tj. zamieniamy ` na \`
        $tytul = mysql_real_escape_string($_POST['tytul']);
        $opis = mysql_real_escape_string($_POST['opis']);
        $tresc = mysql_real_escape_string($_POST['tresc']);
        // pobieramy id kategorii
        $kategoria = $_POST['kategoria'];
 
        // tworzymy zapytanie
        $query = "UPDATE `articles` SET tytul='$tytul', opis='$opis', tresc='$tresc', id_cat='$kategoria' WHERE id='$id'";
 
        // jeśli zapytanie zostanie poprawnie wykonane to wyświetlamy komunikat
        if(mysql_query($query)) echo 'Pomyslnie wyedytowano artykuł! <a href="admin.php">wróć</a>';
        return 1; // zapobiegamy wyświetlania się formularza
    }
    // wyświetlamy napis
    echo '<b>Edytuj artykuł</b>';
 
    // pobieramy dane z artykułu który będziemy edytować
    $result = mysql_query("SELECT * FROM articles WHERE id='$id'");
 
    // tutaj nie ma while ponieważ jest pobierany tylko jeden rekord
    $row = mysql_fetch_array($result); 
 
    // wyświetlamy prosty formularz z wypełnionymi danymi
    echo '<form action="" method="POST">
    Tytuł: <br />
    <input type="text" name="tytul" style="width:400px;" value="'.stripslashes($row['tytul']).'"><br />
    Opis: <br />
    <input type="text" name="opis" style="width:400px;" value="'.stripslashes($row['opis']).'"><br />
    Kategoria: <br />
    <select name="kategoria">';
    // wykonanie zapytania na kategorie artykułów i wyświetlenie ich w rozwijanym menu
    $result2 = mysql_query("SELECT * FROM articles_categories");
    while($row2 = mysql_fetch_array($result2))
    {
        echo '<option value="'.$row2['id'].'"';
        // zaznacza aktualna kategorie artykulu
        if($row2['id']==$row['id_cat']) echo ' selected';
        echo '>'.stripslashes($row2['tytul']).'</option>';
    }
    echo '</select><br />
    Tresć: <br />
    <textarea name="tresc" style="width:400px;height:200px;">'.stripslashes($row['tresc']).'</textarea><br />
    <input type="submit" name="ok" value="Edytuj">
    </form>';
}
// USUWANIE ARTYKUŁU
function artykuly_usun($id)
{
    // usuwanie artykulu
    $query = "DELETE FROM articles WHERE id = '$id'";
    // usuwanie komentarzy
    $query2 = "DELETE FROM articles_comments WHERE id_art = '$id'";
 
    // jeśli zapytania zostaną poprawnie wykonane to wyświetlamy komunikat
    if(mysql_query($query) && mysql_query($query2)) echo 'Pomyslnie usunięto newsa! <a href="admin.php">wróć</a>';
}
// KATEGORIE
function kategorie()
{
    // wyświetlamy napis
    echo '<b>Lista kategorii artykułów</b>';
    // wyświetlamy początek tabeli
    echo '<table border="1" style="width: 600px;">
        <tr>
            <th style="width:30px;">Lp.</th>
            <th>Tytul</th>
            <th style="width:60px;">Akcje</th>
        </tr>';
 
    // tworzymy zapytanie na wszystkie kategorie
    $result = mysql_query("SELECT * FROM articles_categories ORDER BY id ASC");
    // i je wyświetlamy
    while($row = mysql_fetch_array($result))
    {
        echo '<tr><td>'.$row['id'].'</td><td>'.stripslashes($row['tytul']).'</td><td><a href="admin.php?page=kategorie_edytuj&id='.$row['id'].'">[E]</a> <a href="admin.php?page=kategorie_usun&id='.$row['id'].'">[U]</a></td></tr>';
    }
    // wyświetlamy koniec tabeli
    echo '</table>';
 
    // wyświetlamy linki
    echo '<a href="admin.php?page=kategorie_dodaj">Dodaj nowa kategorie</a>';
}
// DODAWANIE KATEGORII
function kategorie_dodaj()
{
    // jeśli zostanie naciśnięty przycisk "Dodaj"
    if(isset($_POST['ok']))
    {
        // filtrujemy dane aby zapytanie do mysql nam się nie psuło, tj. zamieniamy ` na \`
        $tytul = mysql_real_escape_string($_POST['tytul']);
        $opis = mysql_real_escape_string($_POST['opis']);
 
        // tworzymy zapytanie
        $query = "INSERT INTO `articles_categories` (`tytul`, `opis`) VALUES ('$tytul', '$opis')";
 
        // jeśli zapytanie zostanie poprawnie wykonane to wyświetlamy komunikat
        if(mysql_query($query)) echo 'Pomyslnie dodano kategorie! <a href="admin.php?page=kategorie">wróć</a>';
        return 1; // zapobiegamy wyświetlania się formularza
    }
    // wyświetlamy napis
    echo '<b>Dodaj nowa kategorie</b>';
    // wyświetlamy prosty formularz
    echo '<form action="" method="POST">
    Tytuł: <br />
    <input type="text" name="tytul" style="width:400px;"><br />
    Opis: <br />
    <textarea name="opis" style="width:400px;height:200px;"></textarea><br />
    <input type="submit" name="ok" value="Dodaj">
    </form>';
}
// EDYCJA KATEGORII
function kategorie_edytuj($id)
{
    // jeśli zostanie naciśnięty przycisk "Edytuj"
    if(isset($_POST['ok']))
    {
        // filtrujemy dane aby zapytanie do mysql nam się nie psuło, tj. zamieniamy ` na \`
        $tytul = mysql_real_escape_string($_POST['tytul']);
        $opis = mysql_real_escape_string($_POST['opis']);
 
        // tworzymy zapytanie
        $query = "UPDATE `articles_categories` SET tytul='$tytul', opis='$opis' WHERE id='$id'";
 
        // jeśli zapytanie zostanie poprawnie wykonane to wyświetlamy komunikat
        if(mysql_query($query)) echo 'Pomyslnie wyedytowano kategorie! <a href="admin.php?page=kategorie">wróć</a>';
        return 1; // zapobiegamy wyświetlania się formularza
    }
    // wyświetlamy napis
    echo '<b>Edytuj kategorie</b>';
 
    // pobieramy dane z kategorii który będziemy edytować
    $result = mysql_query("SELECT * FROM articles_categories WHERE id='$id'");
 
    // tutaj nie ma while ponieważ jest pobierany tylko jeden rekord
    $row = mysql_fetch_array($result); 
 
    // wyświetlamy prosty formularz z wypełnionymi danymi
    echo '<form action="" method="POST">
    Tytuł: <br />
    <input type="text" name="tytul" style="width:400px;" value="'.stripslashes($row['tytul']).'"><br />
    Opis: <br />
    <textarea name="opis" style="width:400px;height:200px;">'.stripslashes($row['opis']).'</textarea><br />
    <input type="submit" name="ok" value="Edytuj">
    </form>';
}
// USUWANIE KATEGORII
function kategorie_usun($id)
{
    // pobieramy id artykułów należących do tej kategorii
    $result = mysql_query("SELECT id FROM articles WHERE id_cat='$id'");
    // i dodajemy te id do tablicy
    while($row = mysql_fetch_array($result))
        $artykuly[] = $row['id'];
 
    // jeśli znaleziono artykuły
    if(count($artykuly)>0)
    {
        // dodajemy ', ' między każdym id
        $artykuly = implode("', '", $artykuly);
        // usuwamy komentarze należące do tych artykułów
        $result2 = mysql_query("DELETE FROM articles_comments WHERE id_art IN('$artykuly')");
    }
    // usuwanie artykułów należących do tej kategorii
    $query = "DELETE FROM articles WHERE id_cat='$id'";
    // i usuwanie kategorii
    $query2 = "DELETE FROM articles_categories WHERE id='$id'";
 
    // jeśli zapytania zostaną poprawnie wykonane to wyświetlamy komunikat
    if(mysql_query($query) && mysql_query($query2)) echo 'Pomyslnie usunięto kategorie! <a href="admin.php">wróć</a>';
}
// KOMENTARZE
function komentarze($id)
{
    // wyświetlamy napis
    echo '<b>Lista komentarzy</b>';
    // wyświetlamy początek tabeli
    echo '<table border="1" style="width: 600px;">
        <tr>
            <th style="width:30px;">Lp.</th>
            <th>Nick</th>
            <th>Data</th>
            <th style="width:80px;">Akcje</th>
        </tr>';
 
    // tworzymy zapytanie na komentarze
    $result = mysql_query("SELECT * FROM articles_comments WHERE id_art='$id' ORDER BY id ASC");
    // i je wyświetlamy
    while($row = mysql_fetch_array($result))
    {
        echo '<tr><td>'.$row['id'].'</td><td>'.stripslashes($row['nick']).'</td><td>'.date("d.m.Y, H:i", $row['data']).'</td><td><a href="admin.php?page=komentarze_edytuj&id='.$row['id'].'">[E]</a> <a href="admin.php?page=komentarze_usun&id='.$row['id'].'">[U]</a></td></tr>';
    }
    // wyświetlamy koniec tabeli
    echo '</table>';
}
// EDYCJA KOMENTARZA
function komentarze_edytuj($id)
{
    // jeśli zostanie naciśnięty przycisk "Edytuj"
    if(isset($_POST['ok']))
    {
        // filtrujemy dane
        $nick = trim(strip_tags( mysql_real_escape_string(HTMLSpecialChars($_POST['nick']))));
        $tresc = trim(strip_tags( mysql_real_escape_string(HTMLSpecialChars($_POST['tresc']))));
 
        // tworzymy zapytanie
        $query = "UPDATE `articles_comments` SET nick='$nick', tresc='$tresc' WHERE id='$id'";
 
        // jeśli zapytanie zostanie poprawnie wykonane to wyświetlamy komunikat
        if(mysql_query($query)) echo 'Pomyslnie wyedytowano komentarz! <a href="javascript:history.go(-2)">wróć</a>';
        return 1; // zapobiegamy wyświetlania się formularza
    }
    // wyświetlamy napis
    echo '<b>Edytuj komentarz</b>';
 
    // pobieramy dane komentarza który będziemy edytować
    $result = mysql_query("SELECT * FROM articles_comments WHERE id='$id'");
 
    // tutaj nie ma while ponieważ jest pobierany tylko jeden rekord
    $row = mysql_fetch_array($result); 
 
    // wyświetlamy prosty formularz z wypełnionymi danymi
    echo '<form action="" method="POST">
    Nick: <br />
    <input type="text" name="nick" style="width:400px;" value="'.stripslashes($row['nick']).'"><br />
    Tresc: <br />
    <textarea name="tresc" style="width:400px;height:200px;">'.stripslashes($row['tresc']).'</textarea><br />
    <input type="submit" name="ok" value="Edytuj">
    </form>';
}
// USUWANIE KOMENTARZA
function komentarze_usun($id)
{
    // tworzenie zapytania
    $query = "DELETE FROM articles_comments WHERE id='$id'";
 
    // jeśli zapytanie zostanie poprawnie wykonane to wyświetlamy komunikat
    if(mysql_query($query)) echo 'Pomyslnie usunięto komentarz! <a href="javascript:history.go(-1)">wróć</a>';
}
// rozłączenie z bazą danych
mysql_close();
// koniec buforowania
ob_end_flush();
?> 

Całość można pobrać tutaj. Enjoy ;)