aanspreken van een script door een button
Ik heb een knop die een script aanspreekt die 'reminders' verstuurd naar de huidige gebruiker. De knop ziet er zó uit en werkt ook.
Code (php)
1
echo "<input type=button class=button value=\"Button 1\" onclick=\"window.location.href='sendreminders.php?username=".$_SESSION["UserID"]."';\">";
Het script sendreminders.php ziet er zo uit:
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
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
<?php
$server = 'XXXX';
$gebruiker = 'xxxx';
$wachtwoord = 'xxxx';
$database = 'xxx';
//$ontvangerEmail = "select Email from _werknemer where Username='".$_SESSION["UserID"]."'";
//$ontvangerEmail = '[email protected]';
$ontvangerEmail = $_SESSION["Email"];
if (mysql_connect($server,$gebruiker,$wachtwoord)) {
if (mysql_select_db($database)) {
$query = "SELECT Kandidaatnummer, Kandidaatvoornaam, Kandidaatvoortgang, KandidaatVakgebied, Reminder FROM `_kandidaten` WHERE Reminder <= NOW()";
$result = mysql_query ($query);
if ($result && mysql_num_rows($result) > 0){
// De class invoegen in het huidige bestand
require ('mail.class.php');
while($row = mysql_fetch_assoc($result)) {
// Een email object aanmaken.
// Door het object te koppelen aan een variabele (in dit geval $email) kun je er iets mee doen.
$email = new email ('mailform.php');
// De SMTP server opgeven
$email->setMailServer ('localhost');
// $email->setSubject ('Reminder: ' . $row['Kandidaatnummer'] . ' - Vakgebied: ' . $row['KandidaatVakgebied']);
$email->setSubject (' ' . $row['Kandidaatnummer'] . ' - ' . $row['KandidaatVakgebied']. ' - '. $row['Kandidaatvoornaam']);
// Het lastige deel: de dynamische content definieren
// Als je 'mailform.php' er bij pakt en je verstuurt even een mail naar jezelf zal het denk ik duidelijk zijn
// Je kunt hier uiteraard zo nog een paar regels bij zetten. Dat gaat gewoon goed!
$email->dynamicContent ('[[Reminder]]', $row['Reminder']);
$email->dynamicContent ('[[KandidaatVakgebied]]', $row['KandidaatVakgebied']);
$email->dynamicContent ('[[Kandidaatvoornaam]]', $row['Kandidaatvoornaam']);
$email->dynamicContent ('[[Kandidaatvoortgang]]', nl2br($row['Kandidaatvoortgang']));
// Als laatst versturen we de email. Het eerste adres is van de afzender, het tweede de ontvanger.
// Een check lijkt mij hier ook wel op zijn plaats!
if ($email->sendMail ('[email protected]', $ontvangerEmail)) {
echo "Verstuurd ";
} else {
echo "Fout ";
}
}
}else{
echo '<p>Sorry, ik heb geen kandidaten gevonden!</p>';
}
}else{
echo '<p>Sorry, ik kon geen verbinding maken met de databasetabel!</p>';
}
}else{
echo '<p>Sorry, ik kon geen verbinding maken met de databaseserver!</p>';
}
?>
$server = 'XXXX';
$gebruiker = 'xxxx';
$wachtwoord = 'xxxx';
$database = 'xxx';
//$ontvangerEmail = "select Email from _werknemer where Username='".$_SESSION["UserID"]."'";
//$ontvangerEmail = '[email protected]';
$ontvangerEmail = $_SESSION["Email"];
if (mysql_connect($server,$gebruiker,$wachtwoord)) {
if (mysql_select_db($database)) {
$query = "SELECT Kandidaatnummer, Kandidaatvoornaam, Kandidaatvoortgang, KandidaatVakgebied, Reminder FROM `_kandidaten` WHERE Reminder <= NOW()";
$result = mysql_query ($query);
if ($result && mysql_num_rows($result) > 0){
// De class invoegen in het huidige bestand
require ('mail.class.php');
while($row = mysql_fetch_assoc($result)) {
// Een email object aanmaken.
// Door het object te koppelen aan een variabele (in dit geval $email) kun je er iets mee doen.
$email = new email ('mailform.php');
// De SMTP server opgeven
$email->setMailServer ('localhost');
// $email->setSubject ('Reminder: ' . $row['Kandidaatnummer'] . ' - Vakgebied: ' . $row['KandidaatVakgebied']);
$email->setSubject (' ' . $row['Kandidaatnummer'] . ' - ' . $row['KandidaatVakgebied']. ' - '. $row['Kandidaatvoornaam']);
// Het lastige deel: de dynamische content definieren
// Als je 'mailform.php' er bij pakt en je verstuurt even een mail naar jezelf zal het denk ik duidelijk zijn
// Je kunt hier uiteraard zo nog een paar regels bij zetten. Dat gaat gewoon goed!
$email->dynamicContent ('[[Reminder]]', $row['Reminder']);
$email->dynamicContent ('[[KandidaatVakgebied]]', $row['KandidaatVakgebied']);
$email->dynamicContent ('[[Kandidaatvoornaam]]', $row['Kandidaatvoornaam']);
$email->dynamicContent ('[[Kandidaatvoortgang]]', nl2br($row['Kandidaatvoortgang']));
// Als laatst versturen we de email. Het eerste adres is van de afzender, het tweede de ontvanger.
// Een check lijkt mij hier ook wel op zijn plaats!
if ($email->sendMail ('[email protected]', $ontvangerEmail)) {
echo "Verstuurd ";
} else {
echo "Fout ";
}
}
}else{
echo '<p>Sorry, ik heb geen kandidaten gevonden!</p>';
}
}else{
echo '<p>Sorry, ik kon geen verbinding maken met de databasetabel!</p>';
}
}else{
echo '<p>Sorry, ik kon geen verbinding maken met de databaseserver!</p>';
}
?>
Als ik de regel $ontvangerEmail = "select Email from _werknemer where Username='".$_SESSION["UserID"]."'"; gebruik dan krijg ik de melding 'Fout' (uit het script).
Wanneer ik de regel met shoppy@zonnet gebruik dan verstuurd hij alles gewoon.
Wat doe ik verkeerd?
groetjes,
John
Gewijzigd op 01/01/1970 01:00:00 door John de Winkel
SanThe schreef op 24.12.2008 15:02:
Check of de query is gelukt. Foutafhandeling ontbreekt.
Edit: Ik zie ook geen session_start().
Edit: Ik zie ook geen session_start().
Ik neem aan dat je de query bedoeld om het mailadres van de User te achterhalen?
Hoe check ik dat dan? Geen idee namelijk hoe ik dat zou moeten doen.
Gewijzigd op 01/01/1970 01:00:00 door John de Winkel
Zie de diverse tutorials hier op de site.
SanThe schreef op 24.12.2008 15:32:
Zie de diverse tutorials hier op de site.
Ik zit me rot te zoeken maar vindt niets wat mij helpt de query te testen.
Kun je me een beetje op weg helpen alsjeblieft?
Zet session_start(); eens bovenin je script.
SanThe schreef op 24.12.2008 16:27:
Sorry, ik heb verkeerd zitten kijken. Je foutafhandeling klopt wel.
Zet session_start(); eens bovenin je script.
Zet session_start(); eens bovenin je script.
Helaas, de foutafhandeling zegt "Fout".
Hij haalt dus het emailveld van de User niet op.
echo $ontvangerEmail;
SanThe schreef op 24.12.2008 16:54:
echo $ontvangerEmail;
Helaas, wordt niets weergegeven.
SanThe schreef op 24.12.2008 16:27:
Zet session_start(); eens bovenin je script.
$ontvangerEmail = "select Email from _werknemer where Username='".$_SESSION["UserID"]."'";
wordt er geprobeerd te mailen naar het e-mailadres 'select Email from _werknemer where Username=123'. Dat werkt natuurlijk niet. Je moet dus eerst met die query het e-mailadres ophalen, waarnaar je dan iets kunt verzenden.
Douwe M schreef op 24.12.2008 17:20:
Als je dit gebruikt:
$ontvangerEmail = "select Email from _werknemer where Username='".$_SESSION["UserID"]."'";
wordt er geprobeerd te mailen naar het e-mailadres 'select Email from _werknemer where Username=123'. Dat werkt natuurlijk niet. Je moet dus eerst met die query het e-mailadres ophalen, waarnaar je dan iets kunt verzenden.
$ontvangerEmail = "select Email from _werknemer where Username='".$_SESSION["UserID"]."'";
wordt er geprobeerd te mailen naar het e-mailadres 'select Email from _werknemer where Username=123'. Dat werkt natuurlijk niet. Je moet dus eerst met die query het e-mailadres ophalen, waarnaar je dan iets kunt verzenden.
En hoe doe ik dat dan?
Wil je me dat uitleggen of een voorbeeld geven?
Je voert dus de query "select Email from _werknemer where Username='".$_SESSION["UserID"]."'" uit, je controleert natuurlijk of alles goed is gegaan, en dan fetch je de opgehaalde gegevens in een associative array, en mail je naar $array['Email']
Douwe schreef op 24.12.2008 17:31:
Je voert dus de query "select Email from _werknemer where Username='".$_SESSION["UserID"]."'" uit, je controleert natuurlijk of alles goed is gegaan, en dan fetch je de opgehaalde gegevens in een associative array, en mail je naar $array['Email']
Is dit wat je bedoeld?
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
if (mysql_connect($server,$gebruiker,$wachtwoord))
if (mysql_select_db($database))
$str2 = "select Email from _werknemer where Naam='".$_SESSION["UserID"]."'";
$result = mysql_query($str2);
$data2 = mysql__fetch_array($result);
$ontvangerEmail = $data2["Email"];
echo "email ".$ontvangerEmail;
if (mysql_select_db($database))
$str2 = "select Email from _werknemer where Naam='".$_SESSION["UserID"]."'";
$result = mysql_query($str2);
$data2 = mysql__fetch_array($result);
$ontvangerEmail = $data2["Email"];
echo "email ".$ontvangerEmail;
Nee, dus. Ook nu laat ie geen mailadres zien in de echo.
Gewijzigd op 01/01/1970 01:00:00 door John de Winkel
Zo ongeveer, maar dan met mysql_fetch_assoc() :)
Douwe schreef op 24.12.2008 18:09:
Zo ongeveer, maar dan met mysql_fetch_assoc() :)
mysql_fetch_assoc*($result);
levert ook niets op.
Okay, wat voor error krijg je?
Douwe schreef op 24.12.2008 18:31:
Okay, wat voor error krijg je?
Ik krijg geen error in de zin van een scriptfout maar wel in de 'foutopvolging'.
In het 'resultaat' krijg ik een fink aantal keren de mededeling 'Fout'.
Ik heb een echo in het script gezet zodat ik kan zien wat het emailadres is maar daar geeft ie geen reslultaat op.
Voor alle zekerheid het laatste script hieronder:
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
78
79
80
81
82
83
84
85
86
87
88
89
90
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
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
session_start();
$server = 'xxx';
$gebruiker = 'xxx';
$wachtwoord = 'xxx';
$database = 'xxx';
//***** Hier zit ergens het probleem *******
if (mysql_connect($server,$gebruiker,$wachtwoord))
if (mysql_select_db($database))
$str2 = "select Email from _werknemer where Naam='".$_SESSION["UserID"]."'";
$result = mysql_query($str2);
$data2 = mysql_fetch_array($result);
$ontvangerEmail = $data2["Email"];
echo "email ".$ontvangerEmail;
//******** Hieronder is alles goed *****
if (mysql_connect($server,$gebruiker,$wachtwoord)) {
if (mysql_select_db($database)) {
$query = "SELECT Kandidaatnummer, Kandidaatvoornaam, Kandidaatvoortgang,
KandidaatVakgebied, Reminder FROM `_kandidaten` WHERE Reminder <= NOW()";
$result = mysql_query ($query);
if ($result && mysql_num_rows($result) > 0){
// De class invoegen in het huidige bestand
require ('mail.class.php');
while($row = mysql_fetch_assoc($result)) {
// Een email object aanmaken.
// Door het object te koppelen aan een variabele (in dit geval
$email) kun je er iets mee doen.
$email = new email ('mailform.php');
// De SMTP server opgeven
$email->setMailServer ('post.demon.nl');
// $email->setSubject ('Reminder: ' . $row['Kandidaatnummer'] . '
- Vakgebied: ' . $row['KandidaatVakgebied']);
$email->setSubject (' ' . $row['Kandidaatnummer'] . ' - ' .
$row['KandidaatVakgebied']. ' - '. $row['Kandidaatvoornaam']);
// Het lastige deel: de dynamische content definieren
// Als je 'mailform.php' er bij pakt en je verstuurt even een mail
naar jezelf zal het denk ik duidelijk zijn
// Je kunt hier uiteraard zo nog een paar regels bij zetten. Dat gaat
gewoon goed!
$email->dynamicContent ('[[Reminder]]', $row['Reminder']);
$email->dynamicContent ('[[KandidaatVakgebied]]',
$row['KandidaatVakgebied']);
$email->dynamicContent ('[[Kandidaatvoornaam]]',
$row['Kandidaatvoornaam']);
$email->dynamicContent ('[[Kandidaatvoortgang]]',
nl2br($row['Kandidaatvoortgang']));
// Als laatst versturen we de email. Het eerste adres is van de
afzender, het tweede de ontvanger.
// Een check lijkt mij hier ook wel op zijn plaats!
if ($email->sendMail ('reminder@synoptico.nl', $ontvangerEmail))
{
echo "Verstuurd ";
} else {
echo "Fout ";
}
}
}else{
echo '<p>Sorry, ik heb geen kandidaten gevonden!</p>';
}
}else{
echo '<p>Sorry, ik kon geen verbinding maken met de databasetabel!</p>';
}
}else{
echo '<p>Sorry, ik kon geen verbinding maken met de databaseserver!</p>';
}
?>
session_start();
$server = 'xxx';
$gebruiker = 'xxx';
$wachtwoord = 'xxx';
$database = 'xxx';
//***** Hier zit ergens het probleem *******
if (mysql_connect($server,$gebruiker,$wachtwoord))
if (mysql_select_db($database))
$str2 = "select Email from _werknemer where Naam='".$_SESSION["UserID"]."'";
$result = mysql_query($str2);
$data2 = mysql_fetch_array($result);
$ontvangerEmail = $data2["Email"];
echo "email ".$ontvangerEmail;
//******** Hieronder is alles goed *****
if (mysql_connect($server,$gebruiker,$wachtwoord)) {
if (mysql_select_db($database)) {
$query = "SELECT Kandidaatnummer, Kandidaatvoornaam, Kandidaatvoortgang,
KandidaatVakgebied, Reminder FROM `_kandidaten` WHERE Reminder <= NOW()";
$result = mysql_query ($query);
if ($result && mysql_num_rows($result) > 0){
// De class invoegen in het huidige bestand
require ('mail.class.php');
while($row = mysql_fetch_assoc($result)) {
// Een email object aanmaken.
// Door het object te koppelen aan een variabele (in dit geval
$email) kun je er iets mee doen.
$email = new email ('mailform.php');
// De SMTP server opgeven
$email->setMailServer ('post.demon.nl');
// $email->setSubject ('Reminder: ' . $row['Kandidaatnummer'] . '
- Vakgebied: ' . $row['KandidaatVakgebied']);
$email->setSubject (' ' . $row['Kandidaatnummer'] . ' - ' .
$row['KandidaatVakgebied']. ' - '. $row['Kandidaatvoornaam']);
// Het lastige deel: de dynamische content definieren
// Als je 'mailform.php' er bij pakt en je verstuurt even een mail
naar jezelf zal het denk ik duidelijk zijn
// Je kunt hier uiteraard zo nog een paar regels bij zetten. Dat gaat
gewoon goed!
$email->dynamicContent ('[[Reminder]]', $row['Reminder']);
$email->dynamicContent ('[[KandidaatVakgebied]]',
$row['KandidaatVakgebied']);
$email->dynamicContent ('[[Kandidaatvoornaam]]',
$row['Kandidaatvoornaam']);
$email->dynamicContent ('[[Kandidaatvoortgang]]',
nl2br($row['Kandidaatvoortgang']));
// Als laatst versturen we de email. Het eerste adres is van de
afzender, het tweede de ontvanger.
// Een check lijkt mij hier ook wel op zijn plaats!
if ($email->sendMail ('reminder@synoptico.nl', $ontvangerEmail))
{
echo "Verstuurd ";
} else {
echo "Fout ";
}
}
}else{
echo '<p>Sorry, ik heb geen kandidaten gevonden!</p>';
}
}else{
echo '<p>Sorry, ik kon geen verbinding maken met de databasetabel!</p>';
}
}else{
echo '<p>Sorry, ik kon geen verbinding maken met de databaseserver!</p>';
}
?>
Email is het emailveld in _werknemer en Naam is de username (voor alle duidelijkheid)
Krijg ik nu pijn in mijn buik van dit script of van de oliebollen?
Alvast heel veel dank voor alle moeite hoor.