• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Formular sendet beim drucken zusätzlich

hExapod4

Neues Mitglied
Hallo zusammen!


Folgendes Problem:

Wenn ich auf den Druckbutton meines Formulars drücke, druckt er ganz normal, so wie ich mir das auch vorstelle!
Nur sendet er gleichzeitig das Formular per Mail auch noch. Für diesen Weg hätte ich eigentlich den Submit-Button.

Hier mal der Code:

Code:
<?php
   header("content-type: text/html; charset=utf-8");
### Konfiguration ###

# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

# An welche Adresse sollen die Mails gesendet werden?
$strEmpfaenger = '[email protected]';

# Welche Adresse soll als Absender angegeben werden?
# (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)
$strFrom       = '"Formmailer" <[email protected]>';

# Welchen Betreff sollen die Mails erhalten?
$strSubject    = 'neuer KFZ-Kaufvertrag';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = '#';

# Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
$strDelimiter  = ":\t";

### Ende Konfiguration ###

if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}

?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">

<head>

<title>KFZ-Kaufvertrag</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="JavaScript">

function formCheck(formobj){
        // Enter name of mandatory fields
        var fieldRequired = Array("name", "telefon" , "e-mail" , "geworbener");
        // Enter field description to appear in the dialog box
        var fieldDescription = Array("Name", "Telefon" , "E-Mail" , "Name des Geworbenen");
        // dialog message
        var alertMsg = "Bitte füllen Sie alle erforderlichen Felder aus:\n";

        var l_Msg = alertMsg.length;

        for (var i = 0; i < fieldRequired.length; i++){
                var obj = formobj.elements[fieldRequired[i]];
                if (obj){
                        switch(obj.type){
                        case "select-one":
                                if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
                                        alertMsg += " - " + fieldDescription[i] + "\n";
                                }
                                break;
                        case "select-multiple":
                                if (obj.selectedIndex == -1){
                                        alertMsg += " - " + fieldDescription[i] + "\n";
                                }
                                break;
                        case "text":
                        case "textarea":
                                if (obj.value == "" || obj.value == null){
                                        alertMsg += " - " + fieldDescription[i] + "\n";
                                }
                                break;
                        default:
                        }
                        if (obj.type == undefined){
                                var blnchecked = false;
                                for (var j = 0; j < obj.length; j++){
                                        if (obj[j].checked){
                                                blnchecked = true;
                                        }
                                }
                                if (!blnchecked){
                                        alertMsg += " - " + fieldDescription[i] + "\n";
                                }
                        }
                }
        }

        if (alertMsg.length == l_Msg){
                return true;
        }else{
                alert(alertMsg);
                return false;
        }
}
// -->
</script>
</head>

<body>
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post" onSubmit="return formCheck(this);">
<center><table width="700" border="0" bgcolor="#babec2">
...
        
  ...           <tr>
                <td style="width: 173px" class="style10">&nbsp;</td>
                <td class="style6">
                <font size="2">
                <span class="style11"><div class="hideforprint">
        <input type="submit" name="Submit" value="Absenden" /></span></font><span class="style10">
                </span></div>
        <td colspan="2" class="style10">&nbsp;</td>
                <td colspan="2"><div class="hideforprint">
                <input name="ausdrucken" onClick="javascript:window.print();" type="submit" value="Drucken" /></div></td>
                <td class="style9"><div class="hideforprint">
                <input name="reset" type="reset" value="Zurücksetzen" /></div></td>
        </tr>
        <tr>
                <td style="width: 173px" class="style10">&nbsp;</td>
                <td class="style10">&nbsp;</td>
                <td colspan="2" class="style10">&nbsp;</td>
                <td colspan="2" class="style10">&nbsp;</td>
                <td class="style9">&nbsp;</td>
        </tr>
</table></center>
</form>

</body>

</html>
 
Dieses Script erinnert mich irgendwie an folgenden Thread :D (Wenn du das dort auch bist, was ich jetzt erstmal nicht annehme, Crosspostings sind (zumindest im php.de-Forum verboten)) ;)

email-adresse als variable übergeben - php.de

Um auf dein Problem zu sprechen zu kommen.

Ich habe mir jetzt nicht den Code durchgelesen, zu lang ;)
Aber ich habe dich so verstanden dass du zwei Buttons hast. Einer heißt meinetwegen "print", der andere "sendMail". (entsprechend name="print" bzw. name="sendMail")

Überprüfen welcher Button gedrückt wurde:

PHP:
if ($_POST) {
  if (isset($_POST["print"])) {
    //druck mir was
  } else if (isset($_POST["sendMail"])) {
    //schick mir ne Mail
  }
}

Vielleicht hilft dir dieser Ansatz.
 
Du hast zwei Submit-Buttons. Auch Dein Druck-Button ist ein Submit-Button, weswegen er natürlich auch das Formular absendet.

Du kannst einfach ein "return false;" nach dem Druckaufruf einbauen, dann wird die Abarbeitung dort gestoppt und das Formular wird nicht abgesendet.

Allerdings halte ich Druck-Buttons für überflüssig und verwirrend. Der Browser hat schließlich auch einen Druck-Button. Und unter Verwendung eines Stylesheets für media="print" muss man auch keine eigene Druckversions-Seite mehr erstellen.
 
Zurück
Oben