Formmailer verschachteln

M3Y3R

Well-known member
ID: 336361
L
8 Mai 2006
1.608
60
Hallo,

ich müsste zwei Formmailer miteinander verschachteln, aber leider will das nicht so wirklich. Nun hab an einer stelle gelesen, dass das möglich ist und an einer anderen, dass es nicht möglich ist.
Was stimmt denn nun? Wer kann mir da helfen und könnte mir ein Beispiel geben?


LG Papenburger
 
Ich verstehe nicht so ganz, was du meinst :-?
Wie wäre es, wenn du mal Code postest und dann alles nochmal genau erklärst?
 
Was verstehst du unter verschachteln? An mehrere Adressen senden? An mehrere Empfängerscripte senden? form-Tags ineinander schachteln? 1 Button für zwei Formulare verwenden? ..
 
HTML:
<form action="" name="1">
   <form action="" name="2">
<input type="submit" value="Löschen" name="1">
   <input type="submit" value="Alles auswählen" name="2">
</form name="1">
   </form name="2">

So in etwa meine ich das...
 
Nein, das kannst du vergessen, in <form> ist kein weiteres <form> erlaubt.

Aber wozu auch? Wenn du mehrere Submit Buttons haben willst, die unterschiedliche Dinge verursachen sollen, dann machst du daraus ein Formular, packst alle Buttons da rein, gibts denen entsprechende Namen und das Empfängerscript liest dann aus, welcher Button letztlich zum Absenden des Formulars verwendet wurde, in $_POST taucht dann nämlich nur der Name des aktiven Buttons auf, alle anderen Buttons werden nicht übergeben.
 
nein formulare kann man nicht schachteln.

am besten machst du einfach zwei verschiedene buttons und führst dann je nach value attribut die entsprechenden aktionen aus.

jperl

edit:
ich sollte wohl nicht auf antworten klicken und dann vorher noch meine inbox checken ;)
 
Kleine Frage (die eventuell OT ist oder auch sein Prob löst)..
Wie kann man es eigentlich machen das ein Mailer mit 2 send Buttens das verarbeitet?
Also der eine Button sendet an 1.php und der andere an 2.php die Daten?:ugly:
 
Man kann ein Formular definitiv nur an ein Empfängerscript schicken (und von JavaScript Spielereien würde ich da die Finger lassen, weil es eben auch einen besseren Weg gibt)

ABER:

Es ist doch auch gar kein Problem. Wenn man ein Formular hat und darin zwei Buttons und bei Klick auf Button 1 soll das Formularergebnis anders behandelt werden, als bei Button 2, dann definiert man für die Buttons einfach unterschiedliche Namen. Der eine hat das Attribut name="button1" und der zweite name="button2". In der $_POST Variablen des Empfängerscriptes ist dann entweder der Eintrag button1 = 1 oder button2 = 1 enthalten (1 wird durch einen eventuellen value Text ersetzt). Und je nachdem welcher Wert nun vorhanden ist, schickt man die restlichen $_POST Einträge (alle anderen Felder des Formulars) an die jeweils gewünschten Funktionen..
 
Zuletzt bearbeitet:
Ich gebe mal noch ein triviales Beispiel. Natürlich sollte für eine richtige Anwendung noch überprüft werden, ob in die Felder x und y auch wirklich Zahlen geschrieben werden, ob alle Werte im erlaubten Rahmen sind, SQL Injections sollten verhindert werden, der HTML Quelltext könnte ausführlicher sein, die Optik könnte ansprechender sein usw. usf... (übliche Hinweise)

test59.htm (Inhalt: Ein Formular mit 2 Buttons)
HTML:
<html>
  <head>
  <title></title>
  </head>
  <body>
    <form action="test59.php" method="post">
      x: <input type="text" name="x" /><br />
      y: <input type="text" name="y" /><br />
    
      <input type="submit" name="button1" value="Rechne x + y" />
      <input type="submit" name="button2" value="Rechne x * y" />
    </form>
  </body>
</html>

test59.php (Einzig und alleiniges Empfängerscript des Formulars)
PHP:
<?php

// Mal zwei unterschiedliche Funktionen..
function rechenweg1($x, $y){
  return $x + $y;
}

function rechenweg2($x, $y){
  return $x * $y;
}

// Diese Ausgabe dient nur der Veranschaulichung der übergebenen Formularwerte
echo '<pre>'.print_r($_POST, TRUE).'</pre>';

// Hier könnte ausgelesen und überprüft werden, was da eigentlich übergeben wurde
$button1 = @$_POST['button1']; // Mit @, weil sonst Fehlermeldung falls nicht vorhanden, genau das soll ja aber geprüft werden..
$button2 = @$_POST['button2']; // dito
$x = $_POST['x'];
$y = $_POST['y'];

// Und hier teilt sich dann je nach geklicktem Button der weitere Weg..
if ($button1 == TRUE){ // Nicht ===, da nie direkt TRUE übergeben wird, sondern nur ein Value-Wert oder 1
  echo 'x + y = '.rechenweg1($x, $y);
}
if ($button2 == TRUE){ // dito
  echo 'x * y = '.rechenweg2($x, $y);
}

?>
<br /><br />
<a href="test59.htm">Nochmal</a>