PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Simples Anmeldeformular in php gesucht


Kris
2005-10-05, 17:29:33
Hallo

Ich benötige für eine Webseite ein simples Anmeldeformular, das wie folgt aussehen sollte:

http://img191.imageshack.us/img191/2678/anmeldung6gd.jpg


Man darf nur eine Option wählen, sollte eine Person keines oder mehrere anwählen, muss eine Fehlermeldung erscheinen. Z.B.: "Bitte wählen Sie eine Option aus." oder "Bitte nur eine Option auswählen."

Das selbe gilt auch für die Adresse. Z.B.: "Bitte geben Sie Ihre E-Mail an."

Wenn alles korrekt ausgefüllt wurde, sollte ein kleiner Bestätigungs-Text erscheinen.

Ich habe leider keine Ahnung davon, hoffe aber auf jemanden, der so nett ist und mir eine solche Anmeldung kreiert.

Wäre super! :)

Besten Dank schonmal!

Viele Grüsse,
Kris

darph
2005-10-05, 17:47:01
Ich würde keine Checkboxes sondern Radioboxes nehmen. Dann kann man nur eines von den dreien auswählen.

Kuckst du hier (http://de.selfhtml.org/html/formulare/auswahl.htm#radiobuttons) - einfach darauf achten, daß deine drei Radioboxes das gleiche name-Attribut haben.

Eingabe überprüfst du mit einer javascript-Funktion. Darauf darfst du dich aber nicht verlassen. Denn wenn ich deine Seite besuche und vorher JS ausschalte, dann kann ich eintragen was ich will, ohne das es überprüft wird.

Kris
2005-10-05, 19:15:31
Ah ok, vielen Dank! Aber hat wer auch ein Code für das komplette Formular? (Siehe Abbildung in Post 1).

Weil ich habe nicht viel Ahnung von php, wie das lauft und geht.

Bis denne,
Kris

clm[k1]
2005-10-05, 19:28:35
Weil ich habe nicht viel Ahnung von php, wie das lauft und geht.


Dann beschäftige dich damit.
Die offizielle Dokumentation http://php.net/manual ist eine gute Referenz.

Wenn du dann Fragen zu einem speziellen Problem hast, wird dir hier sicher gerne geholfen - aber erwarte nicht, das wir hier für dich Programmieren.


clm[k1]

Kris
2005-10-05, 19:39:25
Im moment will ich auch gar nicht php lernen. ;)

Brauche so ein Script halt eben nur für das Anmeldeformular. Vielleicht hat wer ja ein ähnliches Script?

Wenn es sein muss, zahle ich auch dafür. ;)

Bis denne,
Kris

Kris
2005-10-06, 23:40:59
Ich fehle euch an, bitte helft mir!

Brauche dringend solch ein Formular.
Ich mache auch alles dafür, aber bitte, bitte helft mir. :)

Windhalf
2005-10-07, 09:24:34
Es gibt ca. 1000 Seiten mit fertigen PHP-Skripts. Wenn du dich mal umsiehst, wirst Du garantiert auch 1000 Skripts mit der gewünschten Funktionalität finden.

Beispiel auf die schnelle: HIER (http://www.phpfreaks.com/quickcode_cats/35/Forms-and-Form-Handling.php) oder HIER (http://www.php-free.de/Formular-Verarbeitung/)

Kris
2005-10-07, 12:51:57
Vielen Dank, doch auf solchen Scripts-Seiten habe ich schon paar mal durchgeklickt und kein passendes Formular gefunden, wie ich es möchte. (Mit den Radioboxes, Anmeldung und Anzahl Personen, dass alles miteinander funktioniert).

mithrandir
2005-10-07, 13:22:04
Dere!

Und was soll mit den Daten passieren? Werden die irgendwo abgelegt, per Mail versendet? Oder gibt's nur einen Bestätigungstext und die Eingaben gehen verloren?

bye, Peter

Kris
2005-10-07, 14:29:31
Wenn das Formular korrekt ausgefüllt ist, erhalten die Teilnehmer nach dem Abschicken ein kleiner Bestätigungstext auf der Webseite und ich, der Admin, erhalte ein E-Mail mit den Daten.

Also den Vor- und Nachname; Telefon; E-Mail; Anz. Personen und die Auswahl der Radioboxes.

So stell ich mir das vor. ;-)

Danke schön.

/dev/NULL
2005-10-07, 18:26:31
Ok.. Du stellst Dir das vor ich stell mir 35€ / Stunden vor.. will ja schliesslich einen Lohn dafür haben das ich mal programmieren gelernt hab..

Sorry aber diese "Ich kann nicht ich will nichts machen ich bin faul, kann mir mal einer" - Masche find ich scheisse

HellHorse
2005-10-07, 20:54:44
Mann, ihr stellt euch ja an.

renderContentOn: html
html form: [
html radioGroup in: [ :group |
#('Auswahl 1' 'Auswahl 2' 'Auswahl 3') do: [ :each |
group radioButton
selected: (each = self selection or: [ self selection isNil and: [ each = 'Auswahl 1'] ]);
callback: [ self selection: each ];
with: each.
html break ] ].
html break.
#(numberOfPersons lastname firstname phone email)
with: #('Anzahl Personen' 'Name' 'Vorname' 'Telefon' 'E-Mail')
do: [ :selector :label |
html render: label.
html textInput on: selector of: self.
html break ].
html
submitButton
callback: [
self email isEmptyOrNil
ifTrue: [ self inform: 'Bitte geben Sie Ihre E-Mail an.' ]
ifFalse: [
SMTPClient
deliverMailFrom: 'superform@3dcenter.orf'
to: #('kris@3dcenter.org')
text: (String streamContents: [ :stream |
stream
nextPutAll: 'From: <superform@3dcenter.orf>' ; cr;
nextPutAll: 'To: <kris@3dcenter.org>' ; cr ;
nextPutAll: 'Subject: super subject' ; cr ; cr.
#(selection numberOfPersons lastname firstname phone email)
with: #('Auswahl' 'Anzahl Personen' 'Name' 'Vorname' 'Telefon' 'E-Mail')
do: [ :selector :label |
stream
nextPutAll: label;
nextPutAll: ': ';
nextPutAll: (self perform: selector);
cr ]])
usingServer: 'mail.3dcenter.org'.
self inform: 'Danke' ] ];
text: 'abschicken' ]

Kris
2005-10-08, 10:42:35
@HellHorse, du bist der Beste! Ich wusste, dass man hier auch auf liebevolle Menschen trifft. ;)

Jetzt bin ich aber nicht ganz sicher wie ich den Code korrekt einbauen muss. Denn ich hab ihn einfach mal so in der Codeansicht an der Stelle, wo ich das Formular haben möchte, eingefügt, doch die Tabellen, respektiv Felder und so werden ja nicht angezeigt.

Muss man den anders einfügen?

Nochmals, vielen lieben Dank, HellHorse. :)

HellHorse
2005-10-08, 13:01:00
Kannst du nicht einbauen, ist kein PHP. Du hast ja wohl nicht ernsthaft erwartet mit deiner Einstellung hier was zu erreichen.

Aber laufen würde er schon. Packst die Methode in einen Komponenten und machst einfach
self call: MyComponent new
dann wird es dargestellt.

MadMan2k
2005-10-08, 14:39:31
@HellHorse:
was ist dennd as für ne Sprache?

Kris
2005-10-08, 17:36:14
Mhh, jetzt versteh ich nur noch Bahnhof. Die Methode in einen Komponenten packen? Was ist damit gemeint?

Mhh, ich hab doch ganz am anfang angedeutet, dass ich keine Ahnung von solchen Scripts habe. Ich hoffe ihr nimmt mir das jetzt nicht übel ...


Grüsse,
Kris

HellHorse
2005-10-08, 18:48:23
@MadMan2k
Smalltalk, das Framework ist Seaside (http://www.seaside.st/)


Mhh, ich hab doch ganz am anfang angedeutet, dass ich keine Ahnung von solchen Scripts habe. Ich hoffe ihr nimmt mir das jetzt nicht übel ...
Das nimmt dir keiner übel. Was dir übel genommen wird ist deine Einstellung, dass andere hier etwas für dich machen sollten und du keine Bereitschaft zeigst dich mit PHP auseinanderzusetzen. Deswegen waren die meisten Posts hier mehr oder weniger RTFM.

Was ich gepostet habe verwendet eine andere Technologie als PHP. Die ist inkompatibel und so ziemlich nutzlos für dich. Ich habs gemacht weil es sich schnell hinpfuschen liess und zum prollen.

Kris
2005-10-08, 19:44:49
Na toll. :-/

Dass ich in der kurze Zeit nicht PHP lernen kann ist hoffendlich verständlich. Ausserdem will ich das, im moment, auch gar nicht. Denn ich brauche, wie bereits erwähnt, ja nur für diese eine Sache, ein PHP-Script.

Und da ich hier schon mehrere Threads gesehen habe, bei dennen User ein Script erstellt bekamen, dachte ich, meine Anfrage ist hier sicher nicht fehl am Platz. Irren ist menschlich ... schade.

Wahrscheinlich hätte ich das Ganze nur anders angehen sollen, dann hätte ich vielleicht genau soviel Glück gehabt, wie die anderen User.

Naja, lange Rede kurzer Sinn ... vielleicht gibt es hier ja tatsächlich noch jemanden, der eine gute Tat vollbringen möchte. ;)

Danke schön!

clm[k1]
2005-10-08, 21:22:31
Naja, lange Rede kurzer Sinn ... vielleicht gibt es hier ja tatsächlich noch jemanden, der eine gute Tat vollbringen möchte. ;)


Na klar - ich nehme pro Stunde 5 EUR weniger als /dev/NULL ;)

Bei Interesse einfach den ersten Link in meiner Signatur anklicken.


clm[k1]

Nase
2005-10-08, 22:32:18
Nun stellt euch mal alle hier nicht so an. In der Zeit, wo ihr eure Beiträge verfasst habt, hättet ihr auch locker eben das Script zusammenschreiben können.

@Kris
Hab mal was ganz, ganz simples gemacht. Es ist weder im Design besonders schön, noch äußerst elegant - funktioniert aber trotzdem ;). Dafür musst du allerdings zwei Dateien anlegen. Einmal eine Datei mit dem Formular und einmal eine Datei, die die Formulardaten verarbeitet und verschickt.

formular.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<title>Simples Anmeldeformular in php gesucht</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>

<form action="send.php" method="post">
<p>
<input name="auswahl" type="radio" value="auswahl1"> Auswahl 1<br>
<input name="auswahl" type="radio" value="auswahl2"> Auswahl 2<br>
<input name="auswahl" type="radio" value="auswahl3"> Auswahl 3
</p>

<p>
Anzahl Personen: <input name="personen" type="text">
</p>

<p>
Name: <input name="name" type="text"><br>
Vorname: <input name="vorname" type="text"><br>
E-Mail: <input name="email" type="text"><br>
Telefon: <input name="telefon" type="text">
</p>

<p>
<input name="submit" type="submit" value="Abschicken">
<input name="reset" type="reset" value="Zurücksetzen">
</p>
</form>

</body>
</html>

send.php<?php

$auswahl = $_POST[auswahl];
$personen = $_POST[personen];
$name = $_POST[name];
$vorname = $_POST[vorname];
$email = $_POST[email];
$telefon = $_POST[telefon];

if ($auswahl == '' || $personen == '' || $name == '' || $vorname == '' || $email == '' || $telefon == '') {
echo 'Sie haben nicht alle Felder ausgefüllt!';
exit;
}

$eingaben = $auswahl .' - '. $personen .' - '. $name .' - '. $vorname .' - '. $email .' - '. $telefon;

mail("deine@email.de", "Betreff der E-Mail", $eingaben);

?>
Ich hab mich bewusst gegen eine Überprüfung der Daten per Javascript entschieden. Falls nicht alle Angaben gemacht worden sind, kann man ja immer noch mit dem Zurückbutton des Browsers wieder zurück gehen und die Angaben bearbeiten. Könnte man allerdings noch bei der Meldung hinzuschreiben und eventuell noch einen history.back()-Link hinzufügen. Zu ergänzen wäre, wenn gewünscht, noch ein Bestätigungstext, dass die Angaben versendet worden sind und noch eine Weiterleitung.

P.S.: Das einzige, was mit an PHP-Fertigkeiten mitbringen muss ist zu wissen, dass die benötigte Funktion "mail()" heißt. Dann guckst du im Manual nach, wo alles schön mit Beispielen gespickt ist. Ist im Grunde nur C&P.

MadMan2k
2005-10-08, 22:38:25
da ich mir nun auch die Mühe gemacht ahbe, poste ich es trotzdem:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Strict//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" >
<head>
<title>form</title>
</head>
<body>
<?php
if(isset($_POST['submit'])) {
$s = '';

foreach($_POST['f'] as $k => $v) {
$s .= $k.': '.$v."\n";
}

mail('kris@nerv.net', 'Das Formular', $s);
?>
<strong>versendet</strong>
<?php
} else {?>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<input type="radio" name="f[auswahl]" value="auswahl1" />Auswahl1<br />
<input type="radio" name="f[auswahl]" value="auswahl2" />Auswahl2<br />
<input type="radio" name="f[auswahl]" value="auswahl3" />Auswahl3<br />
Personen: <input type="text" name="f[personen]" value="" /><br />
Name: <input type="text" name="f[name]" value="" /><br />
Vorname: <input type="text" name="f[vorname]" value="" /><br />
Telefon: <input type="text" name="f[telefon]" value="" /><br />
E-Mail: <input type="text" name="f[email]" value="" /><br />
<input type="submit" name="submit" value="Senden"/><br />
</form>
<?php } ?>
</body>
</html>

einfach in irgendeiner datei speichern.
weitere felder kansnt du nach dem erkennbarem Schema ergänzen.

Kris
2005-10-13, 14:14:45
Vielen Dank, dafür liebe ich euch! ;) Nur laufen diese Scripts irgendwie noch nicht so einwandfrei. Wenn ich ein Formular ausgefüllt habe und auf Abschicken klicke, öffnet sich das send.php Fenster und dieses ist leer (weiss). Das sollte ja nicht sein. Man sollte nach der Anmeldung direkt wieder auf die Anmeldungs-Seite kommen.

Geht das irgendwie?

Danke schön!

mithrandir
2005-10-13, 14:57:23
Müsste wohl gehen, evtl. so (ungetestet):

<?php

$auswahl = $_POST[auswahl];
$personen = $_POST[personen];
$name = $_POST[name];
$vorname = $_POST[vorname];
$email = $_POST[email];
$telefon = $_POST[telefon];

if ($auswahl == '' || $personen == '' || $name == '' || $vorname == '' || $email == '' || $telefon == '')
{
echo 'Sie haben nicht alle Felder ausgefüllt!';
exit;
}
else
{
$eingaben = $auswahl .' - '. $personen .' - '. $name .' - '. $vorname .' - '. $email .' - '. $telefon;
mail("deine@email.de", "Betreff der E-Mail", $eingaben);
header( "location: formular.html" );
}
?>
bye, Peter

Nase
2005-10-13, 16:59:52
Soweit ich weiß musst du bei einem Redirect per header() eine absolute URI angeben. Aber ansonsten passt das so.

Kris
2005-10-13, 18:08:36
Ich habe es mal mit der Variante von Peter versucht, also:

header( "location: formular.html" );

Wenn ich dann das Formular abschicke, bin ich wieder bei der Formular Seite, so wie es ja auch sein sollte, nur wird mir kein E-Mail mit der Anmeldung versandt und das obwohl ich hier:

mail("deine@email.de", "Betreff der E-Mail", $eingaben);

meine korrekte E-Mail Adresse angegeben habe.

Gebe ich hier:

header( "location: formular.html" );

Die direkte URL zum Formular ein und drücke auf abschicken, so wird man immernoch zur leeren, weissen send.php Seite geleitet und die Anmdelung wird auch hier nicht an meine E-Mail adresse versandt.


Hab ich irgendwo was falsch gemacht?

Nase
2005-10-13, 18:16:15
Bist du sicher, dass du keine Mail bekommst? Oftmals verfangen sich Mails mit so dämlichen Betreffs im Junkmail-Filter von einigen Anbietern. Es kann aber auch sein, wenn du das Script lokal ausführst, dass du keinen Mailserver bzw. -dienst eingerichtet hast. Dann müsste aber eigentlich auch eine Fehlermeldung kommen.

Kris
2005-10-13, 18:22:16
Ah, war zu voreilig, das Mail kam mit etwa 10 Minuten verspätung doch noch an. ;-)

Allerdings möchte ich, dass nach dem Abschicken die Formular Seite wieder hergestellt wird und da irgendwo steht, dass das Formular erfolgreich abgeschickt wurde. Damit sich die User nicht x mal Anmelden weil sie nirgends eine Bestätigung erhalten.

Liesse sich das noch einrichten?

Danke schön.

Nase
2005-10-13, 18:26:47
Nein. Dann musst du entweder auf eine andere Seite verweisen, einen Bestätigungstext nach dem Abschicken der Mail ausgeben oder das Script von MadMan nehmen.

Kris
2005-10-13, 18:37:21
OK, hab auf eine andere Seite verweist. Leute ich danke euch vielmals. Was tät ich nur ohne euch! ;)

Eine kleine Frage hab ich noch und zwar; ist es möglich, dass das E-Mail statt so:

auswahl1 - Personen - Nachname - Vorname - Tel - E-Mail

So aussehen kann:

Auswahl (Nr.)
Anzahl Personen
Nachname
Vorname
Telefon
E-Mail

Wäre übersichtlicher. :)

Nase
2005-10-13, 18:42:29
$eingaben = $auswahl ."\n". $personen ."\n". $name ."\n". $vorname ."\n". $email ."\n". $telefon;

Kris
2005-10-13, 19:04:02
Wunderbar! Scheint ja gar nicht so schwer zu sein, die PHP Sprache. ;)

Eines sollte aber noch verbessert werden, damit es Perfekt ist und zwar wäre es besser, wenn statt Auswahl 1 2 und 3 je der Text steht.

Also statt:

Auswahl 1
Auswahl 2
Auswahl 3

Z.B.:

Lime Road 1481
Chenin Blanc
Grenache

Auch das bei der E-Mail dann nicht auwahl1 oder so steht, sondern gleich der richtige Text.

Wenn das noch möglich ist, bin ich der glücklichste Mensch. :)

Nase
2005-10-13, 19:24:10
Dafür guckst du einfach beim Formular, wo Auswahl 1,2,3 steht und ersetzt das durch das, was du das sonst stehen haben willst. Beachte aber auch, dass du beim input-value die Werte änderst.

Kris
2005-10-13, 19:38:43
Super. Auch das funktioniert jetzt einwandfrei. Zu Guter letzt ist mir jetzt aber doch noch was aufgefallen und zwar finde ich von Vorteil, wenn in der E-Mail nicht nur der Betreff steht, sondern auch gleich der Vorname und Nachname.

Wie kann ich das ändern?

Nase
2005-10-13, 20:04:22
Nach dem gleichem Schema, wie sich auch der Inhalt der Mail zusammensetzt.
$betreff = $name .','. $vorname;

mail("deine@email.de", $betreff, $eingaben);

Kris
2005-10-13, 20:55:43
Fast gut. Der Name und Vorname wird jetzt zwar angezeigt, dafür aber nicht der Betreff z.B. Anmeldung

Soll ja so aussehen:

Anmeldung Name Vorname

;)

Nase
2005-10-13, 21:24:33
Dann mach das doch da rein.
$betreff = 'Anmeldung: '. $name .','. $vorname;

mail("deine@email.de", $betreff, $eingaben);

Kris
2005-10-13, 22:50:52
Dacht ichs mir. Habe nämlich genau dort ebenfalls Anmeldung reingeschrieben, jedoch ohne Aufführungszeichen und Punkt, daher funktionierte es auch nicht.

Aber so ist alles Prima!

Nochmals vielen lieben Dank euch allen für eure Hilfe!

Ihr seid die Besten!