Formularprobleme

Deutschsprachiger Support für CMS Made Simple
Post Reply
JamieFraser
Forum Members
Forum Members
Posts: 31
Joined: Fri Oct 01, 2010 6:58 am

Formularprobleme

Post by JamieFraser »

Hi,

ich habe eine Kontaktseite erstellt, die auf ein bestimmtes Template zugreift. In diesem ist das Formular fest verankert und auch die php-Scripte. Auch habe ich eine Include-Datei eingefügt, die fast den kompletten PHP-Code für die Auswertung usw. hat.

Wenn ich nun die Seite neu aufrufe (habe im FORM-Tag bei action nix eingetragen, damit die Seite sich selbst aufruft - wie kann ich das besser machen) passiert eigentlich gar nix :(, ausser die Seite wird neu geladen.

Möchte kein fertiges Form Modul nutzen, da mir da immer zuviel des guten mit eingebaut wird, was ich gar net haben möchte.
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm
Location: Schweiz / Switzerland

Re: Formularprobleme

Post by nockenfell »

Kannst du mal was von deinem Code posten?
[this message is written with 100% recycled bits]
JamieFraser
Forum Members
Forum Members
Posts: 31
Joined: Fri Oct 01, 2010 6:58 am

Re: Formularprobleme

Post by JamieFraser »

Welchen Code möchtest du denn sehen?
Den vom Template oder dem vom CodeBehind?

Der Code usw. funktionieren, da er schon bei einer anderen Webseite läuft.
Ich weiss nur net, ob cms made simple den PHP-Code interpretiert.

Füge den mit {php}Code{/php} ins Template ein. Habs in der Config auch freigeschalten.
JamieFraser
Forum Members
Forum Members
Posts: 31
Joined: Fri Oct 01, 2010 6:58 am

Re: Formularprobleme

Post by JamieFraser »

Hab jetzt mal ein wenig rumgespielt.

Also wenn ich am Anfang der Seite meine Variablen (per {php}Variable{/php}) aufrufe, die mit den Formulardaten gefüllt sind, erscheinen diese. Mache ich das im HEAD, BODY usw. Bereich, zeigt er sie mir nicht an. Benutze ich dort aber {php}einfacher Text{/php} erscheint dieser.

Irgendwie verstehe ich das net :(
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm
Location: Schweiz / Switzerland

Re: Formularprobleme

Post by nockenfell »

Poste mal alles inkl. den Inhalt deiner Include Datei. Dann kann ich abschätzen was dein Template genau macht.

Ein Formular kannst du auch über ein Plugin oder ein UDT (benutzerdefinierter Tag) in eine normale Seite einbinden.
[this message is written with 100% recycled bits]
JamieFraser
Forum Members
Forum Members
Posts: 31
Joined: Fri Oct 01, 2010 6:58 am

Re: Formularprobleme

Post by JamieFraser »

Nicht erschrecken beim PHP-Code :)
Bin erst vor kurzem auf PHP umgestiegen und muss mich da noch einarbeiten.

Die Include-Datei gibts derzeit net, hab den Code direkt am Anfang eingebunden.

Code: Select all

{process_pagedata}<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<__html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
{* Change lang="en" to the language of your site *}

{php}
// *** Variablen ***
$va_kontakt_name      = "";
$va_kontakt_vorname   = "";
$va_kontakt_strasse   = "";
$va_kontakt_plz       = "";
$va_kontakt_ort       = "";
$va_kontakt_telefon   = "";
$va_kontakt_email     = "";
$va_kontakt_nachricht = "";
$va_kontakt_sorry     = "";
$va_form_sec          = "";

$va_error     = "";
$va_error_txt = "";

$va_frontend = "";
$vaPatEMail  = "/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/";

$va_submit = "Versenden";

// *** E-Mail versenden ***
if(isset($_POST['form_postback']) && $_POST['form_postback'] == 'send') {

  $va_kontakt_name      = $_POST['kontakt_name'];
  $va_kontakt_vorname   = $_POST['kontakt_vorname'];
  $va_kontakt_strasse   = $_POST['kontakt_strasse'];
  $va_kontakt_plz       = $_POST['kontakt_plz'];
  $va_kontakt_ort       = $_POST['kontakt_ort'];
  $va_kontakt_telefon   = $_POST['kontakt_telefon'];
  $va_kontakt_email     = $_POST['kontakt_email'];
  $va_kontakt_nachricht = $_POST['kontakt_nachricht'];
  $va_kontakt_sorry     = $_POST['kontakt_sorry'];


  if($va_kontakt_strasse . $va_kontakt_ort . $va_kontakt_email == "") {
    $va_error_txt .= "<p>Sie haben vergessen Kontaktdaten (E-Mail oder Anschrift) anzugeben.</p>";
    $va_error      = 1;
    } else {

      if($va_kontakt_name == ""){
        $va_error_txt .= "<p><strong>Name:</strong> Sie haben vergessen das Feld auszufüllen.</p>";
        $va_error      = 1;
        }

      if($va_kontakt_strasse == "" && $va_kontakt_ort == ""){
        if($va_kontakt_email != "" && preg_match($vaPatEMail, $va_kontakt_email)){
          } else {
          $va_error_txt .= "<p><strong>E-Mail:</strong> Sie haben vergessen das Feld richtig auszufüllen.</p>";
          $va_error      = 1;
          }
        }

      if($va_kontakt_email == ""){
        if($va_kontakt_strasse == ""){
          $va_error_txt .= "<p><strong>Strasse:</strong> Sie haben vergessen das Feld auszufüllen.</p>";
          $va_error      = 1;
          }
        if($va_kontakt_ort == ""){
          $va_error_txt .= "<p><strong>Ort:</strong> Sie haben vergessen das Feld auszufüllen.</p>";
          $va_error      = 1;
          }
        }
    }

  if($va_kontakt_nachricht == ""){
    $va_error_txt .= "<p><strong>Nachricht:</strong> Sie haben vergessen das Feld auszufüllen.</p>";
    $va_error      = 1;
    }

  if($va_kontakt_name == ""){
    $va_error_txt .= "<p><strong>Name:</strong> Sie haben vergessen das Feld auszufüllen.</p>";
    $va_error      = 1;
    }

  if(!empty($va_kontakt_sorry)){
    $va_error_txt .= "<p><strong>Fehler:</strong> Es ist ein Fehler aufgetreten.</p>";
    $va_error      = 1;
    }

  // *** E-Mail prüfen für den Header
  if(preg_match($vaPatEMail, $va_kontakt_email)){
    $va_kontakt_email_header = $va_kontakt_email;
  } else {
    $va_kontakt_email_header = "mail@mail.de";
  }


  // *** Fehler prüfen ***
  if($va_error == 1){
    $va_frontend = '<div class="formerror">' . $va_error_txt . '</div>';
    // $va_frontend = "<p><strong>Bitte geben Sie folgende Daten an:</strong><br>- Name<br>-Straße<br>-Ort<br><strong>oder</strong><br>- E-Mail<br>an.</p>";
    } else {

    $mail_empfaenger = "mail@mail.de";
    $mail_absender   = "mail@mail.de";
    $va_mail_betreff = "Kontaktformular  - $va_kontakt_vorname $va_kontakt_name";
    $va_mail_text    = "Name: " . $va_kontakt_name . "\r\n" .
                       "Vorname: " . $va_kontakt_vorname . "\r\n" .
                       "Straße: " . $va_kontakt_strasse . "\r\n" .
                       "PLZ: " . $va_kontakt_plz . "\r\n" .
                       "Ort: " . $va_kontakt_ort . "\r\n" .
                       "Telefon: " . $va_kontakt_telefon . "\r\n" .
                       "E-Mail: " . $va_kontakt_email . "\r\n\r\n" .
                       "Nachricht: \r\n" . $va_kontakt_nachricht;
    $header = "From: mail@mail.de" . "\r\n" .
              "Bcc: mail@mail.de" . "\r\n" .
              "Reply-To: " . $va_kontakt_email . "\r\n" .
              "MIME-Version: 1.0" . "\r\n" .
              "Content-type: text/plain; charset=utf-8" . "\r\n"; // Umlaute: charset=utf-8         html Mail: Content-type: text/html
    mail($mail_empfaenger, $va_mail_betreff, $va_mail_text, $header);

    $va_frontend = "<p>Vielen Dank für Ihr Interesse!</p><p>Wir werden uns schnellstmöglich um Ihre Anfrage kümmern.</p><p>Ihr Team</p>";

    $va_send = 1;

    }

} else {

}

{/php}

{* note: anything inside these are smarty comments, they will not show up in the page source *}
<head>
{if isset($canonical)}<link rel="canonical" href="{$canonical}" />{elseif isset($content_obj)}<link rel="canonical" href="{$content_obj->GetURL()}" />{/if}

<title>{sitename} | {title}</title>
{* The sitename is changed in Site Admin/Global settings. {title} is the name of each page *}

{metadata}
{* Don't remove this! Metadata is entered in Site Admin/Global settings. *}


{stylesheet}
{* This is how all the stylesheets attached to this template are linked to *}


{cms_selflink dir="start" rellink=1}
{cms_selflink dir="prev" rellink=1}
{cms_selflink dir="next" rellink=1}
{* Relational links for interconnections between pages, good for accessibility and Search Engine Optmization *}

{literal}
<__script__ type="text/javascript">
/* <![CDATA[ */

Hier war Javascript gestanden

/* ]]> */
</__script>
{/literal}

</head>

  </__body>

  <div id="container">

    <!-- HEADER -->
    <div id="header">
      {menu number_of_levels="1" template="minimal_menu.tpl"}
    </div>


    <!-- CONTENT -->
    <div id="content">

       <div id="content_left">
       <div id="content_left_top"></div>
       {menu start_level="2" template="minimal_menu.tpl"}
       </div>

        <div id="content_right">
        <div id="content_right_top">

<!-- Slider -->
          <div id="slider_wrapper">
          <div class="shadowleft"></div>
          <div class="shadowright"></div>

  <div id="slider">
    <img src="uploads/templates/slider1.jpg" alt="" title="#htmlcaption1" />
    <img src="uploads/templates/slider2.jpg" alt="" title="#htmlcaption2" />
    <img src="uploads/templates/slider3.jpg" alt="" title="#htmlcaption3" />
  </div>

  <div id="htmlcaption1" class="nivo-html-caption">
    <p><strong>Dies ist eine Überschrift</strong></p>
    <p>Dies ist ein kleiner Text</p>
  </div>
  <div id="htmlcaption2" class="nivo-html-caption">
    <p><strong>Dies ist eine Überschrift</strong></p>
    <p>Dies ist ein kleiner Text</p>
    <p>Dies ist ein kleiner Text2</p>
  </div>
  <div id="htmlcaption3" class="nivo-html-caption">
    <p><strong>Dies ist eine Überschrift</strong></p>
    <p>Dies ist ein kleiner Text</p>
    <p>Dies ist ein kleiner Text3</p>
  </div>

            </div>

        </div>
        <div id="content_right_main">

        {content}


{php}
 echo $va_frontend;

 if(!$va_send == 1){
{/php}
    <form name="Kontakt" action="index.php?page=19" method="post">

    <label for="kontakt_name">Name: *</label>
    <input type="text" id="kontakt_name" name="kontakt_name" value="{php} echo $va_kontakt_name;{/php}" />
    <br /><label for="kontakt_vorname">Vorname: </label>
    <input type="text" id="kontakt_vorname" name="kontakt_vorname" value="{php} echo $va_kontakt_vorname;{/php}" />

    <br /><br /><label for="kontakt_strasse">Straße: *</label>
    <input type="text" id="kontakt_strasse" name="kontakt_strasse" value="{php} echo $va_kontakt_strasse;{/php}" />
    <br /><label for="kontakt_plz">PLZ: </label>
    <input type="text" id="kontakt_plz" name="kontakt_plz" value="{php} echo $va_kontakt_plz;{/php}" />
    <br /><label for="kontakt_ort">Ort: *</label>
    <input type="text" id="kontakt_ort" name="kontakt_ort" value="{php} echo $va_kontakt_ort;{/php}" />

    <br /><br /><label for="kontakt_email">Telefon:</label>
    <input type="text" id="kontakt_telefon" name="kontakt_telefon" value="{php} echo $va_kontakt_telefon;{/php}" />
    <br /><label for="kontakt_email">E-Mail: *</label>
    <input type="text" id="kontakt_email" name="kontakt_email" value="{php} echo $va_kontakt_email;{/php}" />



    <br /><br /><label for="kontakt_nachricht">Nachricht: *</label>
    <textarea id="kontakt_nachricht" name="kontakt_nachricht" rows="0" cols="0">{php} echo $va_kontakt_nachricht;{/php}</textarea>
    <br /><label></label>
    <input type="hidden" id="form_postback" name="form_postback" value="send" />
    <input type="text" id="kontakt_sorry" name="kontakt_sorry" value="" style="display: none;" />
    <input type="submit" class="form_submit" value="Abschicken" />
    <br />
    </form>
    <p style="font-size: 10px; padding: 5px 0px 10px 5px; color: #4f5754;">Felder mit * müssen ausgefüllt werden.</p>
    {php} } {/php}


        </div>
        </div>

    <br class="clear" />
    </div>


    <!-- FOOTER-->
    <div id="footer">


      <div class="footer_box">
      <img src="uploads/templates/footer_kontakt.png" alt="Kontakt" />
      {global_content name='kontakt_footer'}
      </div>

      <div class="footer_box">
      <img src="uploads/templates/footer_rechtliches.png" alt="Rechtliches"/>
      {menu start_element="6" number_of_levels="1" template="menue_footer"}
      </div>

    <br class="clear" />
    </div>

  </div>

  <div id="body_footer"></div>
  <__body>

</__html>
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm
Location: Schweiz / Switzerland

Re: Formularprobleme

Post by nockenfell »

Sieht grundsätzlich gut aus. Ich habe den Code ein klein wenig überarbeitet, damit er als UDT gebraucht werden kann:

Code: Select all


// *** Variablen ***
$va_kontakt_name      = "";
$va_kontakt_vorname   = "";
$va_kontakt_strasse   = "";
$va_kontakt_plz       = "";
$va_kontakt_ort       = "";
$va_kontakt_telefon   = "";
$va_kontakt_email     = "";
$va_kontakt_nachricht = "";
$va_kontakt_sorry     = "";
$va_form_sec          = "";

$va_error     = "";
$va_error_txt = "";

$va_frontend = "";
$vaPatEMail  = "/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/";

$va_submit = "Versenden";

// *** E-Mail versenden ***
if(isset($_POST['form_postback']) && $_POST['form_postback'] == 'send') {

  $va_kontakt_name      = $_POST['kontakt_name'];
  $va_kontakt_vorname   = $_POST['kontakt_vorname'];
  $va_kontakt_strasse   = $_POST['kontakt_strasse'];
  $va_kontakt_plz       = $_POST['kontakt_plz'];
  $va_kontakt_ort       = $_POST['kontakt_ort'];
  $va_kontakt_telefon   = $_POST['kontakt_telefon'];
  $va_kontakt_email     = $_POST['kontakt_email'];
  $va_kontakt_nachricht = $_POST['kontakt_nachricht'];
  $va_kontakt_sorry     = $_POST['kontakt_sorry'];


  if($va_kontakt_strasse . $va_kontakt_ort . $va_kontakt_email == "") {
    $va_error_txt .= "<p>Sie haben vergessen Kontaktdaten (E-Mail oder Anschrift) anzugeben.</p>";
    $va_error      = 1;
    } else {

      if($va_kontakt_name == ""){
        $va_error_txt .= "<p><strong>Name:</strong> Sie haben vergessen das Feld auszufüllen.</p>";
        $va_error      = 1;
        }

      if($va_kontakt_strasse == "" && $va_kontakt_ort == ""){
        if($va_kontakt_email != "" && preg_match($vaPatEMail, $va_kontakt_email)){
          } else {
          $va_error_txt .= "<p><strong>E-Mail:</strong> Sie haben vergessen das Feld richtig auszufüllen.</p>";
          $va_error      = 1;
          }
        }

      if($va_kontakt_email == ""){
        if($va_kontakt_strasse == ""){
          $va_error_txt .= "<p><strong>Strasse:</strong> Sie haben vergessen das Feld auszufüllen.</p>";
          $va_error      = 1;
          }
        if($va_kontakt_ort == ""){
          $va_error_txt .= "<p><strong>Ort:</strong> Sie haben vergessen das Feld auszufüllen.</p>";
          $va_error      = 1;
          }
        }
    }

  if($va_kontakt_nachricht == ""){
    $va_error_txt .= "<p><strong>Nachricht:</strong> Sie haben vergessen das Feld auszufüllen.</p>";
    $va_error      = 1;
    }

  if($va_kontakt_name == ""){
    $va_error_txt .= "<p><strong>Name:</strong> Sie haben vergessen das Feld auszufüllen.</p>";
    $va_error      = 1;
    }

  if(!empty($va_kontakt_sorry)){
    $va_error_txt .= "<p><strong>Fehler:</strong> Es ist ein Fehler aufgetreten.</p>";
    $va_error      = 1;
    }

  // *** E-Mail prüfen für den Header
  if(preg_match($vaPatEMail, $va_kontakt_email)){
    $va_kontakt_email_header = $va_kontakt_email;
  } else {
    $va_kontakt_email_header = "mail@mail.de";
  }


  // *** Fehler prüfen ***
  if($va_error == 1){
    $va_frontend = '<div class="formerror">' . $va_error_txt . '</div>';
    // $va_frontend = "<p><strong>Bitte geben Sie folgende Daten an:</strong><br>- Name<br>-Straße<br>-Ort<br><strong>oder</strong><br>- E-Mail<br>an.</p>";
    } else {

    $mail_empfaenger = "mail@mail.de";
    $mail_absender   = "mail@mail.de";
    $va_mail_betreff = "Kontaktformular  - $va_kontakt_vorname $va_kontakt_name";
    $va_mail_text    = "Name: " . $va_kontakt_name . "\r\n" .
                       "Vorname: " . $va_kontakt_vorname . "\r\n" .
                       "Straße: " . $va_kontakt_strasse . "\r\n" .
                       "PLZ: " . $va_kontakt_plz . "\r\n" .
                       "Ort: " . $va_kontakt_ort . "\r\n" .
                       "Telefon: " . $va_kontakt_telefon . "\r\n" .
                       "E-Mail: " . $va_kontakt_email . "\r\n\r\n" .
                       "Nachricht: \r\n" . $va_kontakt_nachricht;
    $header = "From: mail@mail.de" . "\r\n" .
              "Bcc: mail@mail.de" . "\r\n" .
              "Reply-To: " . $va_kontakt_email . "\r\n" .
              "MIME-Version: 1.0" . "\r\n" .
              "Content-type: text/plain; charset=utf-8" . "\r\n"; // Umlaute: charset=utf-8         html Mail: Content-type: text/html
    mail($mail_empfaenger, $va_mail_betreff, $va_mail_text, $header);

    $va_frontend = "<p>Vielen Dank für Ihr Interesse!</p><p>Wir werden uns schnellstmöglich um Ihre Anfrage kümmern.</p><p>Ihr Team</p>";

    $va_send = 1;

    }

}

 echo $va_frontend;

 if(!$va_send == 1){
?>
    <form name="Kontakt" action="" method="post">

    <label for="kontakt_name">Name: *</label>
    <input type="text" id="kontakt_name" name="kontakt_name" value="<?php echo $va_kontakt_name;?>" />
    <br /><label for="kontakt_vorname">Vorname: </label>
    <input type="text" id="kontakt_vorname" name="kontakt_vorname" value="<?php echo $va_kontakt_vorname;?>" />

    <br /><br /><label for="kontakt_strasse">Straße: *</label>
    <input type="text" id="kontakt_strasse" name="kontakt_strasse" value="<?php echo $va_kontakt_strasse;?>" />
    <br /><label for="kontakt_plz">PLZ: </label>
    <input type="text" id="kontakt_plz" name="kontakt_plz" value="<?php echo $va_kontakt_plz;?>" />
    <br /><label for="kontakt_ort">Ort: *</label>
    <input type="text" id="kontakt_ort" name="kontakt_ort" value="<?php echo $va_kontakt_ort;?>" />

    <br /><br /><label for="kontakt_email">Telefon:</label>
    <input type="text" id="kontakt_telefon" name="kontakt_telefon" value="<?php echo $va_kontakt_telefon;?>" />
    <br /><label for="kontakt_email">E-Mail: *</label>
    <input type="text" id="kontakt_email" name="kontakt_email" value="<?php echo $va_kontakt_email;?>" />



    <br /><br /><label for="kontakt_nachricht">Nachricht: *</label>
    <textarea id="kontakt_nachricht" name="kontakt_nachricht" rows="0" cols="0"><?php echo $va_kontakt_nachricht;?></textarea>
    <br /><label></label>
    <input type="hidden" id="form_postback" name="form_postback" value="send" />
    <input type="text" id="kontakt_sorry" name="kontakt_sorry" value="" style="display: none;" />
    <input type="submit" class="form_submit" value="Abschicken" />
    <br />
    </form>
    <p style="font-size: 10px; padding: 5px 0px 10px 5px; color: #4f5754;">Felder mit * müssen ausgefüllt werden.</p>
    
    <?php } 
Diesen Code kopierst du und erstellst ein UDT (Benutzerdefinierter Tag) und nennst ihn "mailformular".

Nun gehst du auf eine "normale" Seite deiner Webseite und fügst folgenden Tag ein:

{mailformular}

Damit sollte das Formular wie gewünscht funktionieren
[this message is written with 100% recycled bits]
JamieFraser
Forum Members
Forum Members
Posts: 31
Joined: Fri Oct 01, 2010 6:58 am

Re: Formularprobleme

Post by JamieFraser »

Schaut sehr gut aus :)

Bis jetzt funktioniert es. Wenn jetzt die Mail noch ankommt, dann ist alles super :)

Danke
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm
Location: Schweiz / Switzerland

Re: Formularprobleme

Post by nockenfell »

Dazu musst du die Mailadressen im Script anpassen
[this message is written with 100% recycled bits]
JamieFraser
Forum Members
Forum Members
Posts: 31
Joined: Fri Oct 01, 2010 6:58 am

Re: Formularprobleme

Post by JamieFraser »

Die hab ich schon geändert :)

Mail kam auch an, aber schaut etwas komisch aus.

Ganz oben steht jetzt
Reply-To: info@mail.de MIME-Version: 1.0 Content-type: text/plain; charset=utf-8 Message-Id:
Date: Tue,  9 Nov 2010 22:27:55 +0100 (CET)
Umlaute werden auch falsch dargestellt. Muss mal gucken woran das liegt.
nockenfell
Power Poster
Power Poster
Posts: 751
Joined: Fri Sep 12, 2008 2:34 pm
Location: Schweiz / Switzerland

Re: Formularprobleme

Post by nockenfell »

Probiere es mal damit:

Code: Select all


$von = "mail@domain.de";
$an = "mail@domain.de"

$extra = "MIME-Version: 1.0\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: quoted-printable\n Return-Path: ".$von."\n";
	
@mail($an,$subject",$inhalt,$extra.$von,"-f".$von);

Die falschen Zeichen dürften von der falschen Codierung des Mails her kommen. UTF-8 muss verwendet werden.

der -f Parameter stellt sicher, dass die E-Mailadresse nach dem -f für Reply's von fehlgeschlagenen Mailzustellungen genutzt wird. Die Variablen selbst, musst du noch auf dein Script anpassen. Ich habe sie aus einem anderen Script kopiert.
[this message is written with 100% recycled bits]
Post Reply

Return to “German - Deutsch”