Thema: Formulardatendarstellung

Hi Folks!

Es geht um die Darstellung und Verarbeitung eines Formulars.
Ich habe mehrere Checkboxen vorliegen.

Bisher habe ich das so gelöst:

Katalog xy : on
Katalog zz :
Katalog uzt : on

Also zuerst die Katalogbezeichnung und danach die angabe on/leer.

Nun möchte ich das anders regeln.
Die Bezeichnung möchte ich gerne durchnumerieren und danach soll statt on/leer die Katalogbezeichnung stehen:

1. Infoanforderung : Katalog xy
2. Infoanforderung : Katalog zz
3. Infoanforderung : Katalog uzt

wobei nur die Felder auftauchen sollen, die auch wirklich angewählt worden sind.

wie mache ich das am Besten?

danke & gruß

2

Re: Formulardatendarstellung

Ich verstehe nur Bahnhof...

Basti

Re: Formulardatendarstellung

hallo!
könntest du ein bissel quellcode posten? Wäre hilfreich..

cybersys
anything you want to

Re: Formulardatendarstellung

ok...dann versuche ich es mal etwas konkreter.
Ne ganz normale mail-Funktion:

<?

$mailto = "henrik@hohoff-projekt.de";
$subject = "Kataloganforderung";

$body  = "--------------------------------------------------------------------------------n";
$body .= "Kataloganforderung - Datum: " . date("d.m.Y H:i:s") . "n";         
$body .= "--------------------------------------------------------------------------------nn";

$body .= "Kundendatenn";
$body .= "--------------------------------------------------------------------------------n";
$body .= "Anrede: ". $_POST["anrede"] ."n";
$body .= "Nachname: " . $_POST["name"] ."n";  
$body .= "Vorname: ". $_POST["vname"] ."n";
$body .= "Firma: ". $_POST["firma"] ."n";
$body .= "Strasse: ". $_POST["str"] ."n";
$body .= "PLZ/Ort: ". $_POST["plz"] ."n";
$body .= "Land: ". $_POST["land"] ."n";
$body .= "Telefon: ". $_POST["tel"] ."n";
$body .= "Fax: ". $_POST["fax"] ."n";
$body .= "E-Mail: ". $_POST["email"] ."nn";

$body .= "Nachrichtt: ". $_POST["textfeld"] ."nn";

$body .= "Katalogauswahln";
$body .= "--------------------------------------------------------------------------------n";
$body .= "Lieferprogramm:t ". $_POST["lieferprogramm"] ."nn";

$body .= "CONTI SCHWINGMETALL® CD: ". $_POST["schwing1"] ."n";
$body .= "SCHWINGMETALL® Lieferprogramm: ". $_POST["schwing2"] ."n";
$body .= "Schwingungstechnik Preisliste: ". $_POST["schwing3"] ."n";
$body .= "WILLBRANDT Schockdämpfer: ". $_POST["schwing4"] ."n";
$body .= "CAVOFLEX®-Drahtseilfederelemente: ". $_POST["schwing5"] ."n";
$body .= "Elastische Lagerung Schiffsabgasleitungen: ". $_POST["schwing6"] ."n";
$body .= "Unterwasserverschlüsse: ". $_POST["schwing7"] ."n";
$body .= "Barry Controls: ". $_POST["schwing8"] ."n";
$body .= "Conti Luftfedern: ". $_POST["schwing9"] ."nn";

$body .= "Ã?bersicht Gummikompensatoren: ". $_POST["kompensator1"] ."n";
$body .= "SCHWINGMETALL® Lieferprogramm: ". $_POST["kompensator2"] ."n";
$body .= "Gummikompensator Typ 64: ". $_POST["kompensator3"] ."n";
$body .= "Preisliste Gummikompensatoren: ". $_POST["kompensator4"] ."n";
$body .= "Edelstahlkompensatoren: ". $_POST["kompensator5"] ."nn";

mail($mailto,$subject,$body);
?>

und folgender Screenshot zeigt, wie die mail dann ankommt:
http://www.hohoff-projekt.de/pics/mail_screenshot.gif

wie Ihr seht steht da links immer die Katalogbezeichnung, zB Edelstahlkompensatoren und rechts daneben der übertragende Wert, ob es halt angeklickt worden ist (on) oder nicht (dann steht da auch nichts=leer).
Jedes Feld und dessen Inhalt wird so auf jeden Fall übertragen, die ganze Liste wird mitgeschickt.
Nun möchte ich, dass nur die Felder übertragen werden, die auch angewählt wurden und zwar nach dem oben beschriebenen Muster.

die angewählten Felder werden durchnumeriert und daneben als zu übertragender Wert soll die Katalogbezeichnung stehen, zB:

1. Infoanfrage : Edelstahlkompensatoren
2. Infoanfrage : Gummikompensatoren
usw.

Ich verstehe nur Bahnhof...

auch das ist ein Anfang smile

danke & gruÃ?

5

Re: Formulardatendarstellung

Hi,

wie Du Checkboxen richtig auswertest solltest Du hier finden:

http://www.dclp-faq.de/q/q-formular-checkbox.html

Um das ganze dann noch durchzunummerieren würde ich vorschlagen Du verwendest einen Counter den Du immer um eins hochzählst wenn Du ein Feld anzeigst (weil es gefüllt ist). Und genau diesen Counter gibst Du beim nächsten gefundenen Eintrag aus.

Hilft Dir das?

cu
green

6

Re: Formulardatendarstellung

Jo, so ähnlich würde ich es auch machen:

Formular:

<input type="checkbox" name="katalog[]" value="katalog 1" />
<input type="checkbox" name="katalog[]" value="katalog 2" />

Verarbeitung:

if (isset($_POST['katalog'])) {
    foreach ((array) $_POST['katalog'] AS $katalog) {
        echo "$katalog<br/>";
    }
}

Basti

Re: Formulardatendarstellung

Holla, danke Ihr Beiden!

das klappt ja prima:

<?

$mailto = "info@willbrandt.de";
$subject = "Kataloganforderung";

$body  = "--------------------------------------------------------------------------------n";
$body .= "Kataloganforderung - Datum: " . date("d.m.Y H:i:s") . "n";         
$body .= "--------------------------------------------------------------------------------nn";

$body .= "Kundendatenn";
$body .= "--------------------------------------------------------------------------------n";
$body .= "Anrede: ". $_POST["anrede"] ."n";
$body .= "Nachname: " . $_POST["name"] ."n";  
$body .= "Vorname: ". $_POST["vname"] ."n";
$body .= "Firma: ". $_POST["firma"] ."n";
$body .= "Strasse: ". $_POST["str"] ."n";
$body .= "PLZ/Ort: ". $_POST["plz"] ."n";
$body .= "Land: ". $_POST["land"] ."n";
$body .= "Telefon: ". $_POST["tel"] ."n";
$body .= "Fax: ". $_POST["fax"] ."n";
$body .= "E-Mail: ". $_POST["email"] ."nn";

$body .= "Nachricht: ". $_POST["textfeld"] ."nn";

$body .= "Katalogauswahln";
$body .= "--------------------------------------------------------------------------------n";

if (isset($_POST['katalog'])) {
    $counter=1;
    foreach ((array) $_POST['katalog'] AS $katalog) {
        $body .= "$counter. Informationsanforderung: $katalogn";
        $counter++;
    }
} 

mail($mailto,$subject,$body);
?>

ich hatte zuerst die value-Werte bei den Checkboxes nicht angegeben, dann gibt er als default wohl immer on/leer an. Dieses Handling ist mir nicht in den Sinn gekommen. Danke!! smile

gruß

8

Re: Formulardatendarstellung

Das if (isset($_POST['katalog'])) kann noch vor das $body.='Katalogauswahl'.

Und, anstatt einem Zähler kannst du auch direkt den Array-Index nehmen (und je 1 hinzuzählen, da er ja bei 0 beginnt):

foreach ($_POST['katalog'] AS $key => $value) {
    echo "Anforderung {$key++}: $value<br/>";
}

Basti

Re: Formulardatendarstellung

werd ich bei Gelegenheit noch mal ändern....
das ist echt cool, schön übersichtlich. Im ersten Beitrag habe ich der Übersicht wegen nur etwa ein drittel des Formularumfanges gepostet, das hat sich ganz schön aufgebläht...

FreudeFreude!

tschöö