Salve a tutti !!,
sono a chiedere aiuto perchè sto uscendo pazzo ..........
Dopo aver smanettato un pochino ho deciso di costruire per prova una form di inserimento dati in un db.
Inizialmente ho fatto la classica paginetta salvadati.php dove ho messo la query e dall'altra con il metodo post o get (ho provato tutti e due) inviavo i dati al db .... tutto funzionava.
Poi ho deciso di usare l'action $_SERVER['PHP_SELF'] al fine di far rimanere form e query nella stessa pagina..... e qua sono cominciati i problemi .... ho provato a fare di tutto dalle sessioni alle if nidificate ( in questo caso i dati non venivano passati al db quindi non venivano inseriti) ma sicuramente ho sbagliato in qualcosa.
Non riporto le prove che ho fatto perchè sono state tante .... tantissime .... talmente tante che poi mi sono perso.
Comunque il problema è questo : lo script funziona ma se dopo aver inserito un recod faccio il reload della pagina mi vengono inseriti nuovamente gli stessi dati. .
Qui sotto lo script attuale reso funzionante per evitare il reload con una funzione redirect temporizzata trovata in giro per il web.... ma ovviamente la soluzione non mi piace.
Le domande sono queste:
1. qualcuno può gentilmente aiutarmi ad inserire il codice giusto al fine di evitare il problema soprariportato (magari anche spiegandomelo)?
2. perchè se faccio una if nidificata non vengono passati i dati pur avendo dichiarato le variabili superglobals $_POST o $_GET che sia?
3. all'interno del codice php ho usato una if e trim per il controllo campi vuoti ponendo poi la funzione exit .... è giusto o sbagliato ?
Un grazie infinite a tutti coloro che mi risponderanno.
<?php
$titolo= 'inserimento clienti';
include ("funzioni.inc");
include ("connessione.php");
//intestazione
$titolo= 'inserimento clienti';
top($titolo); ?>
<script language="JavaScript1.2">
function controlla_cognome()
{
var cognome = document.registra_c.cognome.value;
if (cognome == "")
{
alert("Attenzione!! - Il campo obbligatorio del COGNOME non è stato inserito");
}
else
{ }
}
function controlla_nome()
{
var nome = document.registra_c.nome.value;
if (nome == "")
{
alert("Attenzione!! - Il campo obbligatorio del NOME non è stato inserito");
}
else
{ }
}
</script>
<?
head();
?>
<table class="table1"> <tr class="tr1"> <td class="td1">
INSERIMENTO ANAGRAFICA CLIENTI
</td> </tr> </table>
<form name='registra_c' action=<? echo $_SERVER['PHP_SELF']; ?> method='GET' enctype='multipart/form-data' target='_parent'>
<h2>Cognome </h2>
<input type='text' name='cognome' maxlength='50'>
<h2>Nome</h2>
<input type='text' name='nome' maxlength='50'>
<input type='submit' class='bottone' name='salva' value='SALVA'onclick="controlla_cognome(),controll a_nome()">
<input type='reset' class='bottone' name='pulisci' value='PULISCI'>
</form>
<form>
<INPUT TYPE="button" class="bottone" name="indietro" value="INDIETRO" align="center" onClick="parent.location='index.php'">
</form>
<?
$cognome = $_GET['cognome'];
$nome = $_GET['nome'];
if (trim($cognome) == "" OR trim($nome) == ""):
exit();
else:
$cognome = addslashes(stripslashes($cognome));
$nome = addslashes(stripslashes($nome));
$cognome = str_replace("<", "<", $cognome);
$nognome = str_replace(">", ">", $cognome);
$nome = str_replace("<", "<", $nome);
$nome = str_replace(">", ">", $nome);
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file connessione.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel file parametri.inc");
$query = "INSERT INTO anagrafica_c (Cognome, Nome) VALUES ('$cognome', '$nome')";
if (mysql_query($query, $db))
echo "<table class=\"table1\"> <tr> <td class=\"td2\">
I dati del cliente ", $cognome, "" ,$nome," sono stati inseriti con successo
attendere per un altro inserimento</td> </tr> </table> " ;
else
echo "<table class=\"table1\"> <tr> <td class=\"td2\">
ATTENZIONE!! -- ERRORE DURANTE L'INSERIMENTO --
</td> </tr> </table> ";
mysql_close($db);
endif;
// chiusura pagina
footer();
redirect('inserisci_c.php', 3 );
?>