Newsgroup: it.comp.www.php
Titolo: Aggiornamento di form

Premetto che mi sono avvicinato al PHP da circa un mesetto.
Ho realizzato un form nel quale vengono caricati e visualizzati dati
provenienti da un database, dove e' possibile che l'utente ne corregga i
valori (per intenderci, il valore caricato viene visualizzato in un input di
tipo text). Di questi valori vengono calcolate le somme. Le variabili,
inizializzate con i valori del db, sono associate ai vari elementi del form.
Per fare dei test, ho specificato nella action del form la pagina stessa
(mediante la variabile $php_self): <FORM action="<?php $PHP_SELF?>"
method="post">. Questo, nelle mie intenzioni, dovrebbe richiamare la pagina
stessa, aggiornando i campi a seconda dei valori inseriti.
Al primo caricamento il risultato delle somme dipende chiaramente dai valori
provenienti dal db.
Se l'utente effettua delle modifiche, pero', le somme andrebbero
ricalcolate, visualizzando la stessa pagina e dando la possibilita' di
effettuare altri "tentativi". Inceve, nisba.
Utilizzo degli array associativi per memorizzare i valori provenienti dal
db, ma quando clicco il pulsante che fa il submit, il form appare vuoto,
come se alla pressione del submit gli array venissero "unsettati". Se inceve
l'action del post viene impostata ad un'altra pagine, gli array risultano
perfettamente disponibili (meno male...), con i valori precedentemente
inseriti.
Chiedendo venia per la lunghezza del post, vorrei sapere se qualcuno puo'
darmi qualche indicazione sul modo in cui implementare questa azione.
Grazie,
Alessandro.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 "unsettati".
Stai usando le sessioni?
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.


Si.
PS l'array associativo utilizzato e' multidimensionale.
Es. $oggetto[$indice][attributo]


 ha scritto nel messaggio 
news:217Z220Z55Z242Y...@usenet.libero.it...



Nel tentativo di capire come vengono gestiti i passaggi di variabili tra i
form, ho testato questo script. Il collegamento avviene ad un db MSSQL.
[...]
<?php
session_start();
if (!IsSet($self))
{
// connessione al db
$dbh=sybase_connect($server,$user,$pwd);
// selezione del db
$db=sybase_select_db($database);
// formulazione query
$query="SELECT * from TABELLA";
// esecuzione query
$query_ris=sybase_query($query);
// conteggio righe
$righe=sybase_num_rows($query_ris);
// assegno il num. di righe al primo elemento del vettore test
$test[0]=$righe;
// al secondo elemento assegno una costante
$test[1]=15;
// Chiusura connessione
sybase_close($dbh);
}
?>
<HTML>
<BODY>
[...]
<FORM action="<?php $_SERVER['PHP_SELF']?>" method="POST">
echo $test[0],"<BR>";
echo $test[1],"<BR>";
[...]
<INPUT type="submit" value="Continua">
<INPUT type="hidden" name="self" value="1">
</FORM>
[...]
</BODY>
</HTML>
Quando lo script viene eseguito per la prima volta, entrami gli elementi del
vettore test contengono lo stesso valore.
Quando lo script viene richiamato dal submit, il primo elemento vale zero,
mentre il secondo mantiene il valore precedente.
La variabile $self e' un trucco per evitare che le query vengano eseguite
ancora alla pressione del submit.
Qualcuno mi puo' illuminare? Dove sbaglio? Mi sto spaccando la testa su una
probabile fesseria, che pero' non riesco a intuire. Ho anche provato a
togliere la riga che effettua la disconnessione al database, ma nulla
cambia.


 <FORM action="<?php $_SERVER['PHP_SELF']?>" method="POST">
Forse intendevi <?php print ($_SERVER['PHP_SELF']); ?>
-- 
I am what I am, I do what I can



Forse l'esempio sopra ha sviato il tema.
Vorrei rendere l'idea di quel che sto cercando di fare:
carico dei dati da una tabella di un db in un array multidimensionale, in
cui pero' dei campi possono essere modificati dall'utente (es. inserimento
di note oppure di valori numerici). Il tutto viene visualizzato in una
tabella HTML, con alcuni campi non editabili, mentre altri lo sono.
Chiaramente uso degli input di tipo text per consentire gli inserimenti
dell'utente, mentre per i campi non modificabili visualizzo semplicemente
l'elemento dell'array con un echo.
Visto che alcuni dei campi editabili sono numerici, dei quali devo calcolare
dei totali, vorrei effettuare un "aggiornamento" della pagina, al fine di
avere il ricalcolo. Al termine di questa fase, procedo con un ulteriore
script che effettua l'inserimento dei dati raccolti in un'altra tabella di
un altro db.
Il problema e' che mentre le variabili assegnate agli elementi di input
vengono correttamente passate alla pressione di submit, gli elementi
dell'array vengono come persi, e le celle corrispondenti ai suoi elementi
risultano essere vuote.
Non posso utilizzare inut di tipo hidden per il passaggio dei valori perche'
la dimensione della tabella non e' nota a priori.
Ogni suggerimento e' prezioso!



Ho risolto il problema.
Basta registrare l'array nell'ambito della sessione, dopodiche' risulta
disponibile.
Alessandro
