prompt-Eingabe aus Webformular an php übergeben

Suter17

Grünschnabel
Ich habe ein Webformular mit zwei submit-Knöpfen, damit User ein Massenmail entwerfen und entweder versenden oder das Mail nur erstmal an eine einzelne Testperson senden können. Bei Klick auf den Test-Button soll via eine prompt-Box eine E-Mailadresse angegeben werden sollen, an die das Mail geschickt wird. Ich bin ziemlich unerfahren mit Javascript, weshalb ich an der Übergabe der prompt-Eingabe an php scheitere. Nach Durchsicht vieler Foren-Beiträgen etc. habe ich mir mal folgenden - nicht funktionieren - Code zusammengebastelt.

Code:
	<form name="Massenform" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

	<table class="edit">
		<tr>
			<td style="text-align: right"><label for="betreff">Betreff</label></td>
			<td><input type="text" name="betreff" value="<?php echo $betreff; ?>" id="betreff" size="25"></td>
		</tr>
		<tr>
			<td style="text-align: right"><label for="nachricht">Nachricht</label></td>
			<td><textarea name="nachricht" id="nachricht" cols="50" rows="10"><?php echo $nachricht; ?></textarea></td>
		</tr>
		<tr>
			<td></td><td><br />
			<input type="hidden" name="MailAdresse" id="test_email" value="">
			<input style="font-weight:bold" type="submit" name="submit_testmail" value="Testmail senden" onclick="askEmail()">
			
				<script type="text/javascript">
				    function askEmail() {
					var test_email = prompt('An welche E-Mail-Adresse soll das Testmail verschickt werden?','');
					document.Massenform.MailAdresse.value = test_email;
				    }
				</script>
			
			<input style="font-weight:bold" type="submit" name="submit" value="Massenmail senden" onclick="return confirm('Willst du das E-Mail wirklich an <?php echo $anzahl_empfänger; ?> Personen absenden?');">
			</td>
		</tr>
	</table>
	</form>

Ich versuche also, die E-Mail-Adresse in einem hidden-Formularfeld zu übergeben, dessen Wert erst beim Absenden mit Javascript festgelegt wird. Anschliessend versuche ich die angegebene E-Mail-Adresse mit

PHP:
$email = $_POST['test_email'];

zu übernehmen.

Ich habe keine Ahnung, ob das auf diesem Wege theoretisch funktionieren würde. Wie würdet ihr das Problem angehen?
 
Da beide Button als Submit-Button definiert sind, wird auch bei der Testmail das Formular abgeschickt und somit die Eingabe nicht verarbeitet.

Ändere doch das Feld für die Test-Adresse in ein normales Textfeld und prüfe dann beim Senden ob da etwas eingegeben wurde oder nicht.

Wobei du im Moment keinerlei Überprüfung hast die prüft ob die Test-Adresse gültig ist oder nicht!
 
Ah, mein Code hätte sogar funktioniert, wenn ich nicht vershentlich anschliessend mit $_POST die id statt dem name geholt hätte.

Wobei du im Moment keinerlei Überprüfung hast die prüft ob die Test-Adresse gültig ist oder nicht!

Ja, genau, der Test fehlte noch. Ich habe nun meine function wie folgt erweitert:

Code:
				 function askEmail() {		    
					var test_email = prompt('An welche E-Mail-Adresse soll das Testmail verschickt werden?','');
					if (test_email) {
					    document.Massenform.MailAdresse.value = test_email;
					}  
					
					else {
					    document.Massenform.submit_testmail = false;
					    history.back();
					}
				 }

Leider funktioniert das else nicht wie gewünscht, sprich wenn jemand statt einer E-Mail-Adresse auf "Abbrechen" klickt, soll das Formular gar nicht erst abgeschickt werden. Wie ist das machbar? Mit meinem Versuch wird das Formular abgeschickt, da keine E-Mail-Adresse angegeben wurde, wird aber kein Mail verschickt.
 
Du musst es eher so testen:

Javascript:
if (test_email != "" && test_email != null)

Allerdings verhindert der ELSE-Abschnitt nicht das Abschicken des Formulars! Hier findest du ein Beispiel wie es in etwa aussehen könnte.

Wie aber bereits oben geschrieben würde ich den Ablauf auch anders gestalten. Javascript kann man abschalten, dann klappt es gar nicht und wenn du schon mit PHP arbeitest, dann prüfe die Eingaben damit.
 

Neue Beiträge

Zurück