PHP-PostgreSQL Functions: programació PHP. Procediments
Funcions de la llibreria PostgreSQL per a PHP:
http://es.php.net/manual/en/ref.pgsql.php
Contingut
- 1 objectiu
- 2 dades que utilitzem
- 3 fer una select bàsica: recordset.php
- 4 proc1.php: execució bàsica d'un procediment
- 5 proc2.php: passar paràmetres d'entrada
- 6 proc3.php: passant paràmetres des d'una variable PHP
- 7 proc4.php: paràmetres d'entrada i de sortida
- 8 proc4b.php: paràmetres d'entrada i de sortida II
- 9 proc5.php: cridar a una funció
- 10 inserir_empleat.php: formulari per introduir valors
- 11 Annex
objectiu
Igual que hem fet amb Oracle, en aquests exercicis mostrarem les operacions bàsiques per accedir a la base de dades PostgreSQL, posant especial ènfasi en l'execució de procediments i passar paràmetres i rebre informació d'aquests procediments. Aquests exercicis estan testejats sobre Ubuntu.
Primer de tot preparem la base de dades sobre la que treballarem:
$ psql -h localhost -p 5432 -U postgres postgres postgres# CREATE DATABASE empleat ENCODING 'UTF-8'; postgres=# CREATE USER profe WITH ENCRYPTED PASSWORD 'profe'; postgres=# grant all privileges on database empleat to profe; postgres=# \q $ psql -h localhost -p 5432 -U postgres empleat empleat=# CREATE LANGUAGE plpgsql; postgres=# \q $ psql -h localhost -p 5432 -U profe empleat
En el servidor, el codi està a /var/www/ec/empleat/postgresql, i puc accedir al codi des de la direcció
http://192.168.0.10/ec/empleat/postgresql/
Això està configurat en el Apache (/etc/apache2/sites-available/default)
dades que utilitzem
CREATE TABLE empleat (
id_empleat integer PRIMARY KEY,
nom varchar(25) NOT NULL,
cognom varchar(25) NOT NULL,
funcio varchar(25),
mail varchar(25),
sexe char(1)
);
INSERT INTO empleat VALUES (2, 'Maria', 'Cirera', 'Administrador Sistemes', 'mcirera@jbalmes.net', 'D');
INSERT INTO empleat VALUES (3, 'Carme', 'Puig', 'Administrador Sistemes', 'cpuig@jbalmes.net', 'D');
INSERT INTO empleat VALUES (4, 'Joan', 'Pujol', 'Programador Java', 'jpujol@jbalmes.net', 'H');
INSERT INTO empleat VALUES (5, 'Rita', 'Vilarmau', 'Programador VB.NET', 'rvilarmau@jbalmes.net', 'D');
INSERT INTO empleat VALUES (6, 'Anna', 'Puigdollers', 'Programador Web', 'apuigdollers@jbalmes.net', 'D');
INSERT INTO empleat VALUES (7, 'Marta', 'Barceló', 'Programador Web', 'mbarcelo@jbalmes.net', 'D');
INSERT INTO empleat VALUES (9, 'Núria', 'Perelló', 'Dissenyador web', 'nperello@jbalmes.net', 'D');
INSERT INTO empleat VALUES (10, 'Guillem', 'Raspall', 'HelpDesk', 'graspall@jbalmes.net', 'H');
INSERT INTO empleat VALUES (11, 'Esteve', 'Llorens', 'HelpDesk', 'ellorens@jbalmes.net', 'H');
INSERT INTO empleat VALUES (12, 'Raimon', 'Compte', 'Administratiu', 'rcompte@jbalmes.net', 'H');
INSERT INTO empleat VALUES (13, 'Josep', 'Vicenç', 'Administratiu', 'jvicenc@jbalmes.net', 'H');
INSERT INTO empleat VALUES (14, 'Toni', 'Cirici', 'Comercial', 'tcirici@jbalmes.net', 'H');
INSERT INTO empleat VALUES (15, 'Claudi', 'Pellicer', 'Comercial', 'cpellicer@jbalmes.net', 'H');
INSERT INTO empleat VALUES (16, 'Raquel', 'Valldemossa', 'Directiu', 'rvalldemossa@jbalmes.net', 'D');
INSERT INTO empleat VALUES (17, 'Bruna', 'E.', 'Directiu', 'bruna_e@jbalmes.net', 'D');
INSERT INTO empleat VALUES (18, 'Clara', 'D.', 'Directiu', 'clara_d@jbalmes.net', 'D');
INSERT INTO empleat VALUES (19, 'Marieta', 'C.', 'Directiu', 'marieta_c@jbalmes.net', 'D');
INSERT INTO empleat VALUES (20, 'M. Carme', 'B.', 'Directiu', 'carme_b@jbalmes.net', 'D');
INSERT INTO empleat VALUES (21, 'M. Assumpta', 'A.', 'Administrador Sistemes', 'assumpta_a@jbalmes.net', 'D');
INSERT INTO empleat VALUES (22, 'Queralt', 'Z.', 'Administrador Sistemes', 'queralt_z@jbalmes.net', 'D');
INSERT INTO empleat VALUES (23, 'Núria', 'Y.', 'Administrador Sistemes', 'nuria_y@jbalmes.net', 'D');
INSERT INTO empleat VALUES (24, 'Patrícia', 'X.', 'Administrador Sistemes', 'patricia_x@jbalmes.net', 'D');
INSERT INTO empleat VALUES (25, 'Sumpta', 'W.', 'Administrador Sistemes', 'sumpta_w@jbalmes.net', 'D');
INSERT INTO empleat VALUES (26, 'Clara', 'V.', 'Administrador Sistemes', 'clara_v@jbalmes.net', 'D');
INSERT INTO empleat VALUES (27, 'Quim', 'U.', 'Administrador Sistemes', 'quim_u@jbalmes.net', 'H');
INSERT INTO empleat VALUES (28, 'Quimet', 'T.', 'Administrador Sistemes', 'quimet_t@jbalmes.net', 'H');
INSERT INTO empleat VALUES (29, 'Xavi', 'S.', 'Programador Java', 'xavi_s@jbalmes.net', 'H');
INSERT INTO empleat VALUES (30, 'Xavier', 'R.', 'Programador Java', 'xavier_r@jbalmes.net', 'H');
INSERT INTO empleat VALUES (31, 'Roc', 'Q.', 'Programador Java', 'roc_q@jbalmes.net', 'H');
INSERT INTO empleat VALUES (32, 'Pere', 'P.', 'Programador Java', 'pere_p@jbalmes.net', 'H');
INSERT INTO empleat VALUES (33, 'Perot', 'O.', 'Programador Java', 'perot_o@jbalmes.net', 'H');
INSERT INTO empleat VALUES (34, 'Galdrich', 'N.', 'Programador VB.NET', 'galdrich_n@jbalmes.net', 'H');
INSERT INTO empleat VALUES (35, 'Guifré', 'M.', 'Programador VB.NET', 'guifre_m@jbalmes.net', 'H');
INSERT INTO empleat VALUES (36, 'Jofre', 'L.', 'Programador VB.NET', 'jofre_l@jbalmes.net', 'H');
INSERT INTO empleat VALUES (37, 'Tomeu', 'K.', 'Programador VB.NET', 'tomeu_k@jbalmes.net', 'H');
INSERT INTO empleat VALUES (38, 'Tomàs', 'J.', 'Programador VB.NET', 'tomas_j@jbalmes.net', 'H');
INSERT INTO empleat VALUES (39, 'Tània', 'I.', 'Dissenyador web', 'tania_i@jbalmes.net', 'D');
INSERT INTO empleat VALUES (40, 'Guim', 'H.', 'Dissenyador web', 'guim_h@jbalmes.net', 'H');
INSERT INTO empleat VALUES (41, 'Andreu', 'G.', 'Dissenyador web', 'andreu_g@jbalmes.net', 'H');
INSERT INTO empleat VALUES (42, 'Santi', 'F.', 'Dissenyador web', 'santi_f@jbalmes.net', 'H');
INSERT INTO empleat VALUES (43, 'Santiago', 'E.', 'Dissenyador web', 'santiago_e@jbalmes.net', 'H');
INSERT INTO empleat VALUES (44, 'Jaume', 'D.', 'HelpDesk', 'jaume_d@jbalmes.net', 'H');
INSERT INTO empleat VALUES (45, 'Ramon', 'C.', 'HelpDesk', 'ramon_c@jbalmes.net', 'H');
INSERT INTO empleat VALUES (46, 'Llorenç', 'B.', 'Comercial', 'llorenc_b@jbalmes.net', 'H');
INSERT INTO empleat VALUES (47, 'Esteve', 'A.', 'Comercial', 'esteve_a@jbalmes.net', 'H');
INSERT INTO empleat VALUES (1, 'Pere', 'Batista', 'Administrador Sistemes', 'pbatista@jbalmes.net', 'H');
INSERT INTO empleat VALUES (8, 'Jordi', 'Basses', 'Dissenyador web', 'jbasses@jbalmes.net', 'H');
COMMIT;
fer una select bàsica: recordset.php
Per obtenir la informació d'una consulta (SELECT) hi ha diverses funcions que poden ser útils: pg_fetch_all, pg_fetch_array, pg_fetch_row.
$result = pg_query($conn, $query);
Amb pg_query executem la query, pròpiament dit, i amb la funció pg_fetch_all omplim la matriu $arr, que és una matriu amb tantes columnes com té la SELECT, i amb tantes files com retorna la select.
<?php
header("Content-Type: text/html; charset=utf-8");
//postgresql connection variables
$pg_user = 'postgres'; //username
$pg_pass = 'postgres'; //user password
$pg_host = 'localhost'; //host name or server ip address
$pg_db = 'postgres'; //database name
$conn_string = "host=$pg_host port=5432 dbname=$pg_db user=$pg_user password=$pg_pass";
$conn = pg_connect($conn_string) or die('connection failed');;
if (!$conn) {
echo "Hi ha hagut un error en la connexió.\n";
exit;
}
echo "Mostrem una llista de tots els empleats<br />";
echo "=======================================<br /><br />";
$query = "select * from empleat order by id_empleat";
$result = pg_query($conn, $query);
if (!$result) {
echo "Hi ha hagut un error en fer la query\n";
exit;
}
$arr = pg_fetch_all($result);
echo "<p>la funció var_dump volca el contingut d'una matriu a pantalla:</p>";
var_dump($arr);
echo "<p>Ara mostrem les dades en un format més comprensible (i amb un codi molt reduït!):</p>";
echo '<table>';
while($row=pg_fetch_assoc($result)) echo '<tr><td>'.join('</td><td>',$row).'</td></tr>';
echo '</table>';
pg_close($conn); //de fet, no cal
?>
proc1.php: execució bàsica d'un procediment
Fixem-nos que aquest procediment és molt tonto... la segona vegada que s'executi donarà un error de clau primària.
CREATE OR REPLACE FUNCTION inserir_empleat() RETURNS void AS $$ BEGIN INSERT INTO EMPLEAT(id_empleat,nom,cognom) VALUES(50,'Pere','Poma'); RETURN; END; $$ LANGUAGE plpgsql; per executar el procediment: select inserir_empleat();";
Fitxer proc1.php:
<?php
header("Content-Type: text/html; charset=utf-8");
// CREATE OR REPLACE FUNCTION inserir_empleat() RETURNS void AS $$
// BEGIN
// INSERT INTO EMPLEAT(id_empleat,nom,cognom) VALUES(50,'Pere','Poma');
// RETURN;
// END;
// $$ LANGUAGE plpgsql;
//postgresql connection variables
$pg_user = 'profe'; //username
$pg_pass = 'profe'; //user password
$pg_host = 'localhost'; //host name or server ip address
$pg_db = 'empleat'; //database name
$conn_string = "host=$pg_host port=5432 dbname=$pg_db user=$pg_user password=$pg_pass";
$conn = pg_connect($conn_string) or die('connection failed');;
if (!$conn) {
echo "Hi ha hagut un error en la connexió.\n";
exit;
} else {
$query = "SELECT inserir_empleat()";
$result = pg_query($conn, $query);
if (!$result) {
echo "An error occured.\n";
exit;
}
echo "S'ha afegit l'empleat Pere Poma<br />";
}
pg_close($conn);
?>
proc2.php: passar paràmetres d'entrada
El primer que farem per no tenir problemes amb les claus primàries és crear una seqüència:
CREATE SEQUENCE empleat_seq
START WITH 100
INCREMENT BY 1;
select nextval('empleat_seq');
select currval('empleat_seq');
Fixem-nos que ara amb la sentència
$query = "SELECT inserir_empleat2('Maria','Batllori')";
ja estic parametritzant el valor que introdueixo a la base de dades, però estic introduint sempre el mateix valor.
Fitxer proc2.php:
<?php
header("Content-Type: text/html; charset=utf-8");
// CREATE OR REPLACE FUNCTION inserir_empleat2(vnom varchar, vcognom varchar) RETURNS void AS $$
// BEGIN
// INSERT INTO EMPLEAT(id_empleat,nom,cognom) VALUES(nextval('empleat_seq'),vnom,vcognom);
// RETURN;
// END;
// $$ LANGUAGE plpgsql;
//postgresql connection variables
$pg_user = 'profe'; //username
$pg_pass = 'profe'; //user password
$pg_host = 'localhost'; //host name or server ip address
$pg_db = 'empleat'; //database name
$conn_string = "host=$pg_host port=5432 dbname=$pg_db user=$pg_user password=$pg_pass";
$conn = pg_connect($conn_string) or die('connection failed');;
if (!$conn) {
echo "Hi ha hagut un error en la connexió.\n";
exit;
} else {
$query = "SELECT inserir_empleat2('Maria','Batllori')";
$result = pg_query($conn, $query);
if (!$result) {
echo "An error occured.\n";
exit;
}
echo "S'ha afegit l'empleada Maria Batllori<br />";
}
pg_close($conn);
?>
proc3.php: passant paràmetres des d'una variable PHP
La novetat rau en el següent codi:
$vnom='Jordi';
$vcognom='Martínez';
$query = "SELECT inserir_empleat2('$vnom','$vcognom')";
Fitxer proc3.php:
<?php
header("Content-Type: text/html; charset=utf-8");
// CREATE OR REPLACE FUNCTION inserir_empleat2(vnom varchar, vcognom varchar) RETURNS void AS $$
// BEGIN
// INSERT INTO EMPLEAT(id_empleat,nom,cognom) VALUES(nextval('empleat_seq'),vnom,vcognom);
// RETURN;
// END;
// $$ LANGUAGE plpgsql;
//postgresql connection variables
$pg_user = 'profe'; //username
$pg_pass = 'profe'; //user password
$pg_host = 'localhost'; //host name or server ip address
$pg_db = 'empleat'; //database name
$vnom='Jordi';
$vcognom='Martínez';
$conn_string = "host=$pg_host port=5432 dbname=$pg_db user=$pg_user password=$pg_pass";
$conn = pg_connect($conn_string) or die('connection failed');;
if (!$conn) {
echo "Hi ha hagut un error en la connexió.\n";
exit;
} else {
$query = "SELECT inserir_empleat2('$vnom','$vcognom')";
$result = pg_query($conn, $query);
if (!$result) {
echo "An error occured.\n";
exit;
}
echo "S'ha afegit l'empleat $vnom $vcognom<br />";
}
pg_close($conn);
?>
proc4.php: paràmetres d'entrada i de sortida
Fixem-nos en el següent exemple:
CREATE FUNCTION sum_n_product (x int, y int, OUT sum int, OUT product int) AS 'SELECT $1 + $2, $1 * $2' LANGUAGE SQL; SELECT * FROM sum_n_product(11,42); sum | product -----+--------- 53 | 462 (1 row)
Fixem-nos com definim ara el procediment inserir_empleat3. Aquest procediment retorna, com si fos una funció, el número d'empleats que tenim. Des de PHP visualitzarem el valor que retorna el procediment.
CREATE OR REPLACE FUNCTION inserir_empleat3(vnom varchar, vcognom varchar, vnum_empleats OUT integer) AS $$
BEGIN
INSERT INTO EMPLEAT(id_empleat,nom,cognom) VALUES(nextval('empleat_seq'),vnom,vcognom);
SELECT COUNT(*) INTO vnum_empleats FROM EMPLEAT;
END;
$$ LANGUAGE plpgsql;
prova:
select inserir_empleat3('Pere','Riudellots');
inserir_empleat3
------------------
141
Fitxer proc4.php:
<?php
header("Content-Type: text/html; charset=utf-8");
// CREATE OR REPLACE FUNCTION inserir_empleat3(vnom varchar, vcognom varchar, OUT vnum_empleats integer) AS $$
// BEGIN
// INSERT INTO EMPLEAT(id_empleat,nom,cognom) VALUES(nextval('empleat_seq'),vnom,vcognom);
// SELECT COUNT(*) INTO vnum_empleats FROM EMPLEAT;
// END;
// $$ LANGUAGE plpgsql;
//postgresql connection variables
$pg_user = 'profe'; //username
$pg_pass = 'profe'; //user password
$pg_host = 'localhost'; //host name or server ip address
$pg_db = 'empleat'; //database name
$vnom="Martí";
$vcognom="Tresserres";
$vnum_empleats=0;
$conn_string = "host=$pg_host port=5432 dbname=$pg_db user=$pg_user password=$pg_pass";
$conn = pg_connect($conn_string) or die('connection failed');;
if (!$conn) {
echo "Hi ha hagut un error en la connexió.\n";
exit;
} else {
$query = "SELECT inserir_empleat3('$vnom','$vcognom')";
$result = pg_query($conn, $query);
if (!$result) {
echo "An error occured.\n";
exit;
} else {
$row=pg_fetch_assoc($result);
$vnum_empleats=$row['inserir_empleat3'];
echo "S'ha afegit l'empleat $vnom $vcognom<br />";
echo "Número d'empleats: $vnum_empleats<br />";
}
}
pg_close($conn);
?>
proc4b.php: paràmetres d'entrada i de sortida II
Què passa si tenim varis paràmetres de sortida? Com es gestiona? Anem a veure-ho amb un exemple.
CREATE OR REPLACE FUNCTION inserir_empleat3b(vnom varchar, vcognom varchar, OUT vhomes integer, OUT vdones integer) AS $$
BEGIN
INSERT INTO EMPLEAT(id_empleat,nom,cognom) VALUES(nextval('empleat_seq'),vnom,vcognom);
SELECT COUNT(*) INTO vhomes FROM EMPLEAT WHERE sexe='H';
SELECT COUNT(*) INTO vdones FROM EMPLEAT WHERE sexe='D';
END;
$$ LANGUAGE plpgsql;
select inserir_empleat3b('Pere','Quintana');
inserir_empleat3b
-------------------
(29,18)
(1 fila)
Veiem que el resultat és un cadena en forma de array. Fàcilment amb php puc destriar el primer element i el segon element, i ficar-los en les variables. És d'aquesta manera que es gestionen els paràmetres de sortida.
Fitxer proc4b.php:
<?php
header("Content-Type: text/html; charset=utf-8");
// CREATE OR REPLACE FUNCTION inserir_empleat3b(vnom varchar, vcognom varchar, OUT vnum_empleats integer, OUT vnum_empleats2 integer) AS $$
// BEGIN
// INSERT INTO EMPLEAT(id_empleat,nom,cognom) VALUES(nextval('empleat_seq'),vnom,vcognom);
// SELECT COUNT(*),count(*)+2 INTO vnum_empleats,vnum_empleats2 FROM EMPLEAT;
// END;
// $$ LANGUAGE plpgsql;
// select inserir_empleat3b('Pere','Quintana');
//postgresql connection variables
$pg_user = 'profe'; //username
$pg_pass = 'profe'; //user password
$pg_host = 'localhost'; //host name or server ip address
$pg_db = 'empleat'; //database name
$vnom="Martí";
$vcognom="Tresserres";
$vtotal=0;
$vhomes=0;
$vdones=0;
$conn_string = "host=$pg_host port=5432 dbname=$pg_db user=$pg_user password=$pg_pass";
$conn = pg_connect($conn_string) or die('connection failed');;
if (!$conn) {
echo "Hi ha hagut un error en la connexió.\n";
exit;
} else {
$query = "SELECT inserir_empleat3b('$vnom','$vcognom')";
$result = pg_query($conn, $query);
if (!$result) {
echo "An error occured.\n";
exit;
} else {
$row=pg_fetch_assoc($result);
$vtotal=$row['inserir_empleat3b'];
echo "S'ha afegit l'empleat $vnom $vcognom<br />";
echo "Número d'empleats amb sexe: $vtotal<br />";
echo "Ara hem de separar aquest resultat en les dues parts i ficar-ho a les variables vhomes i vdones<br />";
}
}
pg_close($conn);
?>
proc5.php: cridar a una funció
Les funcions retornen un valor. Una manera de cridar la funció i recuperar el valor que retorna és ficar-la a dins d'una select:
$query = "select num_empleats";
Per exemple, la calculadora SQL i l'aplicació Hola món SQL són:
SQL> select 4*6; SQL> select 'Hola món';
fitxer proc5.php
<?php
header("Content-Type: text/html; charset=utf-8");
// CREATE OR REPLACE FUNCTION num_empleats() RETURNS integer AS $$
// DECLARE
// vnum_empleats integer;
// BEGIN
// SELECT COUNT(*) INTO vnum_empleats FROM EMPLEAT;
// RETURN vnum_empleats;
// END;
// $$ LANGUAGE plpgsql;
//postgresql connection variables
$pg_user = 'profe'; //username
$pg_pass = 'profe'; //user password
$pg_host = 'localhost'; //host name or server ip address
$pg_db = 'empleat'; //database name
$conn_string = "host=$pg_host port=5432 dbname=$pg_db user=$pg_user password=$pg_pass";
$conn = pg_connect($conn_string) or die('connection failed');;
if (!$conn) {
echo "Hi ha hagut un error en la connexió.\n";
exit;
} else {
$query = "SELECT num_empleats()";
$result = pg_query($conn, $query);
if (!$result) {
echo "An error occured.\n";
exit;
} else {
$row=pg_fetch_assoc($result);
$vnum_empleats=$row['num_empleats'];
echo "Número d'empleats: $vnum_empleats<br />";
}
}
pg_close($conn);
?>
inserir_empleat.php: formulari per introduir valors
Finalment, els valors de l'empleat que introduiré a la base de dades vindran normalment d'un formulari:
Fitxer inserir_empleat.php (formulari):
<!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" xml:lang="es" lang="es"> <head> <meta http-equiv="content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="./css_style.css" media="screen" title="LangTrainer" /> <title>Inserir Empleat. PHP + PostgreSQL</title> </head> <body> <h2>Formulari d'inserció d'un empleat</h2> <form name="form_empleat" method="post" action="inserir_empleat2.php" > <label style="width: 70px;">Nom:</label> <input id="txt" name="nom" style="width:100px;" value="" /> <br /> <label style="width: 70px;">Cognom:</label> <input id="txt" name="cognom" style="width:100px;" value="" /> <br /> <input type="submit" style="margin-left: 75px;" value="Inserir"/> </form> </body> </html>
Fitxer inserir_empleat2.php (recull les dades del formulari):
<?php
header ("Content-Type: text/html; charset=utf-8");
$vnom=trim($_POST['nom']);
$vcognom=trim($_POST['cognom']);
//postgresql connection variables
$pg_user = 'profe'; //username
$pg_pass = 'profe'; //user password
$pg_host = 'localhost'; //host name or server ip address
$pg_db = 'empleat'; //database name
$conn_string = "host=$pg_host port=5432 dbname=$pg_db user=$pg_user password=$pg_pass";
$conn = pg_connect($conn_string) or die('connection failed');;
?>
<!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" xml:lang="es" lang="es">
<head>
<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="./css_style.css" media="screen" title="LangTrainer" />
<title>Inserir Empleat. PHP + PostgreSQL</title>
</head>
<body>
<h2>Resultat de la inserció d'un empleat</h2>
<?php
if (!$conn) {
echo "Hi ha hagut un error en la connexió.\n";
exit;
} else {
if ($vnom<>"" & $vcognom<>"") {
$query = "SELECT inserir_empleat2('$vnom','$vcognom')";
$result = pg_query($conn, $query);
if (!$result) {
echo "An error occured.\n";
exit;
}
echo "S'ha afegit l'empleat $vnom $vcognom<br />";
} else {
echo "Has de proporcionar un nom i un cognom per a l'empleat que vols introduir.";
}
}
pg_close($conn);
?>
</body>
</html>
Annex
Pàgina web per ajuntar tot el codi, fitxer index.html:
<!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" xml:lang="es" lang="es"> <head> <meta http-equiv="content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="./css_style_langtrainer.css" media="screen" title="LangTrainer" /> <title>Inserir Empleat. PHP + PostgreSQL + llibreria nadiua</title> </head> <body> <h2>Tutorial Accés a dades: PHP + PostgreSQL amb llibreria nadiua</h2> <ul> <li><a href="recordset.php">recordset.php</a>: fer una select bàsica</li> <li><a href="proc1.php">proc1.php</a>: execució bàsica d'un procediment</li> <li><a href="proc2.php">proc2.php</a>: passar paràmetres d'entrada</li> <li><a href="proc3.php">proc3.php</a>: passant paràmetres des d'una variable PHP</li> <li><a href="proc4.php">proc4.php</a>: paràmetres d'entrada i 1 paràmetre de sortida</li> <li><a href="proc4b.php">proc4b.php</a>: paràmetres d'entrada i 2 paràmetres de sortida</li> <li><a href="proc5.php">proc5.php</a>: cridar a una funció</li> <li><a href="inserir_empleat.php">inserir_empleat.php</a>: formulari per introduir valors</li> </ul> </body> </html>
Full d'estils, css_style.css:
body {
padding-left: 11em;
font-family: Verdana, helvetica,arial, sans-serif;
color: purple;
background-color: #a8da3a
}
ul.navbar {
list-style-type: none;
padding: 0;
margin: 0;
position: absolute;
top: 2em;
left: 1em;
width: 9em
}
h1 {
font-family: Verdana, Helvetica, Geneva, Arial,
SunSans-Regular, sans-serif
}
ul.navbar li {
background: white;
margin: 0.5em 0;
padding: 0.3em;
border-right: 1em solid black
}
ul.navbar a {
text-decoration: none
}
a:link {
color: blue
}
a:visited {
color: purple
}
address {
margin-top: 1em;
padding-top: 1em;
border-top: thin dotted
}
creat per Joan Quintana Compte, abril 2009