Salut,
Atunci cind adaug o inregistrare in BD iar dupa iesire dau Refresh in browser, se adauga automat inca o inregistrare nedorita. Defectiunea e strict din codul scris? Multumesc.
inregistrare automata la refresh
-
- Mesaje:430
inregistrare automata la refresh
MarPlo
Mesaje:4343
Salut
Nu e o defectiune de cod, motivul e ca atunci cand se da Refresh, browser-ul acceseaza adresa inca o data, cu tot cu datele transmise initial.
Solutia e sa faci un auto-refresh din php, dupa ce ai inregistrat datele; astfel se elimina refresh-ul cu datele transmise.
Nu e o defectiune de cod, motivul e ca atunci cand se da Refresh, browser-ul acceseaza adresa inca o data, cu tot cu datele transmise initial.
Solutia e sa faci un auto-refresh din php, dupa ce ai inregistrat datele; astfel se elimina refresh-ul cu datele transmise.
Cod: Selectaţi tot
<?php
//gets and register data from form..
//auto-refresh
header('Location: '. $_SERVER['PHP_SELF']);
andras
Mesaje:430
Am incercat dar n-are efect, cred ca n-am plasat corect instructiunea. Dupa salvare (modelinsertdocument.php apelat cu ajax) am pus la sfirsitul fisierului (simplificat):
Unde este corect sa-l pun? Daca il pun inainte de SELECT apare o pagina alba, daca il pun dupa SELECT nu are efect, la Refresh mai incarca o data in tabela document chiar daca sint pe tabela de baza.
Cod: Selectaţi tot
<?php
$rezolvat = $conn->sqlExec($re); // aici se face INSERT in tabela document
header('Location: '. $_SERVER['PHP_SELF']); // apare pagina alba
if (isset($_SESSION['document']) && $_SESSION['document'] =='document')
include('modeldocument.php'); // SELECT pe tabela document - afiseaza din nou tabelul HTML cu SELECT reimprospatat (dupa caz, pe tabela de baza sau pe tabela document)
else include('modelselect.php'); // SELECT pe tabela de baza
header('Location: '. $_SERVER['PHP_SELF']); // aici nu are efect
?>
MarPlo
Mesaje:4343
Conteaza logica si structura codului. Redirect-ul /Refresh sa se faca Doar cand sunt date trimise de la formular. Cand se aplica refresh cu header(), codul de afisare de dupa acea linie de cod, care e in aceeasi conditie if(), nu va putea fi afisat fiindca e Refresh inaintea lui.
Cam asa se face:
Cam asa se face:
Cod: Selectaţi tot
<?php
//daca sunt date de formular
if(isset($_POST['nume_camp'])){
//adauga datele in mysql
//face refresh
header('Location: '. $_SERVER['PHP_SELF']);
exit();
}
else {
//restul codului necesar cand nu e actiune de adaugare in baza de date
}
Subiecte similare
- Trimitere automata email-uri fara Cron Job
PHP - MySQL - XML Primul mesaj
Buna,Ultimul mesaj
Se poate programa sa trimita un email automat din php fara ca pagina sa fie accesata sau fara sa fie setat un cron in Cpanel ?
Daca ar fi...
Salut,
Ca sa rulezi un script php trebuie sa accesezi acel fisier printr-o aplicatie precum o pagina in browser sau Cron Job pe server.
Din cate...