Sluiten actieve pagina
Ik heb een pagina waar de bezoeker de keus heeft om middels twee knoppen een actie uit te voeren.
1, Verlaat deze pagina
2. Werk middels php gegevens in een tabel bij
Bij de keuze Verlaten voer ik een javascript uit: parent.close(). Tot zover gaat alles goed.
Wil de bezoeker zijn gegevens bijwerken dan klikt hij op de andere knop die een php~routine start om dit uit te voeren. Als dit klaar is wil ik dat mijn pagina zichzelf sluit zoals dit middels de andere knop ook gaat.
Hoe pas ik nu dat Javascript in in mijn php~code?
if(klaar met bijwerken) voer javascript uit.
if(klaar) { <script>parent.close() </script>} ?????
George van Baasbank op 09/02/2013 09:56:34:
Wil de bezoeker zijn gegevens bijwerken dan klikt hij op de andere knop die een php~routine start om dit uit te voeren.
Ik heb het gevoel dat het voor veel mensen nog niet helder is:
Javascript draait in de browser van de gebruiker (client)
PHP draait op de webserver.
Als de client een pagina opvraagt aan de server dan maakt de server deze (mogelijk) met PHP. Het resultaat (meestal HTML met javascript) stuurt de server terug naar de client. De browser laat de HTML pagina vervolgens zien.
Ik ga er vanuit dat je bedoeld dat de andere button er voor zorgt dat de inhoud van een aantal formuliervelden (zoals <input type=text ... /> ) naar de server ge-POST worden. Bij de <form> tag staat waarschijnlijk iets als 'action="thanks.php" ' Dat is de pagina die daarna in het venster geladen wordt, en die jij dus automatisch wil laten sluiten. In deze pagina zul je vervolgens een javascript functie moeten hebben die (probeert) het venster te sluiten.
dat kan bijvoorbeeld zo:
Ik heb de javascript nu zo goed werkend dat het wordt uitgevoerd (precies zo als ik had gedacht) terwijl het nog niet mag. Of te wel, ik roep de pagina aan en deze wordt direct gesloten.
Hoe krijg ik nu deze actie zodanig in bedwang dat deze wordt uitgevoerd nadat alle mailtjes zijn verzonden?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
session_start();
error_reporting(0);
// Declaratie variabelen
$lAdministrator = $_SESSION['administrator'];
$lWebmaster = $_SESSION['webmaster'];
$lEindredactie = $_SESSION['eindredacteur'];
$lRedacteur = $_SESSION['redacteur'];
$lBeheerder = $_SESSION['beheerder'];
$lLid = $_SESSION['lid'];
$lToegang = $_SESSION['toegang'];
$cInlognaam = $_SESSION['inlognaam'];
$lKlaar = "Nee";
include "functies/functiebieb.inc";
include "include/systeem.inc";
include "include/connectie.inc.php";
if($_GET['id']) {
$cX = $_GET['id'];
include "queries/sql_zoekpersoon.php";
$cResultPersoon = mysql_query($sql);
$row = mysql_fetch_array($cResultPersoon);
$cPersoon = utf8_encode($row['voornaam']) . " " . utf8_encode($row['tussednvoeg']) . " " . ZonderPatroniem(utf8_encode($row['achternaam']));
$cGeboren = $row['geboortedatum'];
$cOverleden = $row['overlijdensdatum'];
$cVersie1 = $row['versie'];
mysql_close($verbinding);
}
if($_SERVER['REQUEST_METHOD'] === 'POST') {
$cIdPersoon = $_POST['idpersoon'];
$cCorrectie = utf8_encode($_POST['bericht']);
$cVersie = $_POST['versie'];
$cEmailInzender = $_POST['indiener'];
// Database bijwerken
include "include/connectie.inc.php";
include "queries/sql_ins_correctie.php";
$cResultInsert = mysql_query($sql);
// E-mail naar werkgroep sturen
// Ophalen e-mailadres Ontvanger
$sql = "SELECT * FROM ove_emailadressen WHERE functie = 'Correctie' LIMIT 1";
$cResultAdres = mysql_query($sql);
$row = mysql_fetch_array($cResultAdres);
$cBestemming = $row['email'];
// E-mailbericht samenstellen
$html = true;
$headers = 'From: [email protected]' . PHP_EOL;
$headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
$headers .= 'X-Priority: Normal' . PHP_EOL;
$headers .= ($html) ? 'MIME-Version: 1.0' . PHP_EOL : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : '';
$cBericht2 = $cCorrectie . "\r\n\r\n";
$cBericht2 .= "Afzender: " . $cInlognaam ;
$cBericht2 = nl2br($cBericht2);
// Onderwerp en header e-mailbericht
$onderwerp = "Bericht via correctieformulier";
// Verzenden e-mailbericht aan werkgroep
if(mail($cBestemming,$onderwerp,$cBericht2,$headers)) {
$cMelding = $cBevestiging;
}
$lKlaar = "Ja";
}
if($lKlaar == "Ja") {
echo "<script>parent.close()</script>";
}
error_reporting(0);
// Declaratie variabelen
$lAdministrator = $_SESSION['administrator'];
$lWebmaster = $_SESSION['webmaster'];
$lEindredactie = $_SESSION['eindredacteur'];
$lRedacteur = $_SESSION['redacteur'];
$lBeheerder = $_SESSION['beheerder'];
$lLid = $_SESSION['lid'];
$lToegang = $_SESSION['toegang'];
$cInlognaam = $_SESSION['inlognaam'];
$lKlaar = "Nee";
include "functies/functiebieb.inc";
include "include/systeem.inc";
include "include/connectie.inc.php";
if($_GET['id']) {
$cX = $_GET['id'];
include "queries/sql_zoekpersoon.php";
$cResultPersoon = mysql_query($sql);
$row = mysql_fetch_array($cResultPersoon);
$cPersoon = utf8_encode($row['voornaam']) . " " . utf8_encode($row['tussednvoeg']) . " " . ZonderPatroniem(utf8_encode($row['achternaam']));
$cGeboren = $row['geboortedatum'];
$cOverleden = $row['overlijdensdatum'];
$cVersie1 = $row['versie'];
mysql_close($verbinding);
}
if($_SERVER['REQUEST_METHOD'] === 'POST') {
$cIdPersoon = $_POST['idpersoon'];
$cCorrectie = utf8_encode($_POST['bericht']);
$cVersie = $_POST['versie'];
$cEmailInzender = $_POST['indiener'];
// Database bijwerken
include "include/connectie.inc.php";
include "queries/sql_ins_correctie.php";
$cResultInsert = mysql_query($sql);
// E-mail naar werkgroep sturen
// Ophalen e-mailadres Ontvanger
$sql = "SELECT * FROM ove_emailadressen WHERE functie = 'Correctie' LIMIT 1";
$cResultAdres = mysql_query($sql);
$row = mysql_fetch_array($cResultAdres);
$cBestemming = $row['email'];
// E-mailbericht samenstellen
$html = true;
$headers = 'From: [email protected]' . PHP_EOL;
$headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
$headers .= 'X-Priority: Normal' . PHP_EOL;
$headers .= ($html) ? 'MIME-Version: 1.0' . PHP_EOL : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : '';
$cBericht2 = $cCorrectie . "\r\n\r\n";
$cBericht2 .= "Afzender: " . $cInlognaam ;
$cBericht2 = nl2br($cBericht2);
// Onderwerp en header e-mailbericht
$onderwerp = "Bericht via correctieformulier";
// Verzenden e-mailbericht aan werkgroep
if(mail($cBestemming,$onderwerp,$cBericht2,$headers)) {
$cMelding = $cBevestiging;
}
$lKlaar = "Ja";
}
if($lKlaar == "Ja") {
echo "<script>parent.close()</script>";
}
George
er is dus iets anders waardoor jouw mailtjes niet aankomen. Een mogelijke oorzaak zou kunnen zijn dat je het script waarin de email verstuurd wordt (het script hierboven) nu niet meer opgevraagd wordt door de browser omdat je misschien het venster sluit voordat je het formulier verstuurt hebt?
Het gaat niet om de mailtjes maar om het spontaan sluiten van de pagina
maar wat wil je nu? wanneer moet de pagina dan sluiten? wil je hem na een aantal seconden sluiten?
De pagina moet sluiten na het verwerken van de e-mailopdrachten. Met deze broncode sluit de pagina direct na het openen (en stuurt wel lege e-mails)