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

PHP - 4. del

Delite vsebino na Facebooku
Delite vsebino na Twitterju
  V tej lekciji vam bom pokazal, kako lahko izdelamo svoj lasten forum s pomočjo PHP in MySql kode.
 
 
1
 
 
Odpremo PhpMyAdmin in ustvarimo novo bazo z imenom forum.
 
 
2
 
 
Notri ustvarimo tabelo z imenom objave in ji določimo Number of fields: 5.

Torej, sedaj smo ustvarili podatkovno bazo, v kateri imamo tabelo in v to tabelo se bodo zapisovali vsi komentarji, ki jih bomo objavili.

Kliknemo Izvedi.
 
 
3
 
 
Odprla so se nam polja, v katere moramo vnesti imena, dolžine itd. Brez teh podatkov se objave ne bi mogle zapisati v tabelo. No, pa začnimo.

Podatke izpolnite tako kot imam jaz. Povezava od večje slike: KLIK

Zdaj vam bom malo bolj obrazložil vsa polja, ki smo jih vnesli:
  • id: je število objave
  • avtor: sem se shrani ime avtorja objave
  • objava: sem se shrani celotna objava, ki jo nekdo napiše
  • datumCas: sem se zapiše datum in čas objave
  • brisano: tukaj se zapišejo objave, ki so brisane in ki jih koda ne bi smela prikazati
Ko imate vse tako kot na sliki, kliknite Shrani.
 
 
4
 
 
Torej, sedaj ko imamo bazo in notri tabelo nam preostane samo še težji del - pisanje same kode.

Kot prvo si morate priskrbeti dober urejevevalnik kode (priporočam Notepad++, ki ga najdete tukaj).

Pa začnimo s kodo:

<?php
if (isset($_POST['tekst']))
{
$con = mysql_connect('localhost', 'root', 'geslo') OR die('Ne morem se povezati!');
mysql_select_db('forum') OR die('Ne morem izbrati baze!');

Mislim, da vam je koda jasna. Najprej se povežemo na server. Tam kjer piše localhost, root in geslo morate izpolniti s svojimi podatki, ki jih dobite od gostitelja, kjer gostujete MySql bazo. Recimo če gostujete pri db4free.net (kar vam tudi priporočam) namesto localhost napišete db4free.net, namestno root napišete uporbniško ime, ki ga uporabljate za prijavo, pod geslo pa napišite geslo, ki ga uporabljate ob prijavi.

Nato koda preveri, če so vnešeni podatki pravilni in če so, nadaljuje z izvajanjem kode, če pa so napačni pa vrne, da se ne more povezati (kar je vzrok, da ste vnesli napačne podatke) ali če napiše da ne more izbrati baze (kar pomeni, da ime baze ni pravilno).

 
 
 
 
 
5
 
 
Nadaljujmo s kodo. Spodnjo kodo prilepite pod sedanjo.

$objava = addslashes($_POST['tekst']);

$avtor = addslashes($_POST['avtor']);
$sql = "INSERT INTO objave VALUES('0', '$avtor', '$objava', NOW(), 0)";
mysql_query($sql,$con);
if (mysql_errno())
{
echo "Napaka.<br>";
} else
{
echo "Objava uspešno oddana.<br>";
}
}

Koda najprej pridobi besedilo, ki smo ga vnesli v textarea (ki je za sedaj še nismo ustvarili) in ga objavi v našo tabelo pod vrstico objava, pridobi pa tudi besedilo, ki smo ga vnesli v polje avtor in ga objavi v našo tabelo pod vrdtico avtor. :)

Če se med dodajanjem objave zgodi kakršnakoli napaka koda vrne napako, v nasprotnem primeru pa nas obvesti, da smo objavo uspešno oddali.

 
 
6
 
 
Sedaj pa sledi še zadnji del naše PHP kode, nato pa se bomo ukvarjali samo še z obrazcem in gumbom za prijavo.

$con = mysql_connect('localhost', 'root', 'root123') OR die('Ne morem se povezati!');
mysql_select_db('forum') OR die('Ne morem izbrati baze!');
$sql = "SELECT * FROM objave";
$result = mysql_query($sql,$con);

while($row = @mysql_fetch_assoc($result))
{
echo "Avtor: &nbsp;&nbsp;&nbsp;" . $row['avtor'] . " | " . $row['datumCas'] . "<br>";
echo $row['objava'] . "<hr>";
}
?>


Povezava na server. Izbira baze in tabele. Prikaz podatkov.
 
 
7
 
 
S PHP kodo smo sedaj končali. Sledi ustvarjanje obrazca za objavo. Spodnjo kodo prilepite spodaj, tako kot v vseh prejšnjih korakih.

<form method="POST" name="objava" action="<? echo $_SERVER['php_self']; ?>">
<p>
Avtor:<input name="avtor" type="text" /><br/>
<textarea id="tekst" rows="10" cols="50" name="tekst"></textarea>
</p>
<p>
<label>
<input type="submit" name=" " id=" " value="Objavi">
</label>
<br>
</p>
</form>


Najprej določimo metodo POST, ki podatke samo pošlje v bazo, ne pokaže pa jih v URL naslovu za razliko od metode GET, ki vse podatke, ki smo jih vnesli prikaže tudi v URL naslovu.

Akcija, ki naj se zgodi ko bomo pritisnili na gumb Objavi! je navedena s tole vrstico: action="<? echo $_SERVER['php_self']; ?>">
Ob pritisku na gumb Objavi se bo izvedlo to, kar je navedeno v PHP kodi. Nato sledi koda za polje, kamor bomo vnesli svoje ime pod katerim se bo objava objavila ter koda za textareo in gumb objavi.

To je to. Za morebitna vprašanja in nejasnosti pa poznamo forum. :)
 
 
Komentiraj
 
 
 
 
 
12.6.2010, 19:46
Pri kreiranju baze bi pri polju id bilo bolje izbrati še avto increment, da se vrednost polje ob novem vnosu avtomatsko poveča.

spremenil: podtalje (13.6.2010 ob 11.22.46)
 
 
 
 
16.6.2010, 18:49
Zdravo
Naredil sem bazo in vse ostalo po navodilih.
Kodo sem kopiral v program DW CS4 (naredil sem nov list in ga shranil kot forum.php):

<?php
if (isset($_POST['tekst']))
{
$con = mysql_connect('podatki za vpis v streznik1', 'podatki za vpis v

streznik2', 'podatki za vpis v streznik3') OR die('Ne morem se

povezati!');
mysql_select_db('ime baze') OR die('Ne morem izbrati baze!');
$objava = addslashes($_POST['tekst']);
$avtor = addslashes($_POST['avtor']);
$sql = "INSERT INTO objave VALUES('0', '$avtor', '$objava', NOW(), 0)";
mysql_query($sql,$con);
if (mysql_errno())
{
echo "Napaka.<br>";
} else
{
echo "Objava uspešno oddana.<br>";
}
}
$con = mysql_connect('podatki za vpis v streznik1', 'podatki za vpis v

streznik2', 'podatki za vpis v streznik3') OR die('Ne morem se

povezati!');
mysql_select_db('ime baze') OR die('Ne morem izbrati baze!');
$sql = "SELECT * FROM objave";
$result = mysql_query($sql,$con);

while($row = @mysql_fetch_assoc($result))
{
echo "Avtor: &nbsp;&nbsp;&nbsp;" . $row['avtor'] . " | " . $row

['datumCas'] . "<br>";
echo $row['objava'] . "<hr>";
}
?>





<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtm....
<html xmlns="http://www.w3.org/1999/xhtml"&g....
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>forum</title>
</head>

<body>
<form method="POST" name="objava" action="<? echo $_SERVER['php_self']; ?

>">
<p>
Avtor:<br/>
<textarea id="tekst" rows="10" cols="50" name="tekst"></textarea>
</p>
<p>
<label>
<input type="submit" name=" " id=" " value="Objavi">
</label>
<br>
</p>
</form>

forum
</body>
</html>


Ampak mi še vedno javi napako ko oddam text,pa še okenček za ime avtorja mi manjka.


spremenil: NikMan (16.6.2010 ob 19.32.43)
 
 
 
 
16.6.2010, 18:54

 
 
 
 
16.6.2010, 19:20
Ali se to pokaže po tem ko napišeš besedilo in klikneš gumb objavi ali pred tem (ko še nič ne klikneš in samo odpreš stran?
Preveri še enkrat vse podatke in povej rezultat.
 
 
 
 
16.6.2010, 19:36
Pokaže se po tem ko vpisem besedilo in kliknem objavi.
Vsi vpisani podatki za povezavo na server so pravilni.
Podatke za bazo forum in tabelo ki sem jo naredil za ta forum ni potrebno vpisati nikamor?


spremenil: sasa123 (16.6.2010 ob 20.09.41)
 
 
 
 
16.6.2010, 20:07
Ja, je potrebno. Tam kjer si v kodi napisala ime baze moraš namesto tega napisati ime tvoje baze. Enako je s tabelo ...
Poskusi v vsaki vrstici kode kjer imaš podatke za prijavo v bazo ... dodati ukaz
mysql_error());
.
 
 
 
 
16.6.2010, 20:11
Saj pravim vsi podatki so pravilno vpisani,tudi ime baze je pravilno vpisano.
Kam točno vpišem ta mysql_error()); ?
Hvala
 
 
 
 
16.6.2010, 20:29
Recimo takole:

$con = mysql_connect('localhost', 'root', 'root123') OR die('Ne morem se povezati!' . mysql_error());
 
 
 
 
16.6.2010, 20:46
Kaj imaš v 5. vrstici?
 
 
 
 
16.6.2010, 20:47

<?php
if (isset($_POST['tekst']))
{
$con = mysql_connect('podatki za vpis v streznik1', 'podatki za vpis v streznik2', 'podatki za vpis v streznik3') OR die('Ne morem se povezati!'); . mysql_error());
mysql_select_db('ime baze') OR die('Ne morem izbrati baze!');
$objava = addslashes($_POST['tekst']);
$avtor = addslashes($_POST['avtor']);
$sql = "INSERT INTO objave VALUES('0', '$avtor', '$objava', NOW(), 0)";
mysql_query($sql,$con);
if (mysql_errno())
{
echo "Napaka.<br>";
} else
{
echo "Objava uspešno oddana.<br>";
}
}
$con = mysql_connect('podatki za vpis v streznik1', 'podatki za vpis v streznik2', 'podatki za vpis v streznik3') OR die('Ne morem se povezati!'); . mysql_error());
mysql_select_db('ime baze') OR die('Ne morem izbrati baze!');
$sql = "SELECT * FROM objave";
$result = mysql_query($sql,$con);

while($row = @mysql_fetch_assoc($result))
{
echo "Avtor: &nbsp;&nbsp;&nbsp;" . $row['avtor'] . " | " . $row['datumCas'] . "<br>";
echo $row['objava'] . "<hr>";
}
?>





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

<body>
<form method="POST" name="objava" action="<? echo $_SERVER['php_self']; ?>">
<p>
Avtor:<br/>
<textarea id="tekst" rows="10" cols="50" name="tekst"></textarea>
</p>
<p>
<label>
<input type="submit" name=" " id=" " value="Objavi">
</label>
<br>
</p>
</form>

forum
</body>
</html>


spremenil: podtalje (16.6.2010 ob 23.35.54)
 
 
 
 
16.6.2010, 20:52
Ali lahko naslednjič kodo daš v code značko ker jo je lažje pregledati.

Jah seveda da je napaka.
Ti imaš takole...
$con = mysql_connect('podatki za vpis v streznik1', 'podatki za vpis v streznik2', 'podatki za vpis v streznik3' OR die('Ne morem se povezati!' ; . mysql_error());
... morala pa bi imeti takole:
$con = mysql_connect('podatki za vpis v streznik1', 'podatki za vpis v streznik2', 'podatki za vpis v streznik3' OR die('Ne morem se povezati!' . mysql_error());

Tisto eno ; je preveč (za Ne morem se povezati!).
 
 
 
 
16.6.2010, 20:59
Parse error: syntax error, unexpected ')' in /usr/home on line 4


spremenil: sasa123 (16.6.2010 ob 21.20.25)
 
 
 
 
16.6.2010, 21:12
<?php
if (isset($_POST['tekst']))
{
$con = mysql_connect('localhost', 'prijava server2', 'prijava server3') OR die('Ne morem se povezati!') . mysql_error());
mysql_select_db('ime baze-forum') OR die('Ne morem izbrati baze!');
$objava = addslashes($_POST['tekst']);
$avtor = addslashes($_POST['avtor']);
$sql = "INSERT INTO objave VALUES('0', '$avtor', '$objava', NOW(), 0)";
mysql_query($sql,$con);
if (mysql_errno())
{
echo "Napaka.<br>";
} else
{
echo "Objava uspešno oddana.<br>";
}
}
$con = mysql_connect('localhost', 'prijava server2', 'prijava server3') OR die('Ne morem se povezati!') . mysql_error());
mysql_select_db('ime baze-forum') OR die('Ne morem izbrati baze!');
$sql = "SELECT * FROM objave";
$result = mysql_query($sql,$con);

while($row = @mysql_fetch_assoc($result))
{
echo "Avtor: &nbsp;&nbsp;&nbsp;" . $row['avtor'] . " | " . $row['datumCas'] . "<br>";
echo $row['objava'] . "<hr>";
}
?>





<!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>forum</title>
</head>

<body>
<form method="POST" name="objava" action="<? echo $_SERVER['php_self']; ?>">
<p>
Avtor:<br/>
<textarea id="tekst" rows="10" cols="50" name="tekst"></textarea>
</p>
<p>
<label>
<input type="submit" name=" " id=" " value="Objavi">
</label>
<br>
</p>
</form>

forum
</body>
</html>
 
 
 
 
16.6.2010, 21:16
Ja in? Se ti ne zdi nič narobe.
Pravilno je:
$con = mysql_connect('localhost', 'prijava server2', 'prijava server3') OR die('Ne morem se povezati!' . mysql_error());

Ti si še zmeraj pustila oklepaj za Ne morem se povezati!.

Enake napake imaš tudi drugje kjer imaš
mysql_error());
. Poglej in popravi.
 
 
 
 
16.6.2010, 21:41
Najprej hvala,zdaj deluje,me pa zanima kako zdaj naredim še okenček za ime avtorja in da se text izpiše v več vrsticah?


 
 
 
 
16.6.2010, 21:43
Upam da me razumeš kaj mislim




spremenil: sasa123 (16.6.2010 ob 21.49.12)
 
 
 
 
16.6.2010, 21:54

 
 
 
 
17.6.2010, 13:30
V lekciji je vsa potrebna koda, tako da ne vem zakaj ti ne deluje. Sem šel še sam enkrat po lekciji in mi polje za vnos avtorja pokaže normalno.

Vseeno pa poskusi pobrisati dosedanjo HTML kodo in prilepiti spodnjo (pravzaprav je ista kot v lekciji - morda si se zmotila pri kopiranju):

<form method="POST" name="objava" action="<? echo $_SERVER['php_self']; ?>">
<p>
Avtor:<input name="avtor" type="text" /><br/>
<textarea id="tekst" rows="10" cols="50" name="tekst"></textarea>
</p>
<p>
<label>
<input type="submit" name=" " id=" " value="Objavi">
</label>
<br>
</p>
</form>
 
 
 
 
17.6.2010, 16:37
Hvala,zdaj dela tako kot mora,samo še text bo treba uredit tako da se izpiše v več vrsticah in ne samo v eni vrsti.
 
 
 
 
17.6.2010, 21:10
Po večih poskusih mi text še vedno izpiše samo v eno vrsto.Kako to poravim?
Hvala
 
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!