PHP Abfrage eines E-Mail Felds und Übergabe an neues Formular
Bruzzler
- php
Hallo zusammen,
folgendes Problem habe ich:
ich habe ein formularfeld, in das man die EmailAdresse eingeben kann:
<form id="newsletter-form" name="newsletter-form" method="get" action="http://blabla.html">
<div class="input_text"><input id="email" name="email" value="Email-Adresse" size="16
" onclick="if(this.value=='Email-Adresse'){this.value = ''; $(this).addClass('darkGray');}" onblur="if(this.value==''){this.value = 'Email-Adresse'; $(this).removeClass('darkGray');}" type="text" /></div>
<div><input align="right" type="image" src="/mediadb/blabla.jpg" /></div>
</form>
Dieses Feld soll an ein neues Formularfeld übergeben werden, das sieht so aus:
<td><input type="text" name="email" value="<?php echo $email; ?>" class="anmeldung blue_11">
</td>
Das funktioniert soweit auch ganz gut, allerdings habe ich das Problem, dass wenn ein User keine E-mail Adresse eingibt und auf Absenden klickt, der Wert "E-Mail Adresse" in das neue Feld übergeben wird.
Kann ich da eine Abfrage einbauen, so dass das Feld nur übergeben wird, wenn eine E-Mail Adresse eingetragen wurde und ansonsten ein leeres Feld übergeben wird?
Falls ja, wie?
Danke für eure Hilfe.
Viele Grüße
Bruzzler
Kann ich da eine Abfrage einbauen, so dass das Feld nur übergeben wird, wenn eine E-Mail Adresse eingetragen wurde und ansonsten ein leeres Feld übergeben wird?
Nein, das mit PHP unmöglich, da PHP erst bei der verarbeitung des Formulars die bereits übergebenen Daten auswerten kann.
Falls ja, wie?
Auch wenn ich mit Nein geantwortet habe: die Möglichkeit, dass du den übergebenen String prüfst, besteht immer noch - wenn er "E-Mail Adresse"[1] entspricht, zeigst du ihn einfach nicht an - das ist imho aber unsinnig.
Besser ist es, vernüftiges Markup zu verwenden, das sieht dann etwa so aus:
<label for="email">E-Mail-Adresse</label> <input type="text" name="email" id="email" />
Das <label />
- und das <input />
-Element positionierst du mit CSS übereinander (das <label />
liegt unten drunter, das <input />
-Element hat einen transparenten Hintergrund.
Beim :focus
auf das <input />
-Element, tauscht du den transparenten Hintergrund gegen einen soliden - das hat den Effekt, dass man "E-Mail-Adresse" nicht mehr sieht.
Für Browser die mit :focus
auf <input />
-Elemente nichts anfangen können, kannt du zusätzlich ein JavaScript einbauen.
[1] es heisst übrigesn "E-Mail-Adresse", da fehlt ein Bindestrich
Besser ist es, vernüftiges Markup zu verwenden, das sieht dann etwa so aus:
<label for="email">E-Mail-Adresse</label> <input type="text" name="email" id="email" />
>
> Das `<label />`{:.language-html}- und das `<input />`{:.language-html}-Element positionierst du mit CSS übereinander (das `<label />`{:.language-html} liegt unten drunter, das `<input />`{:.language-html}-Element hat einen transparenten Hintergrund.
>
> Beim `:focus`{:.language-css} auf das `<input />`{:.language-html}-Element, tauscht du den transparenten Hintergrund gegen einen soliden - das hat den Effekt, dass man "E-Mail-Adresse" nicht mehr sieht.
>
> Für Browser die mit `:focus`{:.language-css} auf `<input />`{:.language-html}-Elemente nichts anfangen können, kannt du zusätzlich ein JavaScript einbauen.
>
Hi suit,
danke für die flotte Antwort.
Ich glaub dann würde ich das lieber gleich komplett über ein JS realisieren. Hast du ne Idee, wo ich sowas finde, weil von JS hab ich keine Ahnung...
Greets
Bruzzler
Ich glaub dann würde ich das lieber gleich komplett über ein JS realisieren.
Also, damits ohne JavaScript garnicht funktioniert und du erst wieder ein Problem hast, wenn PHP Werte bekommt
Hast du ne Idee, wo ich sowas finde, weil von JS hab ich keine Ahnung...
http://www.alistapart.com/articles/makingcompactformsmoreaccessible
»» Ich glaub dann würde ich das lieber gleich komplett über ein JS realisieren.
Also, damits ohne JavaScript garnicht funktioniert und du erst wieder ein Problem hast, wenn PHP Werte bekommt»» Hast du ne Idee, wo ich sowas finde, weil von JS hab ich keine Ahnung...
http://www.alistapart.com/articles/makingcompactformsmoreaccessible
Hallo Suit,
danke für den Link
ich habs nun umgesetzt, gefällt mir eig. auch ganz gut.
Leider habe ich nen kurzen Delay (Zuerst steht "E-Mail Adresse" über dem Feld, dann im Feld).
Weisst du, woran das liegt? Auf der Beispielseite von dir ist der Delay viel kürzer.
Hier die HP
Danke für Hilfe und viele Grüße
Weisst du, woran das liegt? Auf der Beispielseite von dir ist der Delay viel kürzer.
Daran, dass JavaScript eine Zeit um ausführen benötigt bzw. Rechenzeit für sich beantsprucht.
ggf. ist es sinnvoll, wenn du das nötige JavaScript früher ausführst.