Jak napisać proste forum w PHP/HTML

Nasz skrypt będzie zbudowany z następujących plików:

  • index.php
  • forum.php
  • login.html
  • login.php
  • register.php
  • rejestracja.html
  • topic.php

a także plik DB.sql.zip który zawiera strukture:

— phpMyAdmin SQL Dump
— version 3.3.7deb7
— http://www.phpmyadmin.net

— Host: localhost
— Czas wygenerowania: 15 Kwi 2014, 09:58
— Wersja serwera: 5.1.73
— Wersja PHP: 5.3.3-7+squeeze19

SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”;


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;


— Baza danych: `arsanael_sexifocia`


— ——————————————————–


— Struktura tabeli dla  `TAB_FORUM_TOPICS`


CREATE TABLE IF NOT EXISTS `TAB_FORUM_TOPICS` (
  `ID` int(32) NOT NULL,
  `NAZWA_TEMATU` varchar(32) NOT NULL,
  `TRESC` text NOT NULL,
  `AUTOR_ID` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


— Zrzut danych tabeli `TAB_FORUM_TOPICS`


INSERT INTO `TAB_FORUM_TOPICS` (`ID`, `NAZWA_TEMATU`, `TRESC`, `AUTOR_ID`) VALUES
(0, 'temat’, 'tresc’, 0),
(1, 'Krasnale’, 'Czy znacie krasnale?’, 0);

— ——————————————————–


— Struktura tabeli dla  `TAB_ODP`


CREATE TABLE IF NOT EXISTS `TAB_ODP` (
  `ID` int(32) NOT NULL,
  `TRESC` text NOT NULL,
  `ID_TEMATU` int(32) NOT NULL,
  `ID_AUTORA` int(32) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


— Zrzut danych tabeli `TAB_ODP`


INSERT INTO `TAB_ODP` (`ID`, `TRESC`, `ID_TEMATU`, `ID_AUTORA`) VALUES
(0, 'krasnale nie sa fajne’, 1, 0),
(1, 'KRASNALE NIE SA FAJNE’, 1, 0),
(2, 'TESTOWY KOMENTARZ’, 0, 0),
(3, 'ASDASD’, 1, 0);

— ——————————————————–


— Struktura tabeli dla  `TAB_USER`


CREATE TABLE IF NOT EXISTS `TAB_USER` (
  `ID` int(32) NOT NULL,
  `NAZWA` varchar(32) NOT NULL,
  `HASLO` varchar(32) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


— Zrzut danych tabeli `TAB_USER`


INSERT INTO `TAB_USER` (`ID`, `NAZWA`, `HASLO`) VALUES
(0, 'PAWEL’, 'werty’),
(1, 'MILOSZ’, 'QWERTY’),
(2, 'stefan’, 'qaz’);

index.php:

<a href=”rejestracja.html”> Rejestracja </a>
<br/>
<a href=”login.html”> logowanie </a>
<br/>
<a href=”forum.php”> Forum</a>

<?php
session_start();

if ( isset($_SESSION[’log’]) )
{
// nawiazujemy polaczenie
$connection = @mysql_connect(’localhost’, 'nazwa_bazy’, 'haslo1′)
// w przypadku niepowodznie wyświetlamy komunikat
or die(’Brak połączenia z serwerem MySQL.<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
// nawiązujemy połączenie z bazą danych
$db = @mysql_select_db(’user_db’, $connection)
// w przypadku niepowodzenia wyświetlamy komunikat
or die(’Nie mogę połączyć się z bazą danych<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
// zamykamy połączenie
//mysql_close($connection);

$id = $_SESSION[’log’];

$query = „SELECT * FROM TAB_USER WHERE ID=’$id'”;
$wynik = mysql_fetch_row( mysql_query( $query ) );


print '<br/><br/><br/>zalogowany jako:’.$wynik[1];
}
?>


 forum.php

<?php
session_start();
// nawiazujemy polaczenie
$connection = @mysql_connect(’localhost’, 'arsanael_arsik’, 'tymczasowe1′)
// w przypadku niepowodznie wyświetlamy komunikat
or die(’Brak połączenia z serwerem MySQL.<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
// nawiązujemy połączenie z bazą danych
$db = @mysql_select_db(’arsanael_sexifocia’, $connection)
// w przypadku niepowodzenia wyświetlamy komunikat
or die(’Nie mogę połączyć się z bazą danych<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
// zamykamy połączenie
//mysql_close($connection);


if ( !isset( $_GET[’step’] ) )
{

if ( isset($_SESSION[’log’]) )
{
print '<center><font size=”5″><a href=”forum.php?step=adnewtopic”> Nowy Temat </a></font> </center>’;
}

print '<br/><br/><br/><center><font size=”5″> Lista tematów </font> </center>’;

$zapytanie = mysql_query(„SELECT * FROM TAB_FORUM_TOPICS”); //wybiera tabelę i pobiera z niej wszystkie dane

print '<table width=”100%” border=”1″>
<tr><td> <b>nazwa tematu</b> </td> <td> <b>autor</b> </td></tr>’;
if ($zapytanie) {  //jeśli zapytanie można wykonać to…
    while ($shit = mysql_fetch_array($zapytanie)) { //robi pętlę i przypisuje wszystkie dane do zmiennej
    $AUTOR_ID = $shit[’AUTOR_ID’];

    $query = „SELECT NAZWA FROM TAB_USER WHERE ID=’$AUTOR_ID'”;
    $wynik = mysql_fetch_row( mysql_query( $query ) );
    
    echo '<tr>
    <td><a href=”topic.php?t=’.$shit[’ID’].'”>’.$shit[’NAZWA_TEMATU’].'</a></td> <td>’.$wynik[0].'</td>
    </tr>’;
    }
    }
print '</table>’;

}
else
{

if ( isset( $_GET[’step’]) && $_GET[’step’]==’adnewtopic’)
{
print 'Nowy temat’;

print '<form action=”forum.php?step=addtopic” method=”POST”>

Temat: <input type=”text” name=”temat” />
<br/>
Treść: <input type=”text” name=”tresc” />
<br/>

<input type=”submit” value=”wyslij” />

</form>’;
}

if ( isset( $_GET[’step’]) && $_GET[’step’]==’addtopic’)
{
    if (isset($_POST[’temat’]) && isset( $_POST[’tresc’] ) )
    {
        $id = mysql_num_rows(mysql_query(„SELECT * FROM TAB_FORUM_TOPICS”));
        
        $nazwa = $_POST[’temat’];
        $tresc = $_POST[’tresc’];
        $autor_id = $_SESSION[’log’];
        
        $query = „INSERT INTO TAB_FORUM_TOPICS (ID, NAZWA_TEMATU, TRESC, AUTOR_ID) VALUES (’$id’,’$nazwa’,’$tresc’,’$autor_id’)”;
        mysql_query( $query ) or die(’Błąd: ’.mysql_error());
        
        print '<center><font size=”5″> Twoj temat został poprawnie dodany <a href=”forum.php”> wroc </a> </font></center>’;
        }

}

}


?>


  login.html

Formularz logowania

<form action=”login.php” method=”POST”>

Nazwa uzytkownika: <input type=”text” name=”nazwa_uzytkownika” />
<br/>
Hasło: <input type=”password” name=”haselko” />
<br/>

<input type=”submit” value=”zaloguj” />

</form>


 login.php

<?php
session_start();
// nawiazujemy polaczenie
$connection = @mysql_connect(’localhost’, 'arsanael_arsik’, 'tymczasowe1′)
// w przypadku niepowodznie wyświetlamy komunikat
or die(’Brak połączenia z serwerem MySQL.<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
echo „Udało się połączyć z serwerem!<br />”;
// nawiązujemy połączenie z bazą danych
$db = @mysql_select_db(’arsanael_sexifocia’, $connection)
// w przypadku niepowodzenia wyświetlamy komunikat
or die(’Nie mogę połączyć się z bazą danych<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
echo „Udało się połączyć z bazą dancych!”;
// zamykamy połączenie
//mysql_close($connection);


print '<br/>’;

if ( isset($_POST[’nazwa_uzytkownika’]) && isset($_POST[’haselko’]) )
{
    //print '<font size=”5″> Rejestracja zakonczona sukcesem!</font>’;
    //wyciaganie informacji o danym uzytkowniku
    $nazwa = $_POST[’nazwa_uzytkownika’];
    $haslo = $_POST[’haselko’];
    $query = „SELECT * FROM TAB_USER WHERE NAZWA=’$nazwa’ AND HASLO=’$haslo'”;
    $wynik = mysql_fetch_row( mysql_query( $query ) );
    
    print '<font size=”5″> Pomyslnie zalogowano jako ’.$wynik[1].’!</font>
    <br/><a href=”index.php”> Wróć </a>’;
    
    $_SESSION[’log’] = $wynik[0];
    
    //$query = „INSERT INTO TAB_USER (ID, NAZWA, HASLO) VALUES (’$id’,’$nazwa’,’$haslo’)”;
    //mysql_query( $query ) or die(’Błąd: ’.mysql_error());
}
else
{
    print 'nie wprowadzono danych! <a href=”index.html> Wróć </a>’;
}

?>


register.php

<?php
// nawiazujemy polaczenie
$connection = @mysql_connect(’localhost’, 'arsanael_arsik’, 'tymczasowe1′)
// w przypadku niepowodznie wyświetlamy komunikat
or die(’Brak połączenia z serwerem MySQL.<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
echo „Udało się połączyć z serwerem!<br />”;
// nawiązujemy połączenie z bazą danych
$db = @mysql_select_db(’arsanael_sexifocia’, $connection)
// w przypadku niepowodzenia wyświetlamy komunikat
or die(’Nie mogę połączyć się z bazą danych<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
echo „Udało się połączyć z bazą dancych!”;
// zamykamy połączenie
//mysql_close($connection);


print '<br/>’;

if ( isset($_POST[’nazwa_uzytkownika’]) && isset($_POST[’haselko’]) )
{
    print '<font size=”5″> Rejestracja zakonczona sukcesem!</font>’;
    //obliczanie id
    $id = mysql_num_rows(mysql_query(„SELECT * FROM TAB_USER”));
    $nazwa = $_POST[’nazwa_uzytkownika’];
    $haslo = $_POST[’haselko’];
    
    $query = „INSERT INTO TAB_USER (ID, NAZWA, HASLO) VALUES (’$id’,’$nazwa’,’$haslo’)”;
    mysql_query( $query ) or die(’Błąd: ’.mysql_error());
}
else
{
    print 'nie wprowadzono danych’;
}


?>


rejestracja.html

Formularz rejestracyjny

<form action=”register.php” method=”POST”>

Nazwa uzytkownika: <input type=”text” name=”nazwa_uzytkownika” />
<br/>
Hasło: <input type=”password” name=”haselko” />
<br/>

<input type=”submit” value=”Zarejestruj” />

</form>


topic.php

<?php
session_start();

// nawiazujemy polaczenie
$connection = @mysql_connect(’localhost’, 'arsanael_arsik’, 'tymczasowe1′)
// w przypadku niepowodznie wyświetlamy komunikat
or die(’Brak połączenia z serwerem MySQL.<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
// nawiązujemy połączenie z bazą danych
$db = @mysql_select_db(’arsanael_sexifocia’, $connection)
// w przypadku niepowodzenia wyświetlamy komunikat
or die(’Nie mogę połączyć się z bazą danych<br />Błąd: ’.mysql_error());
// połączenie nawiązane 😉
// zamykamy połączenie
//mysql_close($connection);


if (!isset($_GET[’t’]))
{
    
}
else
{
print '<a href=”index.php”> Wroc </a><br/>’;
if ( isset($_SESSION[’log’]) )
{
$topic_id = $_GET[’t’];
print '<a href=”topic.php?t=’.$topic_id .’&step=answer”>odpowiedz w tym temacie</a>’;
}
    $topic_id = $_GET[’t’];
    
    //odczyt
    $query = „SELECT * FROM TAB_FORUM_TOPICS WHERE ID=’$topic_id'”;
    $wynik = mysql_fetch_row( mysql_query( $query ) );
    
    $nazwa_usera = $wynik[3];
    
    $q2 = „SELECT NAZWA FROM TAB_USER WHERE ID=’$nazwa_usera'”;
    $result = mysql_fetch_row( mysql_query( $q2 ) );
    print '<table width=”40%” align=”center” border=”1″> <tr> <td> <b> Temat: ’.$wynik[1].'</b> </td></tr> <tr> <td>’.$wynik[2].’ <br/> Autor: ’.$result[0].'</td> </tr> </table>’;

    
    //odczyt odpowiedzi
    $q1 = MYSQL_QUERY(„SELECT * FROM TAB_ODP WHERE ID_TEMATU=’$topic_id'”);
    
    if ($q1) {  //jeśli zapytanie można wykonać to…
    while ($shit = mysql_fetch_array($q1))
    { //robi pętlę i przypisuje wszystkie dane do zmiennej
    $AUTOR_ID = $shit[’ID_AUTORA’];

    $query = „SELECT NAZWA FROM TAB_USER WHERE ID=’$AUTOR_ID'”;
    $wynik = mysql_fetch_row( mysql_query( $query ) );
    
    echo '<table width=”40%” align=”center”><tr>
    <td WIDTH=”80%”>’.$shit[’TRESC’].'</td> <td>’.$wynik[0].'</td>
    </tr></table>’;
    }
    }
    
    
    
    $nazwa_u = $w1[3];//ODPOWIADAJACY NAZWA
    
    $q10 = „SELECT NAZWA FROM TAB_USER WHERE ID=’$nazwa_u'”;
    $r10 = mysql_fetch_row( mysql_query( $q10 ) );
    
    
    
    if ($_GET[’step’] == 'answer’)
    {
    $topic_id = $_GET[’t’];
    print ’
    Formularz odpowiedzi

    <form action=”topic.php?t=’.$topic_id .’&step=send” method=”POST”>

Twoja odpowiedz: <input type=”text” name=”odpowiedz” />
<br/>

<input type=”submit” value=”wyslij” />

</form>’;
    }
    
    if ($_GET[’step’] == 'send’)
    {
    //wysylanie odpowiedzi
    
    //dane
    $id = mysql_num_rows(mysql_query(„SELECT * FROM TAB_ODP”));;
    $tresc = $_POST[’odpowiedz’];
    $id_tematu=$_GET[’t’];
    $id_autora = $_SESSION[’log’];
    
    $query = „INSERT INTO TAB_ODP (ID, TRESC, ID_TEMATU, ID_AUTORA) VALUES (’$id’,’$tresc’,’$id_tematu’,’$id_autora’)”;
    mysql_query( $query ) or die(’Błąd: ’.mysql_error());
    
    PRINT 'ODPOWIEDZ ZOSTALA DODANA’;
    }
    
    print '<a href=”index.php”> Wroc </a>’;
    }


?>

Oceń

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

NAJNOWSZE

dsa

Back to top