Virtualna galerija

 
 
Generative art
Zgodovina umetnosti – EKSPRESIONIZEM
BIO – o bienalu, pa tudi o bienalu
 

 
Ninja the Assassin III.
Ninja the Assassin II.
Ninja the Assassin I.
 
 
Tračnice
Tečaj za sprejemni izpit ALU - VK
Zaslonka in zaklop v fotografiji
Smola pa taka
Virtual Dub za popolnega začetnika
 
 
Prodam 2 računalnika (0)
Izdelava sita za sitotisk (4)
Iščemo oblikovalca spletne strani. (1)
prodam VACOM 3 A4 (2)
info: backup @ najceneje/najvarneje (29)
mysql update (5)
Odštevanje časa pri "neaktivni" spletni strani (5)
Prodam Wacom ptk 640 (0)
oblačila za močnejše (0)
deljenje v matematiki (7)




Število obiskov:
10.752.842








Slo-Foto portal

Planet iger
 
 



NAGRAJENO DELO











NAGRAJENO DELO









 

 
 

 

PHP News scripta | Datum: 23.10.2002 | komentarjev (10) | Avtor: mrpiagg
   
mrpiagg nas je zopet presenetil - tokrat sicer s PHP èlankom, pa vseeno :)

SKRIPTA ZA NOVICE Z UPORABO SKRIPTNEGA JEZIKA PHP V POVEZAVI Z MySQL BAZO PODATKOV

Tako pa smo zopet skupaj :). Tokrat sem sklenil, da se malo "poigram" s PHP-jem in sicer s skripto za dodajanje novic in komentarjev.
Skripta je sestavljena iz šestih strani: novice.php, novica.php, komentarji.php, komentar.php, login.php in conn.php, dodana pa je tudi datoteka za generiranje tabel v MySQL bazi baza.sql.
Ta skripta vsebuje prikaz novic po dnevih, dodajanje novic preko web vmesnika, ter njihovo urejanje, dodajanje komentarjev in urejanje le teh. Strani za urejanje in dodajanje so zaščitene z vstopom preko uporabniškega imena in gesla, imajo pa tudi dvojno raven pravic (administrator in normalni uporabnik - logiran), stran pa je zasnovana tako, da takoj ko poravimo pravice uporabnika v bazi, takoj lahko le te uporablja, brez ponovne prijave.
Vse skupaj uporablja MySQL bazo, ki je zastonj, povezavo do nje lahko najdete tukaj, zelo dober program za upravljanje MySQL baze pa je MySQL-Front, katerega stran pa na žalost ne obstaja več (možno da tudi povezava na download ne bo več delovala). Če boste zadevo gnali na Windows platformi, potem potrebujete še MyODBC, priporočljivo pa je tudi da uporabljate APACHE web server, ki ga najlažje dobite če naložite PHP-triad (PHP-triad vam namesti APACHE, PHP, ter MySQL). Windows uporabniki naj obvezno uporabljajo APACHE, saj na IIS-u ne delajo kolački (cookies), s čimer sem imel osebno kar nekaj problemov.
Uporabljajte pa tudi strani kot so http://www.php.net, http://www.planetsourcecode.com, http://www.rci.rutgers.edu/~jfulton/php1/functions.html, http://www.phpdeveloper.org/, ena izmed meni boljših strani pa je tudi http://www.asp-php.com, saj tukaj najdete ekvivalente za ASP (super za ASP-jovce) v PHP-ju, res da je v čudnem jeziku, samo vseeno če imate vsaj nekaj programerske žilice, vam ne bo težko dešifrirati... :)
Potrebna predznanja za to skripto so to, da poznate samo sintakso jezika, ter delo z bazami. Vse to se lahko naučite preko člankov o PHP-ju, ki so že na 3delavnici, ali pa s pomočjo zgoraj omenjenih strani.

Sedaj pa kar začnimo.
Najprej bomo obdelali skript za prijavo v sistem (login), saj se rezultati tega skripta uporabljajo na vseh straneh, še predno gremo na login pa bomo spoznali datoteko, kjer je zapisana pot do baze (conn.php)

Stran kjer je zapisana povezava z bazo conn.php (stran je v direktoriju includes/)

<?php

// povezava z MySQL bazo, če je baza na lokalnem računalniku, potem lahko uporabimo localhost,
// v nasprotnem primeru
pa IP (npr.: 212.30.90.73)

$povezava = @mysql_connect("localhost", "", "")
or die("Povezava z bazo ne deluje");

// povezava do izbrane baze (tutorials) .. spremeni če imaš tabele drugje !!
// za vse članke, ki sem jih napisal (jih bom napisal) bom uporabljal bazo z imenom tutorials

mysql_select_db("tutorials", $povezava);

?>


Nato zgradimo stran za prijavo v sistem login.php (stran je na root-u)

<?php

// če je uporabnik pritisnil submit, sprožimo kodo za login
if (isset($HTTP_POST_VARS['submit'])) {

// preberemo vrednosti iz forme
$uporabnik = $HTTP_POST_VARS[uporabnik];
$geslo = $HTTP_POST_VARS[geslo];

// če uporabnik ni izpolnil enega izmed polj
// potem mu prikažemo obvestilo o napaki

if ($uporabnik == "" OR $geslo == "") {

$napaka = "Vpiši uporabniško ime in geslo !";

} else {

// vstavimo povezavo z bazo
Include("includes/conn.php");

// s pomočjo SQL stavka preberemo, če uporabnik pod vpisanim geslom obstaja
$SQL = "SELECT * FROM users WHERE uporabnik = '$uporabnik' AND geslo = '$geslo'";

// sprožimo branje
$rs = mysql_query($SQL);

// ali uporabnik obstaja ? če je zapisov več od 0 potem uporabnik je v bazi
if (mysql_num_rows($rs) > 0) {

$zapis = mysql_fetch_row($rs);

// nastavimo piškotek za prijavljenega uporabnika
$uporabnik = $zapis[1];
setcookie("uporabnik",$uporabnik);

// preusmerimo stran na stran z novicami
Header("Location: novice.php");


} else {

// če uporabnik ne obstaja, potem sprožimo napako
$napaka = "Napačno uporabniško ime in/ali geslo !";

}

// sprostimo bazo
mysql_free_result($rs);

// zapremo povezavo z bazo
mysql_close($baza);

}

}

// prikaz vnosnih polj (forme za login)
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>PHP novice</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>

<body bgcolor="#FAFAFA">

<form name="logiranje" method="post" action="login.php">
Uporabniško ime<br>
<input type="text" name="uporabnik">
<br>Geslo<br>
<input type="password" name="geslo">
<br>
<input type="submit" name="submit" value="Vstop">
</form>

<!-- izpis napake, če le ta obstaja -->
<?php if ($napaka != "") { echo $napaka; } ?>

</body>
</html>


Ko smo prijavljeni v sistem lahko urejamo, dodajamo, brišemo, skrivamo, prikazujemo novice ali komentarje, vse to pa je pogojeno z našimi pravicami. Če imamo status navadnega uporabnika, potem lahko samo dodajamo in urejamo svoje komentarje, v primeru, ko imamo admin pravice pa imamo popolen nadzor nad sistemom.
Sedaj si bomo ogledali stran, ki skrbi za prikaz novic, za kar ni potrebna prijava v sistem, vendar je dobro da smo prijavljeni, saj s tem lahko tako dodajamo komentarje.
novice.php (stran je na root-u)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>PHP novice</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>

<body bgcolor="#FAFAFA">

<?php

// preberemo cookie za prijavo v sistem (uporabnik in njegove pravice)
// če je uporabnik_pravice 1 potem ima vse, če je 2 pa samo dodajanje komentarjev

$uporabnik = $HTTP_COOKIE_VARS["uporabnik"];

// vstavljena povezava z bazo
Include("includes/conn.php");

// če je uporabnik logiran, potem preberemo njegove pravice
if ($uporabnik != "") {

// SQL stavek za branje pravic
$SQL = "SELECT * FROM users WHERE uporabnik LIKE '$uporabnik'";

// sprožimo branje
$rs = mysql_query($SQL);

// če v bazi najdemo uporabnika, potem preberemo njegove pravice
$zapis = mysql_fetch_row($rs);

$uporabnik_pravice = $zapis[4];

}


// spremenljivka za začasni datum (uporabljena za prikaz novic po dnevih)
$zacasni_datum = "999";

// če smo prijavljeni kot admin, potem vidimo tudi skrite novice
if ($uporabnik_pravice == 1) {

// SQL stavek za prikaz novic sortiranih po datumu od zadnje proti prvi (prvih 15)
$SQL = "SELECT * FROM news ORDER BY datum DESC, cas DESC LIMIT 15";

} else {

// SQL stavek za prikaz novic sortiranih po datumu od zadnje proti prvi (prvih 15)
$SQL = "SELECT * FROM news WHERE prikaz = 1 ORDER BY datum DESC, cas DESC LIMIT 15";

}

// sprožimo branje
$rs = mysql_query($SQL);

// beremo novice dokler ne dosežemo konec zapisov
while ($zapis = mysql_fetch_row($rs)):

// preberemo zapise v spremenljivke
$id = $zapis[0];
$naslov = $zapis[1];
$opis = $zapis[2];
$vir = $zapis[3];
$datum = $zapis[4];
$cas = $zapis[5];
$avtor = $zapis[6];
$prikaz = $zapis[7];

// neustrezne znake zamenjamo z html znaki in namesto vbCrLf vstavimo <br />
$opis = stripslashes($opis);
$opis = STR_REPLACE("&","&amp;",$opis);
$opis = nl2br($opis);

// če smo admin (1) potem vidimo tudi skrite novice in komentarje
if ($uporabnik_pravice == 1) {

// s pomočjo SQL stavka dobimo število komentarjev za novico
$SQL_kom = "SELECT id FROM comments WHERE id_novica = ". $id;

} else {

// s pomočjo SQL stavka dobimo število komentarjev za novico (samo prikazani)
$SQL_kom = "SELECT id FROM comments WHERE prikaz=1 AND id_novica = ". $id;

}

// sprožimo branje iz baze
$rs_kom = mysql_query($SQL_kom);
// z ukazom za število zapisov dobimo število komentarjev
$st_kom = mysql_num_rows($rs_kom);


// razbijemo format mysql datuma
$datum = explode("-", $datum);

// z razbitega datuma preberemo leto, mesec in dan
$datum_leto = $datum[0];
$datum_mesec = $datum[1];
$datum_dan = $datum[2];


// razbijemo format mysql časa
$cas = explode(":", $cas);

// z razbitega časa preberemo uro in minute
$cas_h = $cas[0];
$cas_m = $cas[1];
$cas = $cas_h.":".$cas_m;

// primerjamo vrednost zacasne spremenljivke za datum z datumom iz baze
// s tem prikažemo tabelo, ki izpiše (grupira) dneve novic

if ($datum_dan != $zacasni_datum): ?>

<table width="100%" border="0" cellpadding="2" cellspacing="0">
<tr>
<td bgcolor="#990000"><font color="#FFFFFF"><b><?php echo $datum[2].".".$datum[1].".".$datum[0]; ?></b></font></td>
</tr>
</table>

<? endif; ?>

<!-- izpis tabele z novicami -->

<table width="100%" border="0" cellpadding="5" cellspacing="0">
<tr>
<td>

<table width="100%" border="0" cellspacing="0">
<tr>
<td><b><?php echo $naslov; ?></b></td>
</tr>
<tr>
<td><?php echo $opis; ?></td>
</tr>
<tr>
<td>
<br>avtor: <a href="uporabnik.php?up=<?php echo $avtor; ?>"><?php echo $avtor; ?></a> |
ura: <?php echo $cas; ?>
<?php if($vir != ""): ?> | vir: <b><?php echo $vir; ?></b><?php endif; ?> |
<a href="komentarji.php?id=<?php echo $id; ?>">komentarjev(<?php echo $st_kom; ?>)</a>

<?php
// na podlagi pravic za uporabnika prikažemo ustrezne povezave za urejanje novice
if($uporabnik_pravice == "1") {

// admin - uredi novico
echo '| admin: <a href="novica.php?id='.$id.'&act=edit">Uredi</a>';

// preverimo ali je novica prikazana ali ne, in nato prikažemo ustrezne povezave
// za skrij ali prikaži novico

if ($prikaz == 1) {

// admin - skrij novico
echo '&nbsp;&nbsp;<a href="novica.php?id='.$id.'&act=hide">Skrij</a>';

} else {

// admin - prikaži novico
echo '&nbsp;&nbsp;<a href="novica.php?id='.$id.'&act=show">Prikaži</a>';

}

// admin - briši novico, dodaj novico
echo '&nbsp;&nbsp;<a href="novica.php?id='.$id.'&act=del">Briši</a>';
echo '&nbsp;&nbsp;<a href="novica.php?act=add">Nova</a>';

}
?>

<hr width="100%" size="5" noshade color="#eeeeee">
</td>
</tr>
</table>

</td>
</tr>
</table>

<?php

// začasni spremenljivki za datum dodelimo novo vrednost (vrednost prebranega zapisa)
$zacasni_datum = $datum_dan;

endwhile;

// če novic ni potem prikažemo sporočilo za obiskovalce strani
if (mysql_num_rows($rs) == 0) {

echo "Trenutno ni novic";

}

// sprostimo bazo
mysql_free_result($rs);

// prikaz povezave za dodajanje novic
if($uporabnik_pravice == "1") {

echo '<br><a href="novica.php?act=add">Nova</a>';

}

// zapremo povezavo z bazo
mysql_close($baza);

?>

</body>
</html>


Ko smo zgradili stran za novice, potrebujemo tudi stran, preko katere bomo lahko gledali in dodajali komentarje.
Za to sem zgradil stran komentarji.php (stran je na root-u)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>PHP novice</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>

<body bgcolor="#FAFAFA">

<?php

// preberemo cookie za prijavo v sistem (uporabnik in njegove pravice)
// če je uporabnik_pravice 1 potem ima vse, če je 2 pa samo dodajanje

$uporabnik = $HTTP_COOKIE_VARS["uporabnik"];

// vstavljena povezava z bazo
Include("includes/conn.php");

// če je uporabnik logiran, potem preberemo njegove pravice
if ($uporabnik != "") {

// SQL stavek za branje pravic
$SQL = "SELECT * FROM users WHERE uporabnik LIKE '$uporabnik'";

// sprožimo branje
$rs = mysql_query($SQL);

// če v bazi najdemo uporabnika, potem preberemo njegove pravice

$zapis = mysql_fetch_row($rs);

$uporabnik_pravice = $zapis[4];

}

// dobimo id novice za prikaz komentarjev
$id = $HTTP_GET_VARS["id"];

// če smo admin (1) potem vidimo tudi skrite novice in komentarje
if ($uporabnik_pravice == 1) {

// SQL stavek za prikaz izbrane novice
$SQL = "SELECT * FROM news WHERE id = ". $id;

} else {

// SQL stavek za prikaz izbrane novice
$SQL = "SELECT * FROM news WHERE prikaz=1 AND id = ". $id;

}

// sprožimo branje iz baze
$rs = mysql_query($SQL);

// preberemo novico
$zapis = mysql_fetch_row($rs);

// preberemo zapise v spremenljivke
$id_n = $zapis[0];
$naslov = $zapis[1];
$opis = $zapis[2];
$vir = $zapis[3];
$datum = $zapis[4];
$cas = $zapis[5];
$avtor = $zapis[6];
$prikaz = $zapis[7];

// neustrezne znake zamenjamo z html znaki in namesto vbCrLf vstavimo <br />
$opis = stripslashes($opis);
$opis = STR_REPLACE("&","&amp;",$opis);
$opis = nl2br($opis);

// če smo admin (1) potem vidimo tudi skrite novice in komentarje
if ($uporabnik_pravice == 1) {

// s pomočjo SQL stavka dobimo število komentarjev za novico
$SQL_kom = "SELECT id FROM comments WHERE id_novica = ". $id;

} else {

// s pomočjo SQL stavka dobimo število komentarjev za novico (samo prikazani)
$SQL_kom = "SELECT id FROM comments WHERE prikaz=1 AND id_novica = ". $id;

}

// sprožimo branje iz baze
$rs_kom = mysql_query($SQL_kom);
// z ukazom za število zapisov dobimo število komentarjev
$st_kom = mysql_num_rows($rs_kom);

// razbijemo format mysql datuma
$datum = explode("-", $datum);

// z razbitega datuma preberemo leto, mesec in dan
$datum_leto = $datum[0];
$datum_mesec = $datum[1];
$datum_dan = $datum[2];
$datum = $datum_dan.".".$datum_mesec.".".$datum_leto;

// razbijemo format mysql časa

$cas = explode(":", $cas);

// z razbitega časa preberemo uro in minute
$cas_h = $cas[0];
$cas_m = $cas[1];
$cas = $cas_h.":".$cas_m;

// izpis podatkov v tabelo
?>

<table width="100%" border="0" cellpadding="5" cellspacing="0">
<tr>
<td>

<table width="100%" border="0" cellpadding="2" cellspacing="0">
<tr>
<td bgcolor="#990000"><font color="#FFFFFF"><b>Novica</b></font></td>
</tr>
</table>

<table width="100%" border="0" cellspacing="0">
<tr>
<td><b><?php echo $naslov; ?></b></td>
</tr>
<tr>
<td><?php echo $opis; ?></td>
</tr>
<tr>
<td>
<br>avtor: <a href="uporabnik.php?up=<?php echo $avtor; ?>"><?php echo $avtor; ?></a> |
datum: <?php echo $datum; ?> | ura: <?php echo $cas; ?>
<?php if($vir != ""): ?> | vir: <b><?php echo $vir; ?></b><?php endif; ?> |
<a href="komentarji.php?id=<?php echo $id; ?>">komentarjev(<?php echo $st_kom; ?>)</a>
</td>
</tr>
</table>
<br>
<table width="100%" border="0" cellpadding="2" cellspacing="0">
<tr>
<td bgcolor="#990000">
<font color="#FFFFFF"><b>Komentarji</b> | </font>

<?php

// preverimo če je uporabnik logiran in če je mu dovolimo dodajanje komentarja
if ($uporabnik != "") {

echo '&nbsp;<a href="komentar.php?id_n='.$id_n.'&act=add"><font color="white"><b>Dodaj komentar</b></font></a>';

}

?>

</td>
</tr>
</table>

<?php

// če v bazi ni komentarjev, potem izpišemo ustrezno obvestilo
if ($st_kom == 0) {

?>

<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td align="center">Ni komentarjev !</td>
</tr>
</table>


<?php

// v nasprotnem primeru komentarje preberemo iz baze
} else {


// če smo admin (1) potem vidimo tudi skrite novice in komentarje
if ($uporabnik_pravice == 1) {

// s pomočjo SQL stavka preberemo komentarje za izbrano novico
$SQL = "SELECT * FROM comments WHERE id_novica = ". $id_n ." ORDER BY datum ASC, cas ASC";

} else {

// s pomočjo SQL stavka preberemo komentarje za izbrano novico
$SQL = "SELECT * FROM comments WHERE prikaz=1 AND id_novica = ". $id_n ." ORDER BY datum ASC, cas ASC";

}

// sprožimo branje
$rs = mysql_query($SQL);

// spremenljivka za izmenjujoče barve celic
$alternate = 0;

// izpisujemo komentarje dokler ne pridemo konca zapisov
while ($zapis = mysql_fetch_row($rs)):

// preberemo zapise v spremenljivke
$id = $zapis[0];
$id_novica = $zapis[1];
$avtor = $zapis[2];
$komentar = $zapis[3];
$datum = $zapis[4];
$cas = $zapis[5];
$prikaz = $zapis[6];

// neustrezne znake zamenjamo z html znaki in namesto vbCrLf vstavimo <br />
$komentar = stripslashes($komentar);
$komentar = STR_REPLACE("&","&amp;",$komentar);
$komentar = nl2br($komentar);

// razbijemo format mysql datuma
$datum = explode("-", $datum);

// z razbitega datuma preberemo leto, mesec in dan
$datum_leto = $datum[0];
$datum_mesec = $datum[1];
$datum_dan = $datum[2];

// razbijemo format mysql časa
$cas = explode(":", $cas);

// z razbitega časa preberemo uro in minute
$cas_h = $cas[0];
$cas_m = $cas[1];
$cas = $cas_h.":".$cas_m;

// izmenjujoče barve celic
if ($alternate % 2 == 0) {
$barva = "#FFFFFF";
}else{
$barva = "#EEEEEE";
}

?>

<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>

<td bgcolor="<?php echo $barva ?>">
<?php echo $komentar ?>
<p>
avtor: <a href="uporabnik.php?up=<?php echo $avtor; ?>"><?php echo $avtor ?></a> |
<?php echo $datum[2].".".$datum[1].".".$datum[0]." / ".$cas ?>

<?php

// preverimo če je uporabnik logiran in če ima admin pravice
if($uporabnik_pravice == "1") {

// prikažemo ustrezne povezave (uredi, briši, dodaj, prikaži, skrij)
echo '| admin: <a href="komentar.php?id='.$id.'&id_n='.$id_n.'&act=edit">Uredi</a>';

// preverimo če je komentar prikazan in na podlagi tega prikažemo ustrezno povezavo
if ($prikaz == 1) {

echo '&nbsp;&nbsp;<a href="komentar.php?id='.$id.'&id_n='.$id_n.'&act=hide">Skrij</a>';

} else {

echo '&nbsp;&nbsp;<a href="komentar.php?id='.$id.'&id_n='.$id_n.'&act=show">Prikaži</a>';

}

echo '&nbsp;&nbsp;<a href="komentar.php?id='.$id.'&id_n='.$id_n.'&act=del">Briši</a>';
echo '&nbsp;&nbsp;<a href="komentar.php?id_n='.$id_n.'&act=add">Nov</a>';

// če uporabnik nima admin pravic ima pravico urejanja samo svojega komentarja
} elseif($uporabnik_pravice == "2" AND $uporabnik == $avtor) {

echo '| <a href="komentar.php?id='.$id.'&id_n='.$id_n.'&act=edit">Uredi</a>';

}

?>

</p>
</td>

</tr>
</table>

<?php

// povečamo spremenljivko za izmenjujoče barve celic za 1
$alternate++;

endwhile;

}

// zapremo povezavo z bazo
mysql_close($baza);

?>

<p><a href="novice.php">nazaj</a></p>

</td>
</tr>
</table>

</body>
</html>


Sedaj ko imamo strani preko, katerih gledamo novice in komentarje, potrebujemo še strani za dodajanje le teh.
Za ta namen sem zgradil stran novica.php (stran je na root-u), preko katere se ureja izbrano novico.

<?php

// preberemo cookie za prijavo v sistem (uporabnik in njegove pravice)
// če je uporabnik_pravice 1 potem ima vse, če je 2 pa samo dodajanje

$uporabnik = $HTTP_COOKIE_VARS["uporabnik"];

// vstavljena povezava z bazo
Include("includes/conn.php");

// če je uporabnik logiran, potem preberemo njegove pravice
if ($uporabnik != "") {

// SQL stavek za branje pravic
$SQL = "SELECT * FROM users WHERE uporabnik LIKE '$uporabnik'";

// sprožimo branje
$rs = mysql_query($SQL);

// če v bazi najdemo uporabnika, potem preberemo njegove pravice
$zapis = mysql_fetch_row($rs);

$uporabnik_pravice = $zapis[4];

} else {

// če uporabnik ni logiran, potem ga preusmerimo nazaj na začetno stran
Header("Location: novice.php");

}

// sprostimo bazo
mysql_free_result($rs);

// preberemo katera akcija je bila izbrana (nov,briši,uredi,...)
$act = $HTTP_GET_VARS["act"];

// preberemo id novice
$id = $HTTP_GET_VARS["id"];

// za izbrane akcije prožimo ustrezno
if ($uporabnik_pravice != 1) {

// če uporabnik ni logiran, ali nima pravic, potem ga preusmerimo nazaj na začetno stran
Header("Location: novice.php");

// izvršitev ustreznih akcij
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>PHP novice</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>

<body bgcolor="#FAFAFA">

<?php

// akcija urejanje
} elseif ($act == "edit" AND $uporabnik_pravice == 1) {

// preberemo izbrano novico in jo prikažemo v vnosnih poljih
$SQL = "SELECT * FROM news WHERE id = ". $id;

// sprožimo branje iz baze
$rs = mysql_query($SQL);

// preberemo novico
$zapis = mysql_fetch_row($rs);

// preberemo zapise v spremenljivke
$id_n = $zapis[0];
$naslov = $zapis[1];
$opis = $zapis[2];
$vir = $zapis[3];
$datum = $zapis[4];
$cas = $zapis[5];
$avtor = $zapis[6];
$prikaz = $zapis[7];

// prikažemo podatke v formi
?>

<form name="novica" method="post" action="novica.php?act=save">

Naslov novice<br>
<input name="naslov" type="text" size="50" value="<?php echo $naslov ?>">
<br>Opis novice<br>
<textarea name="opis" cols="50" rows="10"><?php echo $opis ?></textarea>
<br>Vir novice<br>
<input name="vir" type="text" size="50" value="<?php echo $vir ?>">
<input name="id_n" type="hidden" value="<?php echo $id_n ?>">
<br>
<input type="checkbox" name="prikaz" value="1" <?php if ($prikaz == "1") { echo "checked"; } ?>> Prikaz novice
<br>
<input name="submit" type="submit" value="Shrani">

</form>

<?php

// sprostimo bazo
mysql_free_result($rs);

// akcija prikaži vpis
} elseif ($act == "show" AND $uporabnik_pravice == 1) {

// s pomočjo SQL stavka prikažemo vpis
$SQL = "UPDATE news SET prikaz = 1 WHERE id = $id" ;
$rs = mysql_query($SQL);

// sprostimo bazo
mysql_free_result($rs);

// preusmerimo stran nazaj na začetek
Header("Location: novice.php");

// akcija skrij vpis
} elseif ($act == "hide" AND $uporabnik_pravice == 1) {

// s pomočjo SQL stavka skrijemo vpis
$SQL = "UPDATE news SET prikaz = 0 WHERE id = $id" ;
$rs = mysql_query($SQL);

// sprostimo bazo
mysql_free_result($rs);

// preusmerimo stran nazaj na začetek
Header("Location: novice.php");

// akcija briši vpis
} elseif ($act == "del" AND $uporabnik_pravice == 1) {

// s pomočjo SQL stavka pobrišemo novico
$SQL = "DELETE FROM news WHERE id = $id" ;
$rs = mysql_query($SQL);

// s pomočjo SQL stavka pobrišemo komentarje za novico
$SQL = "DELETE FROM comments WHERE id_novica = $id" ;
$rs = mysql_query($SQL);

// sprostimo bazo
mysql_free_result($rs);

// preusmerimo stran nazaj na začetek
Header("Location: novice.php");

// akcija nov vpis
} elseif ($act == "add" AND $uporabnik_pravice == 1) {

// prikažemo formo za nov vpis
?>

<form name="novica" method="post" action="novica.php?act=save">

Naslov novice<br>
<input name="naslov" type="text" size="50">
<br>Opis novice<br>
<textarea name="opis" cols="50" rows="10"></textarea>
<br>Vir novice<br>
<input name="vir" type="text" size="50">
<input name="id_n" type="hidden">
<br>
<input type="checkbox" name="prikaz" value="1"> Prikaz novice
<br>
<input name="submit" type="submit" value="Shrani">

</form>

<?php

// shranjevanje vpisa (novice)
} elseif ($act == "save" AND $uporabnik_pravice == 1) {

// dobimo podatke iz forme
$id_n = $HTTP_POST_VARS["id_n"];
$naslov = $HTTP_POST_VARS["naslov"];
$opis = $HTTP_POST_VARS["opis"];
$vir = $HTTP_POST_VARS["vir"];
$datum = date("Y-n-d");

// dobimo sistemski čas
$cas = getdate();
$h = $cas[hours];
$m = $cas[minutes];
$s = $cas[seconds];
// zgradimo čas, ki ga sprejme MySQL baza
$cas = $h.":".$m.":".$s;

$avtor = $uporabnik;
$prikaz = $HTTP_POST_VARS["prikaz"];

// preverimo če je v checkboxu kljukica
if ($prikaz != 1) {
$prikaz = 0;
} else {
$prikaz = 1;
}

// če urejamo novico (id_n ni prazen) sprožimo SQL stavek za UPDATE, drugače pa za nov vpis
// id_n je id novice

if ($id_n != "") {

$SQL = "UPDATE news SET naslov='$naslov', opis='$opis', vir='$vir', avtor='$avtor', prikaz=$prikaz WHERE id = $id_n";

} else {

$SQL = "INSERT INTO news (naslov,opis,vir,avtor,datum,cas,prikaz) VALUES ('$naslov','$opis','$vir','$avtor','$datum','$cas',$prikaz)";

}

$rs = mysql_query($SQL);

// sprostimo bazo
mysql_free_result($rs);

// preusmerimo stran nazaj na začetek
Header("Location: novice.php");

}

// zapremo povezavo z bazo
mysql_close($baza);

?>

</body>
</html>


Potrebujemo še stran preko katere bomo lahko dodajali i urejali komentarje.
Za to poskrbi stran komentar.php (datoteka na root-u)
<?php

// preberemo cookie za prijavo v sistem (uporabnik in njegove pravice)
// če je uporabnik_pravice 1 potem ima vse, če je 2 pa samo dodajanje

$uporabnik = $HTTP_COOKIE_VARS["uporabnik"];

// vstavljena povezava z bazo
Include("includes/conn.php");

// če je uporabnik logiran, potem preberemo njegove pravice
if ($uporabnik != "") {

// SQL stavek za branje pravic
$SQL = "SELECT * FROM users WHERE uporabnik LIKE '$uporabnik'";

// sprožimo branje
$rs = mysql_query($SQL);

// če v bazi najdemo uporabnika, potem preberemo njegove pravice
$zapis = mysql_fetch_row($rs);

$uporabnik_pravice = $zapis[4];

} else {

// če uporabnik ni logiran, potem ga preusmerimo nazaj na začetno stran
Header("Location: novice.php");

}

// sprostimo bazo
mysql_free_result($rs);

// preberemo katera akcija je bila izbrana (nov,briši,uredi,...)
$act = $HTTP_GET_VARS["act"];

// preberemo id novice in komentarja
$id_n = $HTTP_GET_VARS["id_n"];
$id = $HTTP_GET_VARS["id"];

// za izbrane akcije prožimo ustrezno
if ($uporabnik_pravice != 1 AND $uporabnik_pravice != 2) {

// če uporabnik ni logiran, ali nima pravic, potem ga preusmerimo nazaj na začetno stran
Header("Location: novice.php");

// izvršitev ustreznih akcij
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>PHP novice</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>

<body bgcolor="#FAFAFA">

<?php

// akcija urejanje
} elseif ($act == "edit") {

// preberemo izbran komentar in ga prikažemo v vnosnih poljih
$SQL = "SELECT * FROM comments WHERE id = ". $id;

// sprožimo branje iz baze
$rs = mysql_query($SQL);

// preberemo novico
$zapis = mysql_fetch_row($rs);

// preberemo zapise v spremenljivke
$id = $zapis[0];
$id_n = $zapis[1];
$avtor = $zapis[2];
$komentar = $zapis[3];
$datum = $zapis[4];
$cas = $zapis[5];
$prikaz = $zapis[6];

// če je prijavljen uporabnik avtor vpisa ali administrator, potem mu dovolimo urejanje
if ($uporabnik == $avtor OR $uporabnik_pravice == 1) {

// prikažemo podatke v formi
?>

<form name="komentar" method="post" action="komentar.php?act=save">

<br>Komentar<br>
<textarea name="komentar" cols="50" rows="10"><?php echo $komentar ?></textarea>
<input name="id" type="hidden" value="<?php echo $id ?>">
<input name="id_n" type="hidden" value="<?php echo $id_n ?>">
<br>

<?php if ($uporabnik_pravice != 1) { // če je uporabnik administrator potem mu prikažemo checkbox ?>
<input name="prikaz" type="hidden" value="1">
<?php } else { ?>
<input type="checkbox" name="prikaz" value="1" <?php if ($prikaz == "1") { echo "checked"; } ?>> Prikaz komentarja
<?php } ?>

<br>
<input name="submit" type="submit" value="Shrani">

</form>

<?php

} else {

// preusmerimo stran nazaj na začetek
Header("Location: komentarji.php?id=$id_n");

}

// sprostimo bazo
mysql_free_result($rs);

// akcija prikaži vpis
} elseif ($act == "show" AND $uporabnik_pravice == 1) {

// s pomočjo SQL stavka prikažemo vpis
$SQL = "UPDATE comments SET prikaz = 1 WHERE id = $id" ;
$rs = mysql_query($SQL);

// sprostimo bazo
mysql_free_result($rs);

// preusmerimo stran nazaj na začetek
Header("Location: komentarji.php?id=$id_n");

// akcija skrij vpis
} elseif ($act == "hide" AND $uporabnik_pravice == 1) {

// s pomočjo SQL stavka skrijemo vpis
$SQL = "UPDATE comments SET prikaz = 0 WHERE id = $id" ;
$rs = mysql_query($SQL);

// sprostimo bazo
mysql_free_result($rs);

// preusmerimo stran nazaj na začetek
Header("Location: komentarji.php?id=$id_n");

// akcija briši vpis
} elseif ($act == "del" AND $uporabnik_pravice == 1) {

// s pomočjo SQL stavka pobrišemo vpis
$SQL = "DELETE FROM comments WHERE id = $id" ;
$rs = mysql_query($SQL);

// sprostimo bazo
mysql_free_result($rs);

// preusmerimo stran nazaj na začetek
Header("Location: komentarji.php?id=$id_n");

// akcija nov vpis
} elseif ($act == "add") {

?>

<form name="komentar" method="post" action="komentar.php?act=save">

<br>Komentar<br>
<textarea name="komentar" cols="50" rows="10"><?php echo $komentar ?></textarea>
<input name="id_n" type="hidden" value="<?php echo $id_n ?>">
<br>

<?php if ($uporabnik_pravice != 1) { // če je uporabnik administrator potem mu prikažemo checkbox ?>
<input name="prikaz" type="hidden" value="1">
<?php } else { ?>
<input type="checkbox" name="prikaz" value="1"> Prikaz komentarja
<?php } ?>

<br>
<input name="submit" type="submit" value="Shrani">

</form>


<?php

} elseif ($act == "save") {

// dobimo podatke iz forme
$id = $HTTP_POST_VARS["id"];
$id_n = $HTTP_POST_VARS["id_n"];
$komentar = $HTTP_POST_VARS["komentar"];
$datum = date("Y-n-d");

// dobimo sistemski čas
$cas = getdate();
$h = $cas[hours];
$m = $cas[minutes];
$s = $cas[seconds];
// zgradimo čas, ki ga sprejme MySQL baza
$cas = $h.":".$m.":".$s;

$avtor = $uporabnik;
$prikaz = $HTTP_POST_VARS["prikaz"];

// preverimo če je v checkboxu kljukica
if ($prikaz != 1) {
$prikaz = 0;
} else {
$prikaz = 1;
}

// če urejamo novico (id_n ni prazen) sprožimo SQL stavek za UPDATE, drugače pa za nov vpis
if ($id != "") {

$SQL = "UPDATE comments SET komentar='$komentar', prikaz=$prikaz WHERE id = $id";

} else {

$SQL = "INSERT INTO comments (id_novica,komentar,avtor,datum,cas,prikaz) VALUES ($id_n,'$komentar','$avtor','$datum','$cas',$prikaz)";

}

$rs = mysql_query($SQL);

// sprostimo bazo
mysql_free_result($rs);

// preusmerimo stran nazaj na začetek
Header("Location: komentarji.php?id=$id_n");

}

// zapremo povezavo z bazo
mysql_close($baza);

?>

</body>
</html>

To je vsa koda, ki je potrebna za solidno delujoč sistem novic. Manjka edino kakšen javascript, ki bi preverjal vnosna polja, ter script, s pomočjo katerega bi oblikovali tekst, ki ga vnašamo, ker pa to ni del PHP-ja, bo članek za urejanje teksta in preverjanje polj s pomočjo javascripta objavljen kot svoj članek.

Kodo za to skripto si lahko snamete tukaj, če pa bodo kakšna vprašanja, pa me lahko kontaktirate preko u2u, ali pa pošljete email.



 


 
 

novice | forum | zadnjih 24 ur | učilnica | galerija | natečaji | interni natečaji | borza dela | prireditve | ekipa | uporabniki | pravila | pravila galerije | oglaševanje

copyright 2010 - 3delavnica.com. Vse pravice pridržane. All rights reserved.
Za vse objavljene prispevke odgovarjajo njihovi avtorji
ISSN 1581-0917
info@3delavnica.com