Individuelles Kontaktformular als Modul

Begonnen von Joe-Sixpack, 15 Dezember 2008, 14:56:30

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Joe-Sixpack

Was müßte man an dem unten stehenden Code ändern um ihn als Modul benutzen zu können?
Wenn man das Script so nutzt wie es ist, wird die Nachricht an die im Script angegebene Adresse versendet und es wird der Text "$anrede $nachname, Ihre Nachricht wurde gesendet!" ausgegeben.

Was muss man ändern damit es auch als Modul funktioniert?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>Kontaktformular</title>
'color: #b900b9; font-style: Oblique;'>
<style type="text/css">
.farbe{
    color: #0054a8;
}
</style>

</head>
<body>

<div style="text-align: center;">
<h3>Kontaktformular</h3>

<?php
if ($_POST) {
$anrede $_POST['anrede'];
$vorname $_POST['vorname'];
$nachname $_POST['nachname'];
$betreff $_POST['betreff'];
$nachricht $_POST['nachricht'];
$email $_POST['email'];

 
# Ihr Name:
 
$webmaster "Rainer Zufall";

 
# Ihre E-Mail-Adresse:
 
$an "webmaster@rainer-zufall.de";

 
# Ihre Homepage-Adresse:
 
$url "www.rainer-zufall.de";

 
# Diese Nachricht wird an Ihre E-Mail-Adresse gesendet:
 
$text "Hallo,\n Sie haben eine neue Nachricht von $anrede $vorname $nachname erhalten:\n\n
 ====\n 
$nachricht\n====\n\nSie können $anrede $nachname unter dieser $email erreichen.";

 
# Eine Kopie der Anfrage an das Postfach des Besuchers:
 
$inhalt "\nHallo $anrede $nachname,\nvielen Dank für Ihren Besuch bei $url. \n
 Wir haben folgende Nachricht erhalten:\n\n===== Beginn Nachricht =====\n
$nachricht
 \n===== Ende Nachricht =====\n\nViele Grüße,\n  
$webmaster";

 @
mail($an$betreff$text"From: " $email);
 echo 
"$anrede $nachname, Ihre Nachricht wurde gesendet!";

 if(isset(
$_POST['kopie'])) {
  @
mail($email"Bestätigung"$inhalt"From: " $an);
  echo
"<br>Sie erhalten eine Kopie Ihrer Anfrage an Ihr Postfach.";
 }
}
else { 
?>


<script type="text/javascript">
function eingaben_ueberpruefen(){
var mail = document.Formular.email.value;
if (document.Formular.vorname.value.length < 3) {
  alert("Sie haben noch keinen Vornamen eingegeben!")
  document.Formular.vorname.focus();
  return false;
}

else if (document.Formular.nachname.value.length < 3) {
  alert("Bitte geben Sie Ihren Nachnamen ein");
  document.Formular.nachname.focus();
  return false;
}

else if (mail.length < 10 || mail.indexOf ('@',0) == -1 || mail.indexOf ('.',0) == -1) {
  alert("Bitte geben Sie eine gültige E-Mail-Adresse ein.")
  document.Formular.email.select();
  return false;
}

else if (document.Formular.betreff.value.length < 10) {
  alert("Bitte geben Sie einen Betreff ein!")
  document.Formular.betreff.focus();
  return false;
}

else if (document.Formular.nachricht.value.length < 20) {
  alert("Bitte geben Sie eine Nachricht ein!")
  document.Formular.nachricht.focus();
  return false;
}

else
return true;
}
</script>

<form name="Formular" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"
onSubmit="return eingaben_ueberpruefen();">
<table cellPadding="4" cellSpacing="2" border="1">
  <tr>
   <td><b>Anrede:</b></td>
   <td>
    <select name="anrede">
     <option value="Herr" selected>Herr</option>
     <option value="Frau">Frau</option>
   </select>
   </td>
  </tr>
  <tr>
   <td><b>Vorname:</b></td>
   <td><input type="text" name="vorname" size="35" maxlength="40" class="'color: #b900b9; font-style: Oblique;'>farbe"></td>
  </tr>
  <tr>
   <td><b>Nachname:</b></td>
   <td><input type="text" name="nachname" size="35" maxlength="40" class="'color: #b900b9; font-style: Oblique;'>farbe"></td>
  </tr>
  <tr>
   <td><b>E-Mail:</b></td>
   <td><input type="text" name="email" size="35" maxlength="40" class="'color: #b900b9; font-style: Oblique;'>farbe"></td>
  </tr>
  <tr>
   <td><b>Betreff:</b></td>
   <td><input type="text" name="betreff" size="45" maxlength="60" class="'color: #b900b9; font-style: Oblique;'>farbe"></td>
  </tr>
  <tr>
   <td colspan=2>
    <b>Nachricht:</b><br><textarea name="nachricht" cols="45" rows="10" class="'color: #b900b9; font-style: Oblique;'>farbe"></textarea>
   </td>
  </tr>
  <tr>
   <td colspan=2 align=center><br>
    <input type="checkbox" name="kopie" value="ja">
    <small>Ich wünsche eine Kopie meiner Anfrage an mein Postfach</small><br><br>
    <input type="submit" value="Absenden"> *
    <input type="reset">
   </td>
  </tr>
</table>
</form>

<?php 
}
?>


</div>

</body>
</html>

reddragon

Mir verschließt sich zwar der Grund dafür, warum du ein weiteres Kontaktformular benötigst (da wir eins haben), aber hier mal der Code, um es als Modul laufen zu lassen:

<?php
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

$module_name basename(dirname(__FILE__));

include_once(
"header.php");
OpenTable();
echo ("<Dein HTML-Code>");
CloseTable();
include_once(
"footer.php");
?>


Als index.php in einem Modulordner abspeichern

Joe-Sixpack

Wenn ich mich nicht irre dann kann man das bestehende Formularnicht einfach so ohne php Kenntnisse erweitern. Sonst würde ich es sicher benutzen.

Franky

Moinsen,

es wäre sicher interessant, einen Workaround zu haben, wie man ein selbst erstelltes Formular innerhalb Pragma als Modul anzeigen lassen kann.

Der Sinn wäre eben, nach eigenen Anforderungen erstellte Formulare in Pragma anzeigen zu lassen.

In Verbindung mit meinem Lieblingsproggi für Formulare, Formtools (schreibt die ankommenden Daten direkt in eine Mysql-Datenbank und exportiert sie auf Wunsch als Excel-File), wäre das sicherlich sinnvoll.

Sowas könnte z. B. ein normales Kontaktformular, eine mehrseitige Umfrage, ein Bestellformular, eine Supportanfrage, Response auf eine Email-Kampagne u.v.m. sein.

ciao

Frank :-)
"Ich möchte schlafend sterben, wie mein Opa, nicht schreiend, wie sein Beifahrer."

Franky

Hi,

versuche gerade ne neue index.php zu erstellen.

Mit diesem Code geht es einwandfrei:
<?php

if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

// get the modul name
$module_name basename(dirname(__FILE__));



// right blocks on = 1, off = 0
$index 1;

include(
"header.php");
OpenTable();

echo (
"Testeintrag für Formular");

CloseTable();

include(
"footer.php");

?>



Wenn ich aber oben bei ECHO ein Formular mit <Form einfügen will, krieg ich unexpected T-string.

Ich finde den Fehler nicht. Klammern sind alle zu.

Steh aufm Schlauch.....  :mad2: :puzzled:
"Ich möchte schlafend sterben, wie mein Opa, nicht schreiend, wie sein Beifahrer."


Franky

Habs doch selbst gefunden, ein Kaffee hat geholfen  :morning:

Ich hatte bei <Form das ' vorne und hinten vergessen.

Jetzt gehts.

Würde dann so aussehen, wenn man ein Formular als Modul einbauen will:

<?php

if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

// get the modul name
$module_name basename(dirname(__FILE__));



// right blocks on = 1, off = 0
$index 1;

include(
"header.php");
OpenTable();

echo (
"Testeintrag für Formular");

echo (
'<form method="post" action="process.php"><input name="form_tools_form_id" type="hidden" value="1" /> 

  <p><input name="Name" type="text" /></p>
  <p><textarea name="Message" type="textarea" rows="1" cols="20"></textarea></p>
  <p><input name="B1" type="submit" value="Abschicken" /><input name="B2" type="reset" value="Zurücksetzen" /></p></form>'
);

  
CloseTable();

include(
"footer.php");

?>




Gruß

Frank  :smile:
"Ich möchte schlafend sterben, wie mein Opa, nicht schreiend, wie sein Beifahrer."

Andi

oder bisserl einfacher:

<?php
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

// get the modul name
$module_name basename(dirname(__FILE__));

// right blocks on = 1, off = 0
$index 1;

include(
"header.php");
OpenTable();
?>


Testeintrag für Formular

<form method="post" action="process.php"><input name="form_tools_form_id" type="hidden" value="1" />

  <p><input name="mxsmf_Name" type="text" /></p>
  <p><textarea name="Message" type="textarea" rows="1" cols="20"></textarea></p>
  <p><input name="B1" type="submit" value="Abschicken" /><input name="B2" type="reset" value="Zurücksetzen" /></p>
</form>

<?php
CloseTable
();

include(
"footer.php");

?>


Dann erspart man sich die echo Aufrufe und die Anführungszeichenjongliererei....  ;)
schön´s Grüssle, Andi

Franky

stimmt :-)

Funkt jedenfalls perfekt als Modul, auch in Zusammenarbeit mit Formtools.

Die verschickten Daten landen in der Mysql-DB und können als Text oder Excel exportiert werden. Und ich bekomm ne Mail wenn was neues da ist.

Echt ne nette Sache :-)

bye

"Ich möchte schlafend sterben, wie mein Opa, nicht schreiend, wie sein Beifahrer."

Joe-Sixpack

Ja Danke, mit dem letzten Schnipsel klappt es nun auch.  :thumbup:

Wäre es frech noch nach einer Variante zu fragen die die Formulardaten per eMail verschickt und noch eine kleine Rückmeldung wie z.B. "Ihre Daten wurden versendet" ausgibt?

Joe-Sixpack


Baldyman

Zitat von: Joe-Sixpack am 22 Januar 2009, 15:31:01
... Wäre es frech noch nach einer Variante zu fragen die die Formulardaten per eMail verschickt und noch eine kleine Rückmeldung wie z.B. "Ihre Daten wurden versendet" ausgibt?

Nur für die, die genauso danach gesucht haben.
Habe es auch mit Formtools gelöst und ein Modul gebastelt.
Funktioniert ohne Probleme.
Im Inhaltsmanager einfach eine Seite anlegen mit Inhalt z.B.

ZitatDanke für Ihr Interesse. Ihre Nachricht wurde übermittelt

In der Formtools Administration hab ich dann einfach in der Grundeinstellung des Formulars
weitergeleitet auf die Seite des Inhaltsmanagers. Der Punkt heißt dort Weiterschaltung der Internetadresse.
Diese wird angezeigt, wenn die Daten versendet wurden.