e se uno fa pigia F5 ? o ctrl+r oppure il pulsante del browser che ricarica la pagina????
Non e' una buona sol .
Io farei cosi'
Legenda :
<html> = pagina html
<?php ?> = script php
---> redirect
--[post]--> redirect passando dati in post
--[get]--> redirect passando dati in get
<html> --[post]--> <?php ?> --[get]--> <?php ?>
Cosi' eviti refresh delle pagine che ri-eseguano istruzioni.
per capirci meglio
1) Crei i seguenti files ;
mia_form.html
mio_script.php
mia_pagina_di_uscita.php
2) Vediamo mia_form.html (ometto il codice html inutile lo farai tu meglio questo e' un esempio)
<html>
<body>
<form name="nomeee" action="./mio_script.php" method="post">
<select name="mia_select">
<option selected value="0">Zero</option>
<option value="1">Uno</option>
<option value="2">Due</option>
<option value="3">Tre</option>
</select>
<input type="submit" value="Invia" />
</form>
3) Ora facciamo lo script php
Codice PHP:
if( $_POST && count($_POST)>0 )
{
if( isset($_POST[mia_select]) )
{
$sel = $_POST[mia_select];
$query= "update .........";
if( $ris = @mysql_query( $q , $connection ) )
header("location:./pagina_di_uscita.php?res=ok");
else
header("location:./pagina_di_uscita.php?res=error&code=0001");
}
}
else
header("location:./pagina_di_uscita.php?res=error&code=0000");
4) Ora il file pagina_di_uscita.php
Codice PHP:
<?
$message = "";
if( isset($_GET[res]) && $_GET[res]=="error")
{
switch( $_GET[code] )
{
case "000" : $message = "No data";break;
case "001" : $message = "Query error";break;
default : $message = "Unrecognized exit code";break;
}
}
else if( isset($_GET[res]) && $_GET[res]=="ok")
$message = "Update successful";
?>
<html>
<body>
<?=$message ?>
</body>
</html>
Questa e' la soluzione migliore .
Eviti inutili update, separi le entita' che devi gestire, aumenti la flesibilita' del sistema.
Inoltre puoi gestire meglio il tutto.
Pensaci e cmq queste cose sono l'abc e bisogna imparare delle tecniche buone senno poi e' e' peggio.
Se ti abitui a fare tutto nella stessa pagina puoi creare molta confusione pensa se di un update dovevi fare una insert avresi avuto una pagina che se ricaricata reinseriva la stessa riga n volte senza controllo.
Cosi' invece non succede e l'utente non caricando lo script intermendio (in quanto gestito internamente dal server) potra' richiamarlo solo rieseguendo la request. Oppure con altre tecniche che non stiamo qui a sindacare.
Pensaci.