Fragebogen - Format bei Formmailer

Hallo php-Kenner!

Ich benutze einen Formmailer, in php geschrieben, um einen Fragebogen, den man online ausfüllen kann, an mich schicken zu lassen. Dafür ich im Internet ein php-Script, das ich im Internet „gefunden“ habe.

Problem: Für die statistische Auswertung ist es wesentlich einfacher, wenn man ein bestimmtes Format in der E-Mail hat. Im Moment sieht eine Mail so aus:

Frage1: a
Frage2: b
Frage3: d
Frage4: a
Frage5: c
Frage6: b
etc…

Ich möchte aber dass alle Werte, durch Kommas getrennt, hintereinander stehen, also in etwa so:

a,b,d,a,c,b

Wie kann ich das Script so ändern, dass es so aussieht?
Hier ist das Script:

<?php ### Konfiguration ###
# Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen! # An welche Adresse sollen die Mails gesendet werden? $strEmpfaenger = '[[email protected]](mailto:[email protected])';'[[email protected]](mailto:[email protected])'; # Welche Adresse soll als Absender angegeben werden? # (Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben) $strFrom = '"Formmailer" ';

# Welchen Betreff sollen die Mails erhalten?
$strSubject = 'Fragebogen-Auswertung';

# Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
# Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
$strReturnhtml = 'http://www.chilion.com/fb/danke.htm';

# 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;
}

?>



Aus dem Formular wird das Script so aufgerufen:



Ich hoffe, ich habe es gut genug erklärt und warte nun gespannt auf Antworten. Ich selbst habe leider keine Ahnung von php. Allein die Dollarzeichen und andere Sonderzeichen machen mir Angst

Hallo Grobbelflopp

am schnellsten wohl so:

> $strMailtext .= $strName.$strDelimiter.$value\_array."\n";

ersetze diese Zeile durch

$strMailtext .= $value\_array.",";

bzw. diese

> $strMailtext .= $strName.$strDelimiter.$value."\n";

durch

$strMailtext .= $value.",";

Das sollte die Werte in der Form „wert1,wert2,wert3,“ anzeigen.
hth,
Gruss Sam

Hat geklappt, vielen Dank!

Eine Frage habe ich noch. Kann man es so machen, dass, wenn jemand eine Frage auslässt, ein Leerzeichen oder ein x oder sowas in die die mail schreibt?

hi nochmal,

wir reaktivieren die Variable strDelimiter. \t steht für einen Tabulator, du kannst aber ein Zeichen deiner Wahl („x“, " ", etc.) verwenden.

$strDelimiter = "\t";

dann fragen wir etwas genauer nach dem Wert der übergebenen Variablen:

while(list($strName,$value) = each($\_POST))
{
if(is\_array($value))
{
foreach($value as $value\_array)
{
 **if($value\_array == "") {   
$strMailtext .= $strDelimiter.",";  
 } else {  
 $strMailtext .= $value\_array.",";  
 }**   
}
}
else
{
 **if($value == "") {   
$strMailtext .= $strDelimiter.",";  
 } else {  
 $strMailtext .= $value.",";  
 }**   
}
}

ist ungetestet, aber sollte klappen.
gruss
sam

Vielen Dank nochmals!

Es funktioniert soweit, allerdings nur bei Eingabefelder, also solchen, wo man was reinschreiben kann. Ich habe aber hauptsächlich Radiobuttons. Und wenn ich da einmal nichts anklicke, kommt kein „x“ (so habe ich den Platzhalter genannt) in der Mail an.

Kann man das noch ändern?
Gruß,
Tobi

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Tobi,

hauptsächlich Radiobuttons. Und wenn ich da einmal nichts
anklicke, kommt kein „x“ (so habe ich den Platzhalter genannt)
in der Mail an.

Kann man das noch ändern?

Mir fällt auf die Schnelle grad nicht ein, wie, da dein Skript einfach durch den POST-Array loopt und alle Werte in den String $strMailtext schreibt. Wenn ein Texteingabefeld nicht ausgefüllt wird, enthält der entsprechende POST-Wert einen leeren String (also z.B. Name --> „“). Ist aber (imho) in einer Radio-button-Gruppe nichts selektiert, enthält der POST Array gar keinen Eintrag dazu, d.h. das Skript „weiss“ gar nicht von diesem Input.
Vielleicht kannst du einen Button per default selektieren?
http://de.selfhtml.org/html/formulare/auswahl.htm#ra…

Gruss
sam