Newsgroup: it.comp.www.php
Titolo: Quello che doveva essere semplice sta diventando impossibile

Salve a tutti,
	ho php5 e postgresql8.3 . Ho settato i giusti parametri e sto 
utilizzando le classi di php per questo DB.
Il mio problema è sulle funzioni. Vorrei semplicemente scrivere una 
funzione che mi torni i vari record di una tabella. Sembra facile ma non 
mi viene.
Mi potreste postare un pezzo del vostro codice sia in php che su 
postgresql che richiami il risultato di una select per cortesia?
Ho seguito il manuale del DB e quello di php ma non riesco proprio a 
capire. Al max mi torna una colonna per ogni record con all'interno i 
valori del record. Ho sentito che si chiama tupla ma io non comprendo 
come mai a me, seguendo l'help, mi torna così.
Grazie!

 mi viene.
Posta il codice che hai scritto finora (togliendo le password, nel caso).
Bye.

>  (togliendo le password, nel caso).
:)

> Posta il codice che hai scritto finora (togliendo le password, nel caso).
- PHP
[cut]
$sqlquery = "select f_list();"
$result = pg_query($dbconn, $sqlquery);
$arr = pg_fetch_all($result);
while ($row = pg_fetch_row($arr))
{
   echo $row[0]."-".$row[1]."<br>";
}
[cut]
quando scrivo il risultato delle righe, tutto il risultato viene messo 
in $row[0] ed è qualcosa come:
{1,"test1"}
{2,"test2"}
invece che essere
1-test1
2-test2
Splittato quindi su $row[0] e $row[1]
- Postgresql
nel database vorrei scrivere una cosa tipo:
Select * from tabella;
return risultato;
Ma come si scrive?
Grazie!

 Ma come si scrive?
Questa parte non l'ho capita. Vuoi creare una stored procedure dentro il 
DB? O vuoi semplicemente dare una select e avere i risultati in PHP?
Bye.

Peca's ha scritto:

dai un occhiata qua:
http://pgedit.com/resource/php/pgfuncall

 DB? O vuoi semplicemente dare una select e avere i risultati in PHP?
La prima che hai detto. Vorrei creare una store procedure in postgresql 
che torni i record di una tabella. Sembra facile ma non capisco dove 
sbaglio. Gli es online non indicano bene come fare.

 
http://pgedit.com/resource/php/pgfuncall
Ti ringrazio ma nell'esempio la funzione postgresql torna un text io 
avrei bisogno che torni un array di record o cursore...

Peca's ha scritto:

sinceramnete è un bel pò che non faccio una cosa del genere e non ho
nemmeno un datase pg sottomano per provare ma devi scrivere qualcosa del
genere:
CREATE FUNCTION title(integer) RETURNS setof text
		AS 'SELECT title from books where id > $1'
		LANGUAGE 'sql';
il "setof" ti serve a dirgli che vuoi più di una row perchè di base
dalle funzioni ritorna 1 sola riga.
Ad esempio questa funzione ti ritorna tutti i titoli dei libri con id
maggiore di quello passato alla funzione. ok è stupido come esempio ma
cosi senza un pg davanti non mi veniva di meglio :)
michelangelo

 cosi senza un pg davanti non mi veniva di meglio :)
L'esempio funziona a meraviglia anche sul mio DB ;)
Ora secondo te come faccio a farmi tornare il record intero invece di 
una colonna per volta?
Ho provato a mettere Return record con il setof e mi restituisce si una 
serie di righe ma... sono messe tutte su una colonna:
(1,"test1",1)
(2,"test2",1)
(3,"test3",1)
(4,"test4",1)
(5,"test5",1)
(6,"test6",1)
Ma come mai sono formattate così?

 Ma come mai sono formattate così?
non ho mai provato ma credo che quella sia la rappresentazione che PHP
fa del set di dati di ritorno dalla procedura. Sta a te poi
"maneggiarla" come preferisci: con un ciclo ed una explode puoi
facilmente trasformarla in un array bidimensionale, ad esempio.
bye!

 facilmente trasformarla in un array bidimensionale, ad esempio.
Qualcosa tipo(preso dal manuale di php):
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *
Ma come gestisco più righe? ome lo splitto in array bidimensionali?
Grazie cmq dell'aiuto!!!