Forum graficzne Burning-Brushes.pl

Tutoriale graficzne i materialy => Pozostałe tutoriale => Tutoriale PHP/MySQL => Wątek zaczęty przez: Abik w Styczeń 29, 2011, 15:25:21

Tytuł: System artykułów
Wiadomość wysłana przez: Abik w Styczeń 29, 2011, 15:25:21
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_tagsmysql_real_escape_string(HTMLSpecialChars($_POST['nick']))));
    
$tresc trim(strip_tagsmysql_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) ? 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_tagsmysql_real_escape_string(HTMLSpecialChars($_POST['nick']))));
        
$tresc trim(strip_tagsmysql_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 (http://rafal-brzezinski.pl/wp-content/uploads/2009/08/artykuly.rar). Enjoy ;)

_____________________________________

Autor poradnika: Fafu http://rafal-brzezinski.pl/
Tytuł: Odp: System artykułów
Wiadomość wysłana przez: Sympatyk w Styczeń 30, 2011, 16:42:55
pomysł z powielaniem kody z połączeniem się z SQL nie podoba mi się, lepiej już includować :)