Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Jednostavan news system

[es] :: PHP :: Jednostavan news system

[ Pregleda: 7476 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Zoran Rašković
Serbia

Član broj: 95
Poruke: 1360
*.tehnicom.net



+1 Profil

icon Jednostavan news system08.07.2002. u 03:48 - pre 264 meseci
Danas cemo u maloj skoli php-ja napraviti jednostavan news system

Naravno, sve vesti bice skladistene u mysql bazi, nazovimo je db_news (logicno, zar ne). Evo mysql strukturne sheme za vasu bazu podataka:
Code:

CREATE TABLE db_news (
  id int(10) NOT NULL auto_increment,
  text blob NOT NULL,
  datum timestamp(14) NOT NULL,
  title varchar(100) NOT NULL default '',
  PRIMARY KEY  (id)
) ENGINE=MyISAM;


Sada, kada imamo bazu, uradicemo news skripticu. News system nam se sastoji iz dva dela: iz fajla index.php gde pregledamo sve vesti i iz admin.php gde dodajemo i brisemo vesti. Pozeljno bi bilo fajl admin.php zastititi preko nekog login systema ili jednostavno staviti admin.php u zaseban dir pa onda uraditi .htaccess za taj dir. Sve to u cilju da bi ste samo vi mogli da dodajete i brisete vesti i niko vise.

Prvo cemo uraditi admin.php. U ovom fajlu potrebno je izlistati sve vesti i pored svake vesti dodati link "Delete" kako biste mogli da obrisete neku vest koja je zastarela ili iz nekog drugog razloga.

Code:

<?
//admin.php

include "db.php";

//display all the news

$result=mysql_query("select count(id) from db_news", $db);
while ($myrow=mysql_fetch_row($result)) {
    echo " (<b>$myrow[0]</B> posts in the news)<p>";
}

echo "<TABLE border='1' bordercolor='#E2E2E2' cellspacing='0' cellpadding='1' width='100%'><tr bgcolor='#C0C0C0'  bordercolor='1'><B><td><B>Date</B></td><td><B>News</B></td></B></tr>";

$result=mysql_query("select * from db_news order by datum desc", $db) or die (mysql_error());
while ($myrow=mysql_fetch_row($result)) {
    $txt=nl2br($myrow[1]);
    echo "
    <TR bordercolor='1'>";
        make_date1();
        echo "
    <TD>$date1</TD>
    <TD>$myrow[3] - $txt  [<a href='del.php?number=$myrow[0]'>Delete it!</a>]<p></td>
    </TR>
";
}
echo "</table>";


echo "<CENTER><form action='post_news.php' method='post'>
Title: <INPUT TYPE='text' NAME='title'><p>
News: <TEXTAREA NAME='news' ROWS='10' COLS=100></TEXTAREA><p>
<CENTER><INPUT TYPE='submit' value='Post news!'></CENTER>
</form>";
?>


Sada na red dolazi fajl post_news.php koji sluzi da nam proveri podatke i potom unese novu vestu bazu podataka:

Code:

<?
//post_news.php

include "inc.php";
$news=htmlspecialchars($news);
$title=htmlspecialchars($title);

$result=mysql_query("insert db_news set text='$news', title='$title'", $db);

echo "<CENTER><p>News posted... I am taking you back...<meta http-equiv='refresh' content='2; url=admin.php'></CENTER>";
?>


Dakle, za sada imamo admin.php i post_news.php. Red je da uradimo i stranicu za brisanje vesti -- del.php:

Code:

<?
//del.php

include "inc.php";

$result=mysql_query("delete from db_news where id='$number'", $db);

echo "<CENTER>News entry deleted! I am taking you back...<meta http-equiv='refresh' content='2; url=admin.php'></CENTER>";
?>


Eto sada imamo sva tri fajla koja sacinjavaju administratorski deo nase news skripte, dakle admin.php, post_news.php kao i del.php.

Kao sto znamo, potrebno je jos samo da odradimo i index.php -- stranica na kojoj ce sve nase vesti biti izlistane i koju ce drugi ljudi moci da vide bez problema. To nece biti tesko s obzirom da smo vec izlistali vesti u fajlu admin.php.

Dakle:
Code:

<?
//index.php

include "inc.php";

$result=mysql_query("select * from db_news order by datum desc", $db) or mysql_error();
while ($myrow=mysql_fetch_row($result)) {
    make_date1();
    $txt=nl2br($myrow[1]);

echo "<B>$myrow[3]</B> [$date1]<br><br>
$txt<hr>";
}
?>


Obrattite paznju da se svo vreme u igru ubacuje i fajl inc.php koji se non stop includuje. U fajl inc.php trebate da stavite deklaraciju vase baze podatake i povezivanje na istu. Takodje u fajlu inc.php nalazi se i funkcija za lepo formatiranje datuma od mysql funkcije timestamp(14). inc.php bi izlgedao npr:

Code:

<?
define("HOST", "vas_hostname");
define("USER", "vas_username_ovde");
define("PASSWORD", "vasa_sifra_ovde");
define("DATABASE", "ime_baze");

//connecting to the database

$db=mysql_connect(HOST, USER, PASSWORD);
mysql_select_db(DATABASE, $db);


function make_date1() {
        global $d1, $year1, $month1, $day1, $hour1, $min1, $sec1, $date1, $myrow;
        $d1=$myrow[2];
        $year1=substr($d1, 0, 4);
        $month1=substr($d1, 4, 2);
        $day1=substr($d1, 6, 2);
        $hour1=substr($d1, 8, 2);
        $min1=substr($d1, 10, 2);
        $sec1=substr($d1, 12, 2);
        return $date1="$month1-$day1-$year1 @ $hour1:$min1";
}

?>


E to bi bilo to Nadam se da nije zamrseno i da ce mnogima ovo pomoci da naprave svoj news system i stave to na svoj sajt. Ovo je nesto najjednostavnije, imalo bi tu jos dosta drugih stvari da se uradi, kao npr: mogucnost editovanja vesti, mogucnost logovanja u bazu imena autora koji je napisao odredjenu vest, onda lepse formatiranje prikaza vesti itd itd... To ostaje na vama da doradite svoj news system kako zelite.

Ziveli!
 
Odgovor na temu

Ivan Dimitrijević

Član broj: 108
Poruke: 363
195.252.103.*

Jabber: collide@jabber.com
ICQ: 99936990


+1 Profil

icon Re: Jednostavan news system08.07.2002. u 05:07 - pre 264 meseci
Hvala ti Dread,ovo mi je baš trebalo...
Don't tell Me what to do !!! Pimp Juice
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
*.ptt.yu



+11 Profil

icon Re: Jednostavan news system08.07.2002. u 12:39 - pre 264 meseci
Ok je ovo. Moja jedina zamerka je sto php kod nije odvojen od HTML koda...

Neko kad smo kod vesti, posto radim na necem slicnom, ima li ko ideju kako da napravim mehanizam da omoguim da drugi sajtovi koriste moje vesti a da ne petljaju po mojoj bazi...
 
Odgovor na temu

Divine
Miloš Šaković
IT Manager
Yugoslavia

Član broj: 883
Poruke: 108
*.podgorica.cg.yu

ICQ: 16044064
Sajt: www.divine.cg.yu


Profil

icon Re: Jednostavan news system08.07.2002. u 15:41 - pre 264 meseci
Zamjerke:
1. uvjek koristi $HTTP_XXX_VARS['varname'] ili $_XXX['varname'] varijable, svi znamo zasto.
2. u admin.php makni prvi SQL upit jer to mozes da dobijes i sa mysql_num_rows funkcijom, sto je naravno, brze.
3. nemoj da koristis $myrow[0] itd nego $myrow['id'] posebno kad objasnjavas i ne koristi mysql_fetch_array nego mysql_fetch_asset upravo zato sto mysql_fetch_array kada se cita kao array sadrzi duplo vise podataka (nepotrebnih) pa je mysql_fetch_asset mnogo brzi, ali ogranicen na prikazivanje tipa: $myrow['ime kolone'] i ne postoji mogucnost da se koristi $myrow[0] pa je zbog toga brzi
4. nemas fajl za modifikovanje vijesti

nemoj pogresno da me shvatis, ovo su konstruktivne sugestije

I see dead people...
 
Odgovor na temu

RAZZLEDAZZLER
Tora Bora

Član broj: 27
Poruke: 543
*.beg.sezampro.yu



Profil

icon Re: Jednostavan news system08.07.2002. u 17:57 - pre 264 meseci
Citat:
Divine:
3. ... i ne koristi mysql_fetch_array nego mysql_fetch_asset ...

... pa je mysql_fetch_asset mnogo brzi...


valjda mysql_fetch_assoc a ne asset
 
Odgovor na temu

Zoran Rašković
Serbia

Član broj: 95
Poruke: 1360
*.tehnicom.net



+1 Profil

icon Re: Jednostavan news system08.07.2002. u 21:28 - pre 264 meseci
Citat:
4. nemas fajl za modifikovanje vijesti


Imam ali nisam to napisao ovde. Da si procitao ceo post, video bi da sam napisao da bi jedna od stvari koje bi trebalo uraditi upravo bila editovanje vesti, tj modifikovanje vesti.

p.s. Hvala na predlozima
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.rcub.bg.ac.yu

Sajt: localhost


+5 Profil

icon Re: Jednostavan news system10.07.2002. u 00:24 - pre 264 meseci
Citat:
broker:
Neko kad smo kod vesti, posto radim na necem slicnom, ima li ko ideju kako da napravim mehanizam da omoguim da drugi sajtovi koriste moje vesti a da ne petljaju po mojoj bazi...

pa "mehanizam" vec postoji, a zove se RSS ili RDF... (izmedju ostalog, koristi ga i ovaj sajt RSS - Rich Site Summary, RDF - Resource Definition Format www.w3.org/RDF

RDF je u stvari jedan XML recnik, koji je (bar za sada) de fakto standard za razmenu sadrzaja izmedju sajtova... on ima vrlo prostu sintaxu, a sam postupak objavljivanja sadrzaja preko rdf-a se sastoji u sledecem:

1) napravish jednu php skriptu (www.elitesecurity.com/backend.php na ovom sajtu) koju koriste drugi sajtovi da bi preuzimali vesti od tebe...
2) kada se ta skripta pozove, ona treba da iz baze iscita 10-tak poslednjih/najpopularnijih tema ili vesti u tvom slucaju
3) spakuje naslove, autore i joshe neke informacije o vestima (sa sve linkovima) u doticni RDF format i ispise to, tj. posalje drugom sajtu...

ako te dalje zanima kako da uradish sve ovo, pitaj, rado cemo ti pomoci i detaljnije objasnjavati... ako oces out-of-the-box resenje, pogledaj na www.hotscripts.com ili pitaj google... verovatno ima uradjeno...
 
Odgovor na temu

Sale81

Član broj: 3814
Poruke: 386
*.proxy.cg.yu

Jabber: sale@elitesecurity.org


Profil

icon Re: Jednostavan news system10.07.2002. u 06:43 - pre 264 meseci
Eh da je vise ovakvih tema ;)

Samo bi bilo lijepo da se kod zipuje i uploaduje uz poruku :)
- necitak -
 
Odgovor na temu

stanoje
php+mysql coravljenje
Batajnica

Član broj: 602
Poruke: 56
*.korisnici.absolutok.com



Profil

icon Re: Jednostavan news system29.07.2002. u 12:35 - pre 263 meseci
Citat:
Judge Dred:
Citat:
4. nemas fajl za modifikovanje vijesti


Imam ali nisam to napisao ovde. Da si procitao ceo post, video bi da sam napisao da bi jedna od stvari koje bi trebalo uraditi upravo bila editovanje vesti, tj modifikovanje vesti.

p.s. Hvala na predlozima :)


Samo da se doda da se bez vece muke moze dodati edit(update) vesti u istom
fajlu koji radi insert preko jednog parametra npr akcija, na njega se moze ici
iz fajla koji ti prikazuje vesti(admin.php) uz mogucnost brisanja npr
dodas link jos uredi vest tako se citava prica skracuje na
skript manje
1.jedan radi insert i update
2.drugi radi delete
Ovo je samo kao ideja, sto se tice tvoje poruke smatram da
je odlican tutorial. Mozda samo napomenuti ljudima koji bi radili
edit varijantu da svim text poljima u bazi prilikom prikaza dodaju
jedan htmlspecialchars da se strana ne bi izoblicila
Sima Kosmos iz dalekog svemira
 
Odgovor na temu

Sale81

Član broj: 3814
Poruke: 386
*.proxy.cg.yu

Jabber: sale@elitesecurity.org


Profil

icon Re: Jednostavan news system29.07.2002. u 13:30 - pre 263 meseci
Ma nema problema se sve smjesti u jednu scritu.... action=update, insert or delete :)

Nego me interesuje kako na *nixu moze da se napravi da korisnici jedni drugima ne mogu preko php-a da svrljaju po direktorijumima / scriptama?
- necitak -
 
Odgovor na temu

el8

Član broj: 5275
Poruke: 1
*.pensa.hr

Sajt: pensa.hr


Profil

icon Re: Jednostavan news system12.09.2002. u 11:33 - pre 262 meseci
Citat:
Divine:
3. nemoj da koristis $myrow[0] itd nego $myrow['id'] posebno kad objasnjavas i ne koristi mysql_fetch_array nego mysql_fetch_asset upravo zato sto mysql_fetch_array kada se cita kao array sadrzi duplo vise podataka (nepotrebnih) pa je mysql_fetch_asset mnogo brzi, ali ogranicen na prikazivanje tipa: $myrow['ime kolone'] i ne postoji mogucnost da se koristi $myrow[0] pa je zbog toga brzi


samo jedan notice na ovaj komentar u vezi mysql_fetch_array-a. Postoji josh jedan opcionalni parametar ciji vrijednosti mogu biti MYSQL_ASSOC, MYSQL_NUM, i MYSQL_BOTH ovisi koji tip kljuceva zelish u array-u.
 
Odgovor na temu

CONFIQ
♫♪♥♪♫

Član broj: 4218
Poruke: 1994
*.dsl.bezeqint.net

ICQ: 82327428


+10 Profil

icon Re: Jednostavan news system30.10.2002. u 20:58 - pre 260 meseci
Samo da dodam... Pošto je od verzije 4.2.0+ po defultu register_globals isključen i ako ne možete da ga uključite trebalo bi da se koristi $_GET['*'] i $_POST['*'] tako da ne mislite da je greška u kodu
 
Odgovor na temu

[es] :: PHP :: Jednostavan news system

[ Pregleda: 7476 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.