Kliknite tukaj, da si ogledate profil, kot ga vidijo drugi

Zelo enostaven PHP forum

Delite vsebino na Facebooku
Delite vsebino na Twitterju
  V tej lekciji boste spoznali, kako ustvariti zelo enostaven PHP forum, preko katerega lahko spoznate osnovne PHP ter kako se pravilno povezati na MySql bazo.
 
 
1
 
 
Najprej ustvarimo MySql bazo, v katero bomo shranjevali naslednje podatke:

id - int
user - text
message - text
date - datetime


Več o tem, kako se ustvari baza, si lahko preberete v lekciji:

 
 
 
2
 
 
Sedaj bomo ustvarili obrazec form, preko katerega bomo pošiljali sporočila.

Spodnjo kodo je potrebno vriniti med znački <head> in </head>.

<form method="get" action="forum.php">
<p>User:
  <label for="user"></label>
  <input type="text" name="user" id="user" />
  <br />
</p>
<p>Message: <br />
  <label for="message"></label>
  <textarea name="message" id="message" cols="45" rows="5"></textarea>
</p>
<p>
  <input type="submit" name="submit" id="submit" value="Post message" />
</p>
</form>


 
 
3
 
 
Dobiti bi morali rezultat, kot je prikazan na sliki.

 
 
4
 
 
Sedaj se bomo povezali na MySql bazo.

Vstavite spodnjo kodo čisto na začetek dokumenta:

<?
$mysqli = new mysqli("localhost", "root", "", "my_db");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
?>


Pri povezavi na bazo morate v funkciji mysqli pravilno nastaviti ime strežnika, uporabniško ime, geslo in ime vaše baze.

Več o povezovanju PHP na MySql bazo si lahko preberete v vodiču:



 
 
 
 
 
5
 
 
Po uspešni povezavi na MySql bazo bomo sedaj preverili, ali je bilo preko obrazca poslano kakšno sporočilo.

V tem primeru bomo dobljene podatke prepisali v bazo.

if (isset($_GET['message'])) {
   
    $user=$mysqli->real_escape_string($_GET['user']);
    $message=$mysqli->real_escape_string($_GET['message']);
    $date=date('Y-m-d H:i:s');
   
    $sql="INSERT INTO forum(id, user, message, date) VALUES(0,'$user','$message','$date')";
    $mysqli->query($sql);
}


 
 
6
 
 
Sedaj nam samo še ostane, da s pomočjo SQL prikažemo vsa sporočila, ki se nahajajo v bazi.

Spodnjo kodo je potrebno vriniti takoj za značko  <body>.

<?
$sql = "SELECT * FROM forum";
$result = $mysqli->query($sql);

while($row = $result->fetch_assoc()) {
  echo $row['user'].',  '.$row['date'].' <br />';
  echo $row['message'].'<br />';
  echo '------------------------ <br />';
}
?>


Če želite spoznati več o SQL stavkih, psi oglejte:


 
 
7
 
 
Tako. Vaš enostavni PHP forum je zaključen in pripravljen, da na njega pišete sporočila.

Čestitam.

Spodaj se nahaja tu celotna koda, kar bo olajšalo kopiranje v vaš program.

<?
$mysqli = new mysqli("localhost", "root", "", "my_db");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
   
if (isset($_GET['message'])) {
   
    $user=$mysqli->real_escape_string($_GET['user']);
    $message=$mysqli->real_escape_string($_GET['message']);
    $date=date('Y-m-d H:i:s');
   
    $sql="INSERT INTO forum(id, user, message, date) VALUES(0,'$user','$message','$date')";
    $mysqli->query($sql);
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP and MySql</title>
</head>

<body>
<h2>My First Forum</h2>

<?
$sql = "SELECT * FROM forum";
$result = $mysqli->query($sql);

while($row = $result->fetch_assoc()) {
  echo $row['user'].',  '.$row['date'].' <br />';
  echo $row['message'].'<br />';
  echo '------------------------ <br />';
}
?>

<form method="get" action="forum.php">
<p>User:
  <label for="user"></label>
  <input type="text" name="user" id="user" />
  <br />
</p>
<p>Message: <br />
  <label for="message"></label>
  <textarea name="message" id="message" cols="45" rows="5"></textarea>
</p>
<p>
  <input type="submit" name="submit" id="submit" value="Post message" />
</p>
</form>

</body>
</html>

 
 
Komentiraj
 
 
 
 
 
9.6.2013, 19:23
Zakaj pa je celotna koda v angleščini (poimenovanja stolpcev v tabeli, HTML-značk, izpis napak ...)? In zakaj ni uporabljen HTML5? :-)
 
 
 
 
10.6.2013, 14:02
V bistvu je vodič preveden iz angleške lekcije http://www.dreevoo.com/content.php?id=14...., pa sem bil malo len in se mi ni dalo ponovno delati slike.

Kaj pa si imel v mislih od HTML5, da bi lahko uporabil?
 
 
 
 
10.6.2013, 21:44
Začetek html dokumenta ni v HTML5

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">


changed: podtalje (10.6.2013, 22:42)
 
 
 
 
10.6.2013, 22:55
To je v bistvu XHTML 1.0 Transitional

Za HTML5 bi bilo potem potem pravilno:
<!DOCTYPE html>

Je pa res, da se še nisem kaj dosti poglobil v to oz. me predvsem zanima, kakšen vpliv ima doctype v praksi na prikaz same strani.
 
 
 
 
22.7.2015, 21:35
Kakšna je koda, da $_GET podatke shrani v bazo? Malo sem preoblikoval to kodo, pa se nič ne zgodi.
 
 
 
 
22.7.2015, 21:36
V forumu dela, ko sem pa uporabil za nekaj drugega in sem dodal več polj in jih preimenoval pa ni delalo.
 
 
 
 
21.11.2015, 16:08
Verjetno bi bilo dobro dodati tudi htmlspecialchars funkcijo, zato da nebi prihajalo do javascript napadov z naprimer alert("obvestilo") ali pa še hujših.
Prav tako se ponavadi za vnose v bazo uporablja metoda POST in ne GET.
filips, $user=$mysqli->real_escape_string($_GET['user']); ta vrstica iz URL naslova prebere podan parameter, v tem primeru za user, v bazo pa ga vstavi stavek INSERT INTO.
 
Prijava in registracija
 
 
 
Zmaga.com ponuja brezplačno in razumljivo učenje računalniških programov, vas na enkraten način spozna z različnimi svetovnimi jeziki, s podrobno obrazloženimi recepti prikaže čare kulinarike in vam prežene strahove pred domačimi opravili.
 
 
Poleg tega lahko prebirate poučne članke, ki so namenjene širjenju naše splošne razgledanosti ter preverite svoje znanje z priljubljenim in enostavnim sistemom za preverjanje znanja. Če med vsebinami, ki se dodajajo vsak dan, ne najdete želenega znanja, je za vaša vprašanja na voljo dobro obiskan forum, kjer lahko tudi aktivno sodelujete. V primeru, da bi radi svoje praktično znanje delili z ostalimi, pa to lahko storite preko preprostega vmesnika za dodajanje vsebin. Zmagajte z znanjem z Zmaga.com!