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

Tutorial: Apache + PHP + PostgreSQL + primjeri

[es] :: PHP :: Tutorial: Apache + PHP + PostgreSQL + primjeri

[ Pregleda: 2755 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dr ZiDoo
Banja Luka

Član broj: 189
Poruke: 1728
*.urc.rs.ba

Jabber: ZiDoo@elitesecurity.org
ICQ: 299539598
Sajt: zidoo.geek.rs.ba


Profil

icon Tutorial: Apache + PHP + PostgreSQL + primjeri 30.04.2003. u 21:58 - pre 267 meseci
Popšto se u zadnje vrijme sve više piše u PostgreSQLu i svi ga hvale kako je dobar, a i net je pun tutoriala o mySQLu, ja sam odlucio napisati
tutorial o instalaciji PostgreSQLa na Linux i njegovog podešavanja da fino radi sa PHPom. Takode napisao sam i mali shoutbox koji radi sa doticnom
bazom da na primjeru vidite kako to sve radi.

Instalacija
Polazimo od pretpostavke da na Linuxu nema ni Apache ni PHP, a ni PostgreSQL. Ako je tako onda:

a) Instaliranje Apacha

Recimo da želite da instalirate najnoviji Apache 2.0.45. Naravno skinuli source httpd-2.0.45.tar.gz.

Code:

# tar zvfx httpd-2.0.45.tar.gz
# cd httpd-2.0.45/
# ./configure
# make
# make install


Po defaultu Apache ce se instalirati u /usr/local/apache2. Naravno to možete promjeni prilikom konfiguracije Apacha. Za više o tome prije kompajliranja
uradite ./configure --help
Ako je sve prošlo kako treba, a nema razloga da ne prode, komandom /usr/local/apache2/bin/apachectl start bi apache trebao biti pokrenut.

b) Instalacija PostgreSQLa

PostgreSQL je malo komplikovanije instalirati, a i pošto je dokumentacija na Srpskom oskudna, ovaj proces cu malo bolje objasniti.
Takode skinemo postgresql-7.3.2.tar.gz sa www.postgresql.com na disk i krenemo sa instaliranjem:

Code:

# ./configure // standardno konfigurisanje
# gmake // kompajliranje              
# su // prebacivanje u superusera (root) ako vec niste
# gmake install // instaliranje
# adduser postgres // dodavanje usera. PSQL se mora pokretati pod odrenjem userom (postgres)
# mkdir /usr/local/pgsql/data // Pravljenje direktorija u kojem ce biti smještene baze
# chown postgres /usr/local/pgsql/data // Promjena vlastništva nad data folderom iz roota u postgres
# su - postgres // prebacivanje iz roota u postgres usera
# /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data // Setovanje DB foldera
# /usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql/data >logfile 2>&1 & // Pokretanje baze.
# /usr/local/pgsql/bin/createdb mydb // Kreiranje neke baze. Ime možet biti proizvoljno, npr. mydb
# /usr/local/pgsql/bin/psql mydb // Pristup mydb bazi preko konzole. Samo testiranje.


E sada da napomenem. Pošto je krajnje suludo da svaku put kada želite da radite nešto na svojim bazama budete postgres user jer je on predviden
samo da kljucna podešavanja i pokretanje baze napravite usera na bazi. Ako te želite uradite sledece kao postgres user.

Code:

# /usr/local/pgsql/bin/createuser username


U username stavite korisnicko ime koje najcešce radite na racunaru. npr. zidoo. Tako po defaultu kada radite komandu /usr/local/pgsql/bin/psql iz tog usera ne morate koristiti -u opciju.
Takode valja napomenuti da prilikom pokretanja baze opcija -i znaci TCP/IP mod. Ostale opcije možete vidjeti komandom /usr/local/pgsql/bin/postmaster --help.
Još luksuta radi u direktoriju /usr/local/pgsql/bin/ uradite ln psql /usr/bin da ne se davite putanjom.
Pošto smo PostgreSQL, nadam se, instalirali i pokrenuli ostaje nam još samo PHP.

c) Instalacija PHPa

Ja mislim da ovo i pticice na grani znaju. Sve je isto kao u prethodnih milion tutoriala samo ima jedna sitnica. Tejk a luk (naravno skinuli samo najnoviji php 4.3.1 lokalni disk):
Code:

# tar zvfx php-4.3.1.tar.gz
# cd php-4.3.1
# ./configure \
  --with-apxs2=/usr/local/apache2/bin/apxs/ \
  --with-pgsql=/usr/local/pgsql  // Stavite putanju gdje ste instalirali PostgreSQL.
# make
# make install


Kada ste sve to uradili još malo da doradimo Apache tacnije njegov httpd.conf koji se nalazi u /usr/local/apache2/conf/ i dodamo sledece linije:

Code:

LoadModule php4_module modules/phplib.so
AddType application/x-httpd-php .php


Sada restartuj te Apache sa /usr/local/apache2/bin/apachectl restart i isprovaj te neki PHP file. Ako ste uradili kako je napisano onda bi sve trebalo dihtati savršeno.

PHP i PostgreSQL
Ako ste radili sa mySQLom i PHPom onda vam prebacivanje na PostgreSQL nece biti ni malo bolno. Razlike su veoma male, pogotovo u osnovnim komandama. Uglavnom se na vecini komandi koji su zajedniške za obe baze umjesto sufiksa mysql nalazi pg. Mislim da ce vam poslje primjera sve biti jasno.

Ovaj code je primjer jednog jednostavnog shoutboxa. Sve se sastoji iz dva filea post.php i prewbox.php. prewbox je file koji cita iz baze i ispisuje rezultate na ekran, a post.php obraduje podatke primljene iz forme i upisuje ih u bazu. Napravite novi folder u kojem ce te pravitti sledece fajlove sa sledecim sadržajem. Krenimo redom:

Prvo napravi bazu. Pravlje baze sam objasni kod instalacije, a radi se komandom /usr/local/pgsql/bin/createdb mydb ako postgres user.
Dalje morate napraviti tabelu sa cetri kolone: nick, msg i datum. To se radi sledecim ovako:

Code:

~ psql mydb
mydb# CREATE TABLE sbox (nick varchar(12), msg varchar(300), datum varchar(28));
mydb# SELECT * FROM sbox;
mydb# +-------+------+---------+
mydb# |  nick |  msg |  datum  |
mydb# +-------+------+---------+


index.html - html forma i jedan iframe
Code:

<center><br><br><br>
<iframe src="prewbox.php" name="sbox" height="350" width="400" frameborder="0"></iframe>
<br><br>

<form method="post" action="post.php">
Nickname:<br><input type="text" size="21" name="nick"><br>
Password:<br><textarea cols="27" rows="5" name="msg"></textarea><br><br>
<input type="submit" value="Send">
</form>

</center>

U ovom html fajlu imam na pocetku jedan iframe u kojem ce se ucitavati vec napisane poruke (sve više sajtova koristi ovaj sistem sa iframeom). Sljedi obicna forma sa jednim dva input polja i jednom textareom. Simple.


prewbox.php - citanje postojecih postova
Code:

<?php

/*
ShoutBox by dr ZiDoo
Written on 30. April. 2003 @ 12:24
PostgreSQL edition
*/


$pgconn=pg_connect ("host=localhost port=5432 dbname=mydb user=username password=password"); //  *
if (!$pgconn) { // Obicna if petlja koja provjerava da li je konekcija uspjela
    exit("Ne mogu da se spojim na PostgreSQL server!!!");
}
else {
    $readbaby=pg_query ($pgconn, "SELECT * FROM sbox");                                
    if(!$readbaby) {
        exit("Ne mogu da citam podatke iz tabele! Ili je prazna ili nema nista u njoj");
    }
    else {
        $brojpostova_=pg_num_rows($readbaby); // Broj rowova u tabeli
        $brojpostova=$brojpostova_ - 1; // Petlja koja broji poruke unazad.
        for ($i=$brojpostova; $i >-1; $i--) {
            $r=pg_fetch_row($readbaby, $i);
            echo("Nick: $r[0] <br> Poruka: $r[1] <br> Vrijeme: $r[2] <br><br>"); // ISPIS. 
        }
        pg_close($pgconn); // Zatvaranje konekcije premo PostgreSQL serveru.
    }
}
?>


* - U ovu liniju stavite host/ip servera gdje je stavljen vaš PostgreSQL server, port (default je 5432), ime baze, username i password.
Sintaxa je: pg_connect("host post dbname user pass");

post.php - upisivanje u bazu
Code:

<?php

/*
ShotBox by dr ZiDoo
Written on 30. April. 2003 @ 12:24
PostgreSQL edition
*/

$nick=$_POST['nick'];        
$msg=$_POST['msg'];          
$datum=date('d.m.Y @ h::s');

if(!$nick OR !$msg) { // Gleda jesul sve ovce na broju...
    exit("<center>Niste unjeli nickname ili porku</center>"); // ...i ako nisu nema dalje
}
else {
    $sl_nick=strlen($nick); // Broji slova u nick.
    $sl_msg=strlen($msg); // Broji slova u poruci.      
    if(($sl_nick < 12) && ($sl_msg < 400)) { // Ako je broj slova i poruci uskladen sa polima u Postgres-u ide dalje...
        if(eregi( '<', $nick)) exit("<center>Zabranjena je upotreba html koda</center>"); // Zabranjuje <, samim ti i html code.
        if(eregi( '<', $msg)) exit("<center>Zabranjena je upotreba html koda</center>");  // Takode...
        $pgconn=pg_connect ("host=localhost port=5432 dbname=mydb user=username password="); // Podesi parametre potrebne za kacenje na bazu 
        if (!$pgconn) {
            exit("Ne mogu da se spojim na PostgreSQL server!!!"); // Ako nešto nije uredu sa konekcijom...
        }
        else {
            $readbaby=pg_query ($pgconn, "INSERT INTO sbox VALUES ('$nick', '$msg', '$datum')"); // Piše u bazu podataka. Sve skoro isto ko u mySQLu
            if(!$readbaby) {
                exit("<center>Ne mogu da pristupim toj tabeli</center>"); // Ako nešto ne dihta (ne postoji tabela...)
            }
            else {
                pg_close($pgconn);
                echo("<center><a href='index.html'>Back/Nazad</a></center>"); // Ako sve prde kako treba, ovo je put nazad...
            }
        }
    }
    else {
        echo("<center>Nick ne smije sadrzavati vise od 12 a poruka vise od 400 karaktera!</center>"); // Poruka o prekoracenju broja karaktera
    }
}
?>


Kao što vidite sve ovo je relativno jednostavno. Naravno necete PostgreSQL koristiti samo ta pokretanje shoutboxa. PostgreSQL može da zadovolji mnogo vece kriteriji i da "goni" velike bate podataka. PostgreSQL pokrece .org domenu što nije baš mali posao.
Postgres je potpuno opensource i potpuno besplatan software. Trenutno aktiva verzija je 7.3.2 i možete je besplatno downloadati sa www.postgres.com. Takode besplatni su i Apache i PHP (http://httpd.apache.org i http://www.php.net).

Iskreno se nadam da ce ovo bar nekome pomoci.


tu nema kašike....
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


+2 Profil

icon Re: Tutorial: Apache + PHP + PostgreSQL + primjeri 02.05.2003. u 14:08 - pre 267 meseci
Lijepo, lijepo, pohvala za ovaj tutorial.
Cestitam na trudu ulozenom za ovaj tutorial.
Cak sam se i nasmijao malkice :)
Code:

exit("Ne mogu da citam podatke iz tabele! Ili je prazna ili nema nista u njoj");

Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

dr ZiDoo
Banja Luka

Član broj: 189
Poruke: 1728
*.urc.rs.ba

Jabber: ZiDoo@elitesecurity.org
ICQ: 299539598
Sajt: zidoo.geek.rs.ba


Profil

icon Re: Tutorial: Apache + PHP + PostgreSQL + primjeri 02.05.2003. u 17:08 - pre 267 meseci
lolz i ja tek sada vidim...
tu nema kašike....
 
Odgovor na temu

[es] :: PHP :: Tutorial: Apache + PHP + PostgreSQL + primjeri

[ Pregleda: 2755 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

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