• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Formular per E-Mail funktioniert nicht mehr unter Bootstrap

PhilippKr

New member
Hallo,

ich mal wieder. Ich habe Bootstrap 3 in meine Seite eingebunden und habe seit dem Probleme mit meinem Formular.
Ich bekomme zwar eine E-Mail, jedoch werden die Werte aus dem Formular nicht mitgegeben, der Local Storage schon.

Das ist im HTML Code eingebunden:

HTML:
<form role="form" id="ideenversand" >
     <div class="form-group">
      <label for="artidee">Ideengebiet</label>
     <select class="form-control" name="artidee" id="artidee">
 <option value="Terminierung">Terminierung</option>
 <option value="Kundengespräch">Kundengespräch</option>
<option value="Personalgewinnung">Personalgewinnung</option>
</select>
</div>

  <div class="form-group">
   <label for="Ideenbeschreibung">Ideenbeschreibung:</label>
   <textarea class="form-control" rows="3" name="Ideenbeschreibung" id="ideenbeschreibung"></textarea>
  </div>

  
  <button type="submit" id="submitform" class="btn btn-default">Abschicken</button>
</form>

     
     
<script type="text/javascript">

//Formdaten an PHP-Datei senden
	$("form#ideenversand").submit(function() {
	// we want to store the values from the form input box, then send via ajax below
	var artidee = $('#artidee').attr('value');
	var ideenbeschreibung = $('#ideenbeschreibung').attr('value');
	var nachname = localStorage.getItem("nachname");
var vorname = localStorage.getItem("vorname");
var adpnummer = localStorage.getItem("adpnummer");
var email = localStorage.getItem("email");
		
		$.ajax({
			type: "get",
			url: "submitform.php",
			data: "artidee="+ artidee +"&ideenbeschreibung=" + ideenbeschreibung +"&nachname="+ nachname  +"&vorname="+ vorname +"&email="+ email  +"&adpnummer="+ adpnummer ,
	success: function(){
				$.mobile.changePage("kontakt-erfolgreich.html", { transition: "flip"} );
				
			}
		});
	return false;
	});

			
</script>

Das steht dazu in der PHP Datei:

PHP:
<?php
header('content-type: application/json; charset=utf-8');


	$artidee = strip_tags($_GET['artidee']);
	$ideenbeschreibung = strip_tags($_GET['ideenbeschreibung']);
	$vorname = strip_tags($_GET['vorname']);
	$nachname = strip_tags($_GET['nachname']);
	$adpnummer = strip_tags($_GET['adpnummer']);
	$email = strip_tags($_GET['email']);
	
	$header =  'From: meinemail@mail.com' . "\r\n" . 
   'Reply-To: meinemail@mail.com' . "\r\n" .  
   "Ideenvorschlag"; 

	$empfaenger = 'meinemail@mail.com';
	$titel = 'Eine neue Idee wird eingereicht.';
	$mailtext = "
	
	Absender :
	$vorname $nachname
	ADP-Nummer: $adpnummer
	
	E-Mail:$email
	
	Art der Idee: $artidee
	Idee: 
	$ideenbeschreibung
	
	";
	$result = 'success';

	mail($empfaenger, $titel, $mailtext, $header);
	
		echo json_encode($result);

Hat von Euch zufällig jemand eine Idee?
Ich vermute, es hängt mit dem Bootstrap und dem Formular zusammen.
 
Also zum einen musst du die Feldinhalte vor dem Senden escapen, wenn du das manuell verkettest. Das macht man mit encodeURIComponent(). Das Ergebnis davon ist immer UTF-8, braucht also in deinem Fall nicht mehr gewandelt zu werden.
Und zum anderen wäre die Frage, was hinter $ steckt. Ist das jQuery oder dieses Bootsrap?
Und zum Dritten - falls es sich um jQuery handelt - ist .attr('value') falsch, um an die Value eines selects oder textarea zu kommen. Versuch mal stattdessen .val().
 
Ich vermute, es hängt mit dem Bootstrap und dem Formular zusammen.
unwahrscheinlich

Und zum anderen wäre die Frage, was hinter $ steckt. Ist das jQuery oder dieses Bootsrap?
da auch Bootsrap jQuery nutzt, ist es jQuery

Und zum Dritten - falls es sich um jQuery handelt - ist .attr('value') falsch, um an die Value eines selects oder textarea zu kommen.
warum?

Versuch mal stattdessen .val().
das ist besser, nicht richtiger
 
Danke erstmal für die Rückmeldungen.

Was mich halt verwundert, ich hab das ganze vorher ohne Bootstrap und alles klappt.
Ich packe das Formular in die neue Darstellung, das Script und auch die PHP Datei sind unverändert.
JQuery ist auch wieder eingebunden.

Und die E-Mail geht zwar raus, und die Daten aus dem Local Storage sind drin, nur nicht die Werte aus dem Formular.

Ich werde später mal den Vorschlag .val() versuchen.
 
Ganz nebenbei: es ist unsauberer Stil, Variablen in PHP einfach in einen String zu schreiben. Man verkettet sie stattdessen folgendermaßen:
PHP:
$text = "Ein Satz mit ".$anzahl." Buchstaben.";
PS: anstatt der in PHP eingebauten mail()-Funktion sollte man im Produktiveinsatz besser eine dafür zuständige externe Class nutzen...
 
Ganz nebenbei: es ist unsauberer Stil, Variablen in PHP einfach in einen String zu schreiben. Man verkettet sie stattdessen folgendermaßen:
[…]
alternativ:
PHP:
$text = sprintf("Ein Satz mit %d Buchstaben.", $anzahl);
(was sich vor allem dann vorteilhaft bemerkbar macht, wenn der String entweder sehr zerstückelt ist oder oft verwendet wird)
 
Zurück
Oben