insert

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

Amazing Science
Average Member
Mesaje: 131
Membru din: Dum Oct 15, 2006 7:27 pm

insert

Mesajde Amazing Science » Mie Iul 01, 2009 11:07 am

salutare!

am un form in php prin care se culeg date de la utilizator. dupa ce acesta da click pe butonul Salvare se face submit la form, iar datele din form sunt inserate intr-o tabela.

daca userul da refresh la pagina dupa ce s-a facut submit, sau daca pagina merge mai greu si apasa de 2 ori pe butonul Salveaza, se fac 2 sau mai multe inserturi in tabela, cu aceleasi date.

cum pot evita acest lucru?

multumesc.



Avatar utilizator
alexx_utza
Senior Member
Mesaje: 251
Membru din: Joi Mai 10, 2007 10:56 am
Localitate: in padure...
Contact:

Mesajde alexx_utza » Mie Iul 01, 2009 11:20 am

pentru datele din form pe care doresti sa le introduci, fa inainte de inserare un select si verifica daca nu exista deja exact aceleasi texte, iar daca exista nu le mai introduci

oceans
Senior Member
Mesaje: 504
Membru din: Mar Noi 13, 2007 3:06 pm

Mesajde oceans » Joi Iul 02, 2009 4:03 am

Daca da refresh faci comparatia cu datele din baza de date, pentru a nu apase de 2 ori pe butonul de submit poti folosi:

Cod: Selectaţi tot

onclick="this.disabled=true;this.form.submit();"

Amazing Science
Average Member
Mesaje: 131
Membru din: Dum Oct 15, 2006 7:27 pm

Mesajde Amazing Science » Joi Iul 02, 2009 11:50 am

multumesc pentru raspunsuri.

sunt o solutie pentru ceea ce am intrebat.

acum mai am o problema, asemanatoare intr-o oarecare masura.

am un form in care userul scrie intr-un camp o adresa de mail apoi da click pe un buton Trimite si se trimite mail catre adresa respectiva. in baza de date nu se insereaza nimic, doar se trimite mailul (cu phpmailer).

aici cum pot face sa nu se trimita de mai multe ori mailul daca se da refresh la pagina?

mersi.

Avatar utilizator
kleampa
Senior Member
Mesaje: 2774
Membru din: Dum Iul 10, 2005 2:12 pm
Localitate: Bucuresti
Contact:

Mesajde kleampa » Joi Iul 02, 2009 12:31 pm

dupa linia de cod in care se trimite mailul fa-i redirectare cu header("location:succes.php");

oceans
Senior Member
Mesaje: 504
Membru din: Mar Noi 13, 2007 3:06 pm

Mesajde oceans » Joi Iul 02, 2009 4:41 pm

Dupa ce setezi status 301 cu header() sa nu uiti sa termini executia scriptului cu exit; daca nu scriptul o sa ruleze in continuare mancand resurse inutil.

oceans
Senior Member
Mesaje: 504
Membru din: Mar Noi 13, 2007 3:06 pm

Mesajde oceans » Vin Iul 03, 2009 2:36 am

Amazing Science scrie:am un form in care userul scrie intr-un camp o adresa de mail apoi da click pe un buton Trimite si se trimite mail catre adresa respectiva. in baza de date nu se insereaza nimic, doar se trimite mailul (cu phpmailer).


Nu m-am gandit sa-ti spun dar daca utilizatorul da back din browser atunci singura solutie e sa lucrezi cu sesiuni, si sa retii intr-o sesiune ultimul id inserat astfel incat daca da back si id-ul introdus data trecuta exista sa nu-i trimiti mailul insa sa-i faci update cu noile date ale id-ului respectiv.
Bafta


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 16 vizitatori