Frage: <form name="">- name auslesen in Php

Chris B

Mitglied
Hallo!

Ich mache gerade mehrere Kontaktformulare, die ich aber alle mit der selben .php-Datei verschicken will, da 50% der INPUTS gleich sind(nur die Namen nich, aber kein Problem)

Kurzer Aufbau!
Code:
<form action="mail/mail.php" target="_blank" method="post" name="A_H_Form" onSubmit="return Check()">
// mail.php ist die Routine zum verschicken, onSubmit ist unwichtig

in der mail.php will ich überprüfen, welches Form gerade abgeschickt wurde und das am besten für das name-Element.

Ich habs anfangs mit
Code:
if (isset($_POST['A_H_Form']))
	{
		$Betreff = "SI Online - Allgemeinspez. Anfrageformular";
		$Form= "A_A";
	}

versucht, aber leider erfolglos.

Was is bräuchte, ist also die Abfrage ansich, mit der ich das name-Element im <form> kontrollieren kann.

Gruß Chris
 
Zuletzt bearbeitet:
Tu in jedes Formular...sofern dies möglich ist, ein verstecktes Input mit dem Namen des Formulars....daran kannst du dann den Namen ablesen.
Direkt auf den Namen des Formulars zugreifen kannst du nach dem Senden mit PHP nicht.
 
Ok...danke dir
Daran hab ich gar nicht gedacht :)

*schnell aus dem Ein-Zeilen Posting ein Vier-Zeilen Posting macht*


*edit*
Arrrrgh neues Problem.

Da ich ja in der Abfrage(eine wird immer true...) der $Form einen Wert zuweise, wollte ich die so verwenden...

PHP:
	$Anrede 			= $_REQUEST[$Form + "_Anrede"];

Also das Feld(in dem Fall) A_H_Anrede abfragen....geht aber leider nicht.

Geht das grundsätzlich nicht so(was is nicht glaube ;)) oder hab einfach nur falsch codiert?

Gruss Chris
 
Zuletzt bearbeitet:
Hihi...ne, jetzt war ich so schlau erstma zu fragen und hab unsren Js-Profi zugespammt...

Javascript:
function Check(formname)
{	
	// Hier Felder festlegen, die zu überprüfen sind
	if(formname == "A_A_Form")
	{
	var SachB = document.getElementById('A_A_Sachbearbeiter');
	var Tel = document.getElementById('A_A_Telefon');
	var Email = document.getElementById('A_A_Email');
	}
	if(formname == "A_H_Form")
	{
	var SachB = document.getElementById('A_H_Sachbearbeiter');
	var Tel = document.getElementById('A_H_Telefon');
	var Email = document.getElementById('A_H_Email');

	}
	if(formname == "A_K_Form")
	{
	var SachB = document.getElementById('A_K_Sachbearbeiter');
	var Tel = document.getElementById('A_K_Telefon');
	var Email = document.getElementById('A_K_Email');

	}
	
	
	if(document.formname.SachB.value == "")
		{alert("Bitte Ihren Sachbearbeiter eingeben!");
		document.formname.SachB.focus();
		return false;}
		if(document.formname.Tel.value == "")
		{alert("Bitte Ihre Telefonnummer eingeben!");
		document.formname.Tel.focus();
		return false;}
		
		if(!isEmail(document.formname.Email.value))
		{alert("Ungültige E-Mail-Adresse!");
		document.formname.Email.focus();
		return false; }


bin zum glück da ohne den Operator ausgekommen ;)
 
Zuletzt bearbeitet von einem Moderator:
O.K. nachdem ich festgestellt hab, dass es nicht geht und reichlich rumgekäfert hab. is folgendes fast-fertiges rausgekommmen, was in etwa so aussieht :)

Javascript:
function Check(formname)
{	
	// Hier Felder festlegen, die zu überprüfen sind´
	if(formname == "A_A_Form")
		{var SachB = document.getElementById('A_A_Sachbearbeiter').name;
		var Tel = document.getElementById('A_A_Telefon').name;
		var Email = document.getElementById('A_A_Email').name;}
	if(formname == "A_H_Form")
		{var SachB = document.getElementById('A_H_Sachbearbeiter').name;
		var Tel = document.getElementById('A_H_Telefon').name;
		var Email = document.getElementById('A_H_Email').name;}
	if(formname == "A_K_Form")
		{var SachB = document.getElementById('A_K_Sachbearbeiter').name;
		var Tel = document.getElementById('A_K_Telefon').name;
		var Email = document.getElementById('A_K_Email').name;}
	//Die eigentliche Abfrage	
	if(document.getElementById(SachB).value == "")
			{alert("Bitte Ihren Sachbearbeiter eingeben!");
			document.getElementById(SachB).focus();
			return false;}
		if(document.getElementById(Tel).value == "")
			{alert("Bitte Ihre Telefonnummer eingeben!");
			document.getElementById(Tel).focus();
			return false;}
		if(!isEmail(document.getElementById(Email).value))
			{alert("Ungültige E-Mail-Adresse!");
			document.getElementById(Email).focus();
			return false;}

Leider geht das mit dem !isEmail (noch) nicht (die ist nich von mir ;), deshalb gehts wahrscheinlich auch nicht :D )

Javascript:
var whitespace = " \t\n\r";

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}
function isWhitespace (s)
{   var i;
    //Is s empty?
    if (isEmpty(s)) return true;
    //Search through string's characters one by one //until we find a non-whitespace character.  //When we do, return false; if we don't, return true.
    for (i = 0; i < s.length; i++)
    {   // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
    }//All characters are whitespace.
    return true;
}

function isEmail(s)
{   
	var defaultEmptyOK = true;
	if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
    // is s whitespace?
    if (isWhitespace(s)) return false;
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;
    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }
    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;
    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }
    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}
 
Zuletzt bearbeitet von einem Moderator:
Nen Fehler hab ich da auf den ersten Blick nicht entdeckt(hab aber auch nicht lang geschaut... die Funktion dürfte etwas älter sein...aus einer Zeit, wo die Unterstützung von RegExp in den Browsern noch nicht so verbreitet war... mit regulären Ausdrücken geht das einfacher, und das kennen mittlerweile alle aktuellen Browser).

Probiers mal so(hab den Code mal ein wenig reduziert ;))
Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
function Check(oForm)
{	
	sPrefix=oForm.name.replace(/Form$/,'');
	if(!oForm.elements[sPrefix+'Sachbearbeiter'].value.match(/\w{3,}/))
			{
			  alert("Bitte Ihren Sachbearbeiter eingeben!");
			  !oForm.elements[sPrefix+'Sachbearbeiter'].focus();
			  return false;
			}
  if(!oForm.elements[sPrefix+'Telefon'].value.match(/\d{5,}/))
			{
			  alert("Bitte Ihre Telefonnummer eingeben!");
			  oForm.elements[sPrefix+'Telefon'].focus();
			  return false;
			}
			
    if(!oForm.elements[sPrefix+'Email'].value.match(/^[a-z\d][a-z\d\._-]*@([a-z\d][a-z\d\.-]*[a-z\d]\.|)[a-z\d][a-z\d-]{1,}[a-z\d]\.[a-z]{2,5}$/i))
      {
        alert("Ungültige E-Mail-Adresse!");
        oForm.elements[sPrefix+'Email'].focus();
        return false;
      }	
  return true;			
}
//-->
</script>
</head>
<body>
<form action="mail/mail.php" target="_blank" method="post" name="A_H_Form" onSubmit="return Check(this)">
  <input name="A_H_Sachbearbeiter"><input name="A_H_Email"><input name="A_H_Telefon">
<input type="submit">
</form>
</body>
</html>
 
Hey...danke.
sieht auf jeden Fall nicht schlecht aus und laufen tuts auch....könntest mir eventuell noch die E-Mail-Überprüfung verdeutlichen..also die Parameter im match() ... hab das mal ein wenig mit Hilfe vom SelfHTML versucht, bin aber leider nicht weit gekommen

( // Beginn Hauptkörper
/ // Beginn Suchkörper
^ // Findet Z.4 am Anfang d. Wert
[a-z\d] // Findet a-z, \d=0-9
[a-z\d\._-] // Findet a-z, \d=0-9, \.=
*@ //
( //
[a-z\d] //
[a-z\d\.-] //
* //
[a-z\d]\.| //
) //
[a-z\d] //
[a-z\d-] //
{1,} //
[a-z\d] //
\. //
[a-z] //
{2,2} //
$ //
/ // Ende Suchkörper
i //
) // Ende Hauptkörper
 
Zurück