Hey,

Ik heb in een database een tabel met: "id", "employee" en "email"
zo staat er een naam + bijhorende email in de tabel.

Ik heb een php scriptje die door die tabel heen loopt en alle namen in een list zet als options. Nu zit ik met het volgende: Als je een persoon selecteert uit die lijst en dan op submit drukt, moet er een mailtje verzonden worden naar de geselecteerde persoon (dus naar de e-mail die gekoppeld is aan diegene).

Weet iemand hoe dat moet en/of het überhaupt kan? Ik werk via XAMPP dus alles is lokaal.
oke ik heb nu dit voor het verzenden van een email (duurde lang maar dan heb je ook wat)


<?php
require 'phpmailer/PHPMailerAutoload.php';
define('Include',TRUE);

$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp-pulse.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = '[email protected]';                 // SMTP username
$mail->Password = 'wachtwoordfake';                           // SMTP password
$mail->SMTPSecure = '';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 111;                                    // TCP port to connect to

$mail->setFrom('[email protected] ', 'naam afzender');
$mail->addAddress('[email protected]', 'Naam ontvanger');     // Add a recipient
//$mail->addAddress('[email protected]');               // Name is optional
$mail->addReplyTo('[email protected]', 'Information');
//$mail->addCC('[email protected]');
//$mail->addBCC('[email protected]');

//$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'onderwerp';
$mail->Body    = 'Beste, <br/><br/> bla bla bla bla blablabla.';
//$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}
?>


alleen nu moet ik dus van de geselecteerde persoon de email krijgen en die does toevoegen aan bovenstaande script, geen flauw idee hoe dat zou moeten.

hieronder nog een keer het scriptje dat de persoon selecteert. in de database staan: ID, naam en e-mail, dus aan elke naam zit een email vast waar dus de mail naar toe moet.


<select id="email" name="email">
<?php
//laat de lijst zien van namen van medewerkers, hier zit ook een e-mail aan gekoppeld.

define('Include',TRUE);
require 'database.php';//Needed for database connection

$query= "SELECT employee FROM email_register ORDER BY employee ASC";
$result= mysqli_query($db_con, $query);

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
$employee=$row["employee"];
	echo "<option>
		$employee
	</option>";
}
?>
</select>
laten we uitgaan van een post-request en dat je de option voorziet van een value

Dan plaats je in 38-regelige script vanaf regel 4:

<?php
if($employeeid = filter_input(INPUT_POST, 'email')) {

$sql = "SELECT email, employee FROM email_register WHERE id = '" . mysqli_real_escape_string($db_con, $employeeid) ."'";
$result = mysqli_query($db_con, $sql);

if($row = mysqli_fetch_assoc($result)) {
$to = $row['email'];
$tonaam = $row['employee'];
}
else {
// ojee niet gevonden
}

}
?>


en regel 18 wordt dan
<?php
$mail->addAddress($to, $tonaam);
?>

Maar je moet wel zorgen dat je selectbox gevuld wordt met zinnige options.

[size=xsmall]Toevoeging op 27/09/2016 11:27:15:[/size]

en ik heb een berg controles eruitgelaten:

check of er wel een post-request was
check of de query lukt
doe iets als er geen gebruiker met dat id bleek te zijn

check of email wel een emailadres lijkt te zijn.

Zo nee: dan geen poging doen om alsnog de email te versturen
thanks, ik heb wel ongeveer een beeld van hoe het nu verder moet. Ga wel weer lekker verder prutsen ;) (met back-ups natuurlijk)

[size=xsmall]Toevoeging op 27/09/2016 11:54:44:[/size]

Vind het zelf nog wel moeilijk, heb 3 periodes PHP gehad en nu dus stage in een bedrijf. Maar naar mijn gevoel nog te weinig les gehad voor dit haha, maar komt wel goed hoop ik
**knip**

Oke bedankt. Heb wel Linkedin maar gebruik het niet zo veel haha, misschien dat dit het veranderd. Overigens is het een Belgische groep en woon ik in Nederland, en zijn het specialisten, vereweg van wat ik ben ;)

[size=xsmall]Toevoeging op 28/09/2016 10:35:00:[/size]

Zou dit ook met javascript kunnen? ik heb het nu in een form gezet met als action mail.php


<form action="mail.php">
	<select id="email" name="email">
		<?php

		define('Include',TRUE);
		require 'database.php';//Needed for database connection

		$query= "SELECT employee FROM email_register ORDER BY employee ASC";
		$result= mysqli_query($db_con, $query);

		echo "<option value='' disabled selected>Selecteer uw contactpersoon</option>";

		while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
		$employee=$row["employee"];
			echo " <option>$employee</option>";
		}
		?>
	</select>
	<br/></br>
	<button type="submit" name="verzenden">Aanmelden</button>
</form>


Alleen ik kom er niet uit hoe ik dus van de geselecteerde persoon, zijn email en naam krijg en deze in mail.php invoerd op de plek van:

 $mail->addAddress('[email protected]', 'Naam ontvanger'); 


Als je in option als value het id meegeeft kan je in mail.php alle gegevens van dat id uit de db halen.
zie mijn post van 11:46 van gisteren.

Alleen SELECT employee FROM aanpassen nog naar SELECT id, email, emplyee FROM

[size=xsmall]Toevoeging op 28/09/2016 11:00:05:[/size]

graag niet de mailadressen compleet in de <select> plaatsen graag. Dan is het namelijk een kleine moeite om daar willekeurige mailadressen in te stoppen.
heb ik gedaan, krijg ik deze foutmelding:

Notice: Undefined variable: to in D:\xampp\htdocs\z.email-testen\mail.php on line 36

Notice: Undefined variable: tonaam in D:\xampp\htdocs\z.email-testen\mail.php on line 36

Message could not be sent.Mailer Error: You must provide at least one recipient email address.

zal ik anders beide codes even sturen?

[size=xsmall]Toevoeging op 28/09/2016 11:37:58:[/size]

trouwens bij


 <?php
require 'database.php';//Needed for database connection
$query = "SELECT employee FROM email_register ORDER BY employee ASC";
if($result = mysqli_query($db_con, $query)) {
   if(mysqli_num_rows($result) > 0 ){
?>
    <select id="email" name="email">
       <?php while($row = mysqli_fetch_assoc($result)) : ?>
          <option value="<?= htmlspecialchars($row['id'])?>"><?= htmlspecialchars($row['employee'])?></option>
       <?php endwhile ?>

    </select>
<?php
   }
}
?> 


komt de lijst buiten de selectbox te staan :/ , dus een select zonder iets er in en daaronder een lijst met alle namen.
als de <select> niet netjes werkt, zal je je form niet kunnen posten, en kan dus ook die andere code niet werken.
Immers, als jij geen id hebt, kun je geen naam /email uit de database vissen en is dus inderdaad $to niet gevuld.

Zie mijn opmerking over het controleren van de stappen of alles wel lukt en niet botweg doorlopen tot php echt niets meer kan.

wbt. de code "trouwens bij" hierboven:
daar moet je dus nog die query uitbreiden met in elk geval "id"

Mocht dan nog de opbouw fout gaan, zou ik in de bron van de pagina kijken (in je browser) om te zien wat er mis gaat. (ik hoop nu op een melding undefined index id melding)
Hmm misschien toch iets te veel voor mij, had het wel zo ver gekregen dat hij iemand een mail stuurde, maar dat was altijd de onderste van de lijst :/

Reageren