Newsgroup: it.comp.www.php
Titolo: insert into e aggiornamento finestre browser

Ciao a tutti, il mio problema sulla pagina di cui includo un estratto è il seguente:
ogni volta che un utente clicca sul tasto F5 della propria tastiera viene eseguito
nuovamente l' INSERT INTO e viene assegnato nuovamente il codice automatico. Il
risultato è di avere una potenzialmente infinita serie di doppioni inutili sul
DB!
Come posso rimediare a questo inconveniente e dove sbaglio? GRAZIE MILLE A CHIUNQUE
POSSA AIUTARMI A VENIRNE FUORI....
<?php
session_start(  );
session_register("formVars");
if (isset($button1_x))  {	
// AZIONI DA ESEGUIRE DOPO AVER PREMUTO IL SUBMIT: SE PREMO F5 QUANDO SONO ARRIVATA
A QUESTO PUNTO LE INFORMAZIONI DI QUESTA SCHERMATA (LA SECONDA DELLA PAGINA ) VENGONO
REINVIATE ALL'INFINITO!
 
include("../includes/connessione");
$result = mysql_query("SELECT * FROM form", $db); 
$num_rows = mysql_num_rows($result) +1; 	
$zeri="";
if ($num_rows<10) 
$zeri="000";
if ($num_rows >=10 && $num_rows<100) 
$zeri="00";
if ($num_rows >=100 && $num_rows<1000) 
$zeri="0";
$codice_contr= "ADSL/".$zeri . $num_rows; 
//ASSEGNO IN AUTOMATICO UN CODICE CONTRATTO BASANDOMI SUL NUMERO DI RIGHE GIA'
PRESENTI NEL DB
$sql = "INSERT INTO form ( CIRCA 40 CAMPI MEMORIZZATI IN SESSIONE) ) VALUES (I
VALORI DELL'ARRAY FORMVARS)";
$result = mysql_query($sql,$db);
/ /INSERISCO IN MYSQL
?>
<p class="verde"> Le informazioni richieste sono state memorizzate.<br>
<?php 
$result3 = mysql_query("SELECT * FROM agenti WHERE codice='$formVars[auth]' ",$db);
$my = mysql_fetch_array($result3);
if ($stato=="da confermare") { ?>
<p class="verde"> Le informazioni richieste sono state memorizzate.<br>
 Il contratto con codice provvisorio <b><?php echo $codice_contr; ?></b> &egrave;
nello stato "<?php echo $stato ?>" e si trova nella coda di</p>
<p><b> <?php echo $my[nominativo]; ?></b></p>
 
<?php ANCORA UNPO' DI CODICE... 
$formVars=array();?>	
 ... E UN PO' DI HTML....				
mysql_close(); 
} else {	//MOSTRO LA PRIMA SCHERMATA DELLA PAGINA ?>
<html>
<head></head>
<body>
<form method="post" action="<?php echo $PHP_SELF ?>">
UN PAIO DI TEXT E DI RADIO...
<input type="image" name="button1" src="../images/bottoni/b_conferma.gif" border="0"
/>
</form>				
</body>	
</html>
 
--
Enjoy the .NET community! ASPItalia.com
 
http://forum.aspitalia.com/
 
http://www.aspitalia.com/

VALORI DELL'ARRAY FORMVARS)";
Gia' che sono a scrivere codice:
	$Campi = array(
		'ragionesociale'	=> '[A-Z][A-Z a-z]*',
		...
	);
 
	$SQLFlds = '';
	$SQLVals = '';
	$Comma   = '';
	while(list($field, $regexp) = each($Campi))
	{
		// Qui si potrebbe fare una interessante estensione
		// usando regexp :-)
		$SQLFlds .= $Comma . $field;
		$SQLVals .= $Comma . "'".AddSlashes($_SESSION[$field])."'";
		$Comma   = ', ';
	}
	$sql = "INSERT INTO form ($SQLFlds) VALUES ($SQLVals);";
Sembra complicato, ma poi manutenerlo e' una passeggiata :-)
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

....piu' veloce il codice MySQL, e se devi aggiungere zeri fai prima :-)



Grazie delle dritte, mo' ci provo!
Prova anche a quotare[1] un po' meglio magari, prima che ti plonki
[2] il colto e l'inclita... :-)
Leonardo
[1] "rispondere eliminando dal post precedente le parti inutili ai
    fini della risposta, ed inserendo la risposta SOTTO al testo a
    cui si risponde"
[2] voce dell'inesistente verbo plonkare[3]
[3] "plonkare qlcu.": decidere che e' cosi' complicato e stremante
    leggere i messaggi di qlcu., che non ne vale la pena; e quindi
    istruire il proprio newsreader a non fare comparire piu' alcun
    messaggi di questo qlcu., come se avesse smesso di scrivere.
