[PHP + MySQL] Se faccio F5 inserisce nuovo record. Come bloccare?

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
Ciao a tutti,

so che si tratta di un titolo un pò oscuro ma adesso cerco di spiegarmi meglio. Ho un form in cui inserisco dei dati che vengono salvati in una tabella MySQL. Ora, la struttura che ho creato è questa:

FORM -> QUERY -> REDIRECT A PAGINA ELENCO

Se io sono sulla pagina ELENCO e premo F5 (quindi aggiorno la pagina) mi viene rieseguita la query e di conseguenza mi viene inserito nuovamente lo stesso record. Ho provato ad assegnare al vettore $_POST dei valori NULL ma se faccio F5 mi inserisce dei valori vuoti.

Come faccio quindi ad evitare questo problema?
 
Ciao a tutti,

so che si tratta di un titolo un pò oscuro ma adesso cerco di spiegarmi meglio. Ho un form in cui inserisco dei dati che vengono salvati in una tabella MySQL. Ora, la struttura che ho creato è questa:

FORM -> QUERY -> REDIRECT A PAGINA ELENCO

Se io sono sulla pagina ELENCO e premo F5 (quindi aggiorno la pagina) mi viene rieseguita la query e di conseguenza mi viene inserito nuovamente lo stesso record. Ho provato ad assegnare al vettore $_POST dei valori NULL ma se faccio F5 mi inserisce dei valori vuoti.

Come faccio quindi ad evitare questo problema?

Domanda: visualizzi i dati nella stessa pagina della query?
 
Ciao,

allora, io ho un'unica pagina in cui richiamo da un file funzioni.php le varie funzioni e le mando in esecuzione richiamando la funzione che mi interessa. Struttura di esempio

home.php

switch funzione
case aggiungi:
inserisci();
break;
case elenco:
elenco();
break;
case salva:
salva();
break;


e via così per tutte le istruzioni che mi servono.
 
Una volta inseriti i file potresti reindirizzare a una pagina con un messaggio e poi ritornare alla pagina principale

Se la tua query va a buon fine allora vieni indirizzato alla pagina dati_inseriti.php
PHP:
header("Location: http://www.tuosito.it/dati_inseriti.php");

Nella pagina dati_inseriti.php
PHP:
echo "Dati inseriti correttamente!"

header("Location: http://www.tuosito.it/index.php");

Aspetta anche un consiglio da qualcuno più esperto :byebye:
 
ciao
forse puoi intervenire intercettando il tasto premuto con js, vedi
http://www.lukeonweb.net/leggi/363/...di_un_tasto_della_tastiera_con_javascript.asp
in modo da verificare se hai premuto il submit o F5
prova comunque anche a googlare "intercettare tasto tastiera" mi sembra che ci sia qualcosa anche in ajax
da quello che ho capito non ci sono metodi con php, del resto è giusto perchè php è lato server e il server non ha la tua tastiera
 
Perché non invii tramite form un valore di sessione che distruggi in ricezione?
 
ciao
Perché non invii tramite form un valore di sessione che distruggi in ricezione? .
io c'ho provato, ma nun funzia (o almeneno a me non è riuscito). quando premi f5 riaggiorni e la sessione si ricrea:crying:
secondo me la via migliore è verificare l'esitenza del record

p.s.
quello che mi piace di "pausa caffè" che non ti dice se ha trovato una soluzione
 

Discussioni simili