aanspreken van een script door een button

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

John de Winkel

John de Winkel

24/12/2008 14:54:00
Quote Anchor link
Hoi allemaal,

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)
PHP script in nieuw venster Selecteer het PHP script
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
}

?>


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
 
PHP hulp

PHP hulp

28/03/2024 13:50:51
 
- SanThe -

- SanThe -

24/12/2008 15:02:00
Quote Anchor link
Check of de query is gelukt. Foutafhandeling ontbreekt.

Edit: Ik zie ook geen session_start().
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
John de Winkel

John de Winkel

24/12/2008 15:20:00
Quote Anchor link
SanThe schreef op 24.12.2008 15:02:
Check of de query is gelukt. Foutafhandeling ontbreekt.

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
 
- SanThe -

- SanThe -

24/12/2008 15:32:00
Quote Anchor link
Zie de diverse tutorials hier op de site.
 
John de Winkel

John de Winkel

24/12/2008 15:58:00
Quote Anchor link
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?
 
- SanThe -

- SanThe -

24/12/2008 16:27:00
Quote Anchor link
Sorry, ik heb verkeerd zitten kijken. Je foutafhandeling klopt wel.
Zet session_start(); eens bovenin je script.
 
John de Winkel

John de Winkel

24/12/2008 16:41:00
Quote Anchor link
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.


Helaas, de foutafhandeling zegt "Fout".
Hij haalt dus het emailveld van de User niet op.
 
- SanThe -

- SanThe -

24/12/2008 16:54:00
Quote Anchor link
echo $ontvangerEmail;
 
John de Winkel

John de Winkel

24/12/2008 17:15:00
Quote Anchor link
SanThe schreef op 24.12.2008 16:54:
echo $ontvangerEmail;


Helaas, wordt niets weergegeven.
 
- SanThe -

- SanThe -

24/12/2008 17:17:00
Quote Anchor link
SanThe schreef op 24.12.2008 16:27:
Zet session_start(); eens bovenin je script.
 
Douwe

Douwe

24/12/2008 17:20:00
Quote Anchor link
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.
 
John de Winkel

John de Winkel

24/12/2008 17:27:00
Quote Anchor link
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.


En hoe doe ik dat dan?
Wil je me dat uitleggen of een voorbeeld geven?
 
Douwe

Douwe

24/12/2008 17:31:00
Quote Anchor link
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']
 
John de Winkel

John de Winkel

24/12/2008 18:06:00
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
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;


Nee, dus. Ook nu laat ie geen mailadres zien in de echo.
Gewijzigd op 01/01/1970 01:00:00 door John de Winkel
 
Douwe

Douwe

24/12/2008 18:09:00
Quote Anchor link
Zo ongeveer, maar dan met mysql_fetch_assoc() :)
 
John de Winkel

John de Winkel

24/12/2008 18:29:00
Quote Anchor link
Douwe schreef op 24.12.2008 18:09:
Zo ongeveer, maar dan met mysql_fetch_assoc() :)



mysql_fetch_assoc*($result);

levert ook niets op.
 
Douwe

Douwe

24/12/2008 18:31:00
Quote Anchor link
Okay, wat voor error krijg je?
 
John de Winkel

John de Winkel

24/12/2008 18:38:00
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
}



?>


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.
 
John de Winkel

John de Winkel

24/12/2008 18:41:00
Quote Anchor link
Ik zie trouwens dat als ik achter de echo (regel 17) UserID zet geeft hij ook geen naam!

Niet Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door John de Winkel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.