URL: https://www.overclockers.at/coding-stuff/php_formulardaten_senden_arrays_184858/page_1 - zur Vollversion wechseln!
Hi
folgendes Problem, ich hab ein Formular bestehend aus Feldern für Vor-, Nachname, Emailadresse und eine Textnachricht sowie 5 Checkboxen und zu jeder Checkbox nochmal ein Textfeld.
Ich will nun die Daten per Mail (also vom Server aus) versenden. Ich hab das soweit alles schon geschafft aber die checkboxen machen mir Probleme!
Code: PHP<input type="checkbox" name="anmeldung[]" value="Seminar1">
Zitat von NightstalkerIrgendwie will mir das nicht gelingen!
durchlaufe das array mit einer schleife (foreach). falls das array leer ist -> gib nichts aus : das machst du mit einer zählvariabel , während es durchlaufen wird ($x++).
wenn $x > 0 dann kommt der satz.
alles klar? 
Also wie hab ichs versucht, schwer zu erklären und das Formular hab ich jetzt nicht hier ich versuchs mal sonst post ich am Abend den code.
Ich hab 2 varianten probiert, einmal eine in der ich das Sendescript in der formular Datei hatte und eine wo es extern (mail.php) war beides mit gleichem Ergebnis.
So sieht mein Formular aus:
Code: PHP<form id="kontakt" name="kontakt" method="post" action="mail.php"> <p>Kontaktformular</p> <p> <label>Name <input type="text" name="name" id="name" tabindex="1" /> </label> </p> <p> <label>Nachname <input type="text" name="nachname" id="nachname" tabindex="2" /> </label> </p> <p> <label>email <input type="text" name="email" id="emaiil" tabindex="3" /> </label> </p> <p> <label>Nachricht <br /> <textarea name="nachricht" id="nachricht" cols="45" rows="5" tabindex="4"></textarea> </label> </p> <p>Anmeldungen:<br /> <label> <input type="checkbox" name="anmeldung[]" id="seminar1" value="Seminar 1" tabindex="5" /> Seminar 1</label> <br /> <label> <input type="checkbox" name="anmeldung[]" id="seminar2" value="Seminar 2" tabindex="6" /> Seminar 2</label> <br /> <label> <input type="checkbox" name="anmeldung[]" id="seminar3" value="Seminar 3" tabindex="7" /> Seminar 3</label> <br /> <label> <input type="checkbox" name="anmeldung[]" id="seminar4" value="Seminar 4" tabindex="8" /> Seminar 4</label> <br /> <label> <input type="checkbox" name="anmeldung[]" id="seminar5" value="Seminar 5" tabindex="9" /> Seminar 5</label> </p> <p> <input type="submit" name="Absenden" id="button" value="gesendet" /> </p> <p><br /> <br /> </p> </form>
Code: PHP<?php $gesendet = $_POST['gesendet']; $email = $_POST['email']; $name = $_POST['name']; $nachname = $_POST['nachname']; $nachricht = $_POST['nachricht']; $betreff = "Kontaktanfrage"
Code: PHPif ($gesendet == "Absenden") { $an ="meineadresse@meinedomain.at"; $text ="Hallo,\n Sie haben eine neue Nachricht von $vorname $nachname erhalten:\n\n ====\n $nachricht\n====\n\n"; mail($an,$betreff,$text,"From: ".$email); echo "<b>Ihre Nachricht wurde gesendet!</b>"; } else { ?>
Code: PHPforeach ($anmeldung as $seminare)
Stimmt das so?Code: PHP$anmeldung= ($_POST['anmeldung']
Würde es dir was ausmachen die kompletten files irgendwo zu pasten (nicht hier), damit wir uns ein Bild machen können?
der fehler wird sich recht flott finden lassen
Hi
nö würde es im Grunde nicht der Code steht aber eh oben
Mehr ist es nicht!
Gestern noch ein wenig gebastelt und hier ist die aktuelle Version des PHP Scripts
Hab da gestern noch mit einem Kollegen rumgebastelt, die Formatierung passt mir noch nicht aber das ist mal Nebensache. Ich bin mit der Lösung nicht ganz zufrieden denn er übergibt hier ja JEDE Checkbox, was ich nicht brauche, ich will am Ende nur die ausgewählten übergeben da ich keine grafische Darstellung will (das bräucte ich wenn ich z.B. das Formular als HTML übergeben wollte um dann auch die Checkboxen gesetzt und nicht gesetzt anzuzeigen ok)
Es sollte ja genügen die Checkboxen alle mit "anmeldung[]" im name atribut zu versehen? Damit müsste man ja eigentlich alle Values im Array anmeldung haben oder? Dann müsste man nurnoch mit foreach aus dem Array anmeldung alle Werte in eine Variable (bei mir eben als $seminare angegeben) schreiben und diese könnte man dann ja auch ausgeben. So stehts jedenfalls geschrieben
Beispielcode
Code: PHP<?php foreach($anmeldung as $seminare) echo $seminare,"<br>"; ?>

Code: PHP<?php $Absenden = $_POST['Absenden']; $email = $_POST['email']; $name = $_POST['name']; $nachname = $_POST['nachname']; $nachricht = $_POST['nachricht']; $anmeldung = $_POST['anmeldung']; $betreff = "Kontaktformular Anfrage"; if ($Absenden == "Absenden") { $an ="meineadresse@meinedomain.at"; foreach ($anmeldung as $seminare) { $seminaranmeldungen = $seminare } $text ="Hallo,\n Sie haben eine neue Nachricht von $vorname $nachname erhalten:\n\n ====\n $msgtext\n====\n\n Ich möchte mich für folgende Seminare anmelden: $seminaranmeldungen\n\n Sie können $name $nachname unter dieser $email erreichen."; mail($an,$betreff,$text,"From: ".$email); echo "<b>Ihre Nachricht wurde gesendet!</b>"; } else { echo "kein mail zum senden"; } ?>
und wo is der zähler?
Code: PHPforeach ($anmeldung as $seminare) { $seminaranmeldungen = $seminare }

Code: PHP$seminaranmeldungen = array(); foreach ($anmeldung as $seminar) { $seminaranmeldungen[] = $seminar; }
Code: PHP$seminaranmeldungen = ""; foreach ($anmeldung as $seminar) { $seminaranmeldungen .= $seminar." "; }

Ne der ist nicht gapastet, zumindest nicht von ner anderen Seite, hab ich aus dem Editor im Hintergrund kopiert, den ; hab ich einfach vergessen, kann ja mal vorkommen nicht gleich steinigen bitte *g*
Ich bin ja auch Grafiker und kein Coder!
Was mir gefehlt hat war das was du unten gepostet hast > text in string speichern!
Ich war immer der Meinung dass mir foreach ($array as $wert) dann ALLE WERTE in der variablen $wert drinnen stehen da das in den ganzen Beispielen die man so im Netz findet immer so aussieht
z.B. hier http://www.schattenbaum.net/php/array.php
Der hat genau so ein Konstrukt
ZitatMit foreach wird jeder Wert des Arrays vorrübergehend einer Variable zugeordnet und dann zB gelistet. Der Name der Variable wird durch den Befehl as angegeben.Die Liste würde dann so aussehen:Code: PHP<?php foreach($blumen as $meine_blume) echo $meine_blume,"<br>"; ?>
Rose
Tulpe
Nelke
Sonnenblume

Wie gesagt, machs mit implode dann ersparst du dir eine leidige foreach.
Code: PHP$seminare = implode(',', $anmeldung); echo $seminare; => "Seminar1,Seminar2"

Jup, hab ich gleich nach meinem Postin so gemacht
Testen kann ich hald noch nicht...
Alles roger!
Jetzt muss ich noch diverse Abfragen einbauen wie Emailadresse, Name usw. und ev. noch nen "Spamschutz" aber das dürfte weniger Aufregend sein, dazu findet sich eh einiges das sich gut adaptieren lässt da müssen im Normalfall nurnoch die Variablen geändert werden.
Danke für die Hilfe jedenfalls mal, ich komme wieder wenn ich was brauch!
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026