#!/usr/bin/perl #Es llegeix la cadena URL print("Content-Type: text/html\n\n"); read(STDIN, $buffer, $ENV{'CONTENT_LENGHT'}); #Contruim una llista de parelles clau/valor @parelles=split(/&/, $buffer); #Per a cada parella desxifrem el valor foreach $par (@parelles) { #Obtenim parelles nom-valor ($nom, $valor)= split(/=/, $par); #Traduim + per espai en blanc $valor =~ tr/+/ /; #Desxifrem els caracters hexadecimals $valor =~ s/%(..)/pack("C",hex($1))/ge; #Afegim la parella a la resta $contingut{$nom}=$valor; } ### Declaració de variables $pghost = 'localhost'; $pgport = '5432'; $pgoptions = ''; $pgtty = ''; $dbname = 'proba'; $trace = '/tmp/pgtrace.out'; $DEBUG = 1; $correcte = 1; use Pg; ### Connexió a la base de dades $conn=PQsetdb($pghost,$pgport,$pgoptions,$pgtty,$dbname); cmp_eq(PGRES_CONNECTION_OK, PQstatus($conn)); ### Debuger if ($DEBUG) { open(TRACE, ">$trace") || die "can not open $trace: $!"; PQtrace($conn, TRACE); } ### Insertem les dades exe(PGRES_COMMAND_OK, "begin"); $result = PQexec($conn, "fetch all in eportal"); cmp_eq(PGRES_TUPLES_OK, PQresultStatus($result)); $ntuples = PQntuples($result); PQclear($result); $res = exe(PGRES_COMMAND_OK, "close eportal"); cmp_eq("CLOSE", PQcmdStatus($res)); exe(PGRES_COMMAND_OK, "end"); if($ntuples==0) { $res=exe(PGRES_COMMAND_OK,"insert into dada values(\'$contingut{'nom'}\',\'$contingut{'cog1'}\', \'$contingut{'cog2'}\',\'$contingut{'edat'}\',\'$contingut{'sexe'}\')"); cmp_ne(0,PQoidStatus($res)); } ### Debuger if ($DEBUG) { close(TRACE) || die "bad TRACE: $!"; PQuntrace($conn); } ### Desconnexió de la base de dades PQfinish($conn); if ($correcte==1){ print <Què vols fer? Dades Insertades

Què vols fer?


Insertar FER } else { print <Dades no insertades

Dades no insertades

GRAN CAGADA

Què vols fer?

Insertar
CAGADA } ### funcions utilitzades sub cmp_eq { my $cmp = shift; my $ret = shift; if ("$cmp" eq "$ret") { $correcte = 1; } else { $correcte = 0; } } sub cmp_ne { my $cmp = shift; my $ret = shift; if ("$cmp" ne "$ret") { $correcte = 1; } else { $correcte = 0; } } sub exe { my $cmp = shift; my $cmd = shift; my $result; my $status; $result = PQexec($conn, $cmd); $status = PQresultStatus($result); if ("$cmp" eq "$status") { $correcte = 1; } else { $correcte = 0; print TRACE PQerrorMessage($conn); } return $result; }