PHP Eingabeformat festlegen

rocket81

Lt. Commander
Registriert
Dez. 2007
Beiträge
1.054
Moin,
Wie kann ich es festlegen, dass eine Zahlenabfolge, bzw. ein Datum, nur nach einem bestimmten Schema eingegeben werden kann?
Das Datum soll nicht automatisch von php/mysql eingetragen werden, da man das Datum hinterher noch ändern können soll.
Das Datum soll genau nach dieser Vorgabe: "2010.02.28" eingegeben werden, da zusammenhängende Angaben nach dem Datum sortiert werden.
Wegen den Punkten im Datum muss ich ja schon mal ein Textfeld im html Formular nehmen, aber wie überprüfe ich die Eingabe ob das Datum in genau diesem Format eingegeben wurde?
Danke für eure Hilfe
Gruß
 
würde mit explode zerlegen, dann die drei werte prüfen. tage max. 31, monate max. 12 usw.
 
Wie wärs mit 3 select-Boxen, da kannst du von vornherein festlegen, welche Werte erlaubt sind (mit 'ner for-Schleife geht das ratz-fatz). Und es gibt bspw. keine Problem mit amerikanischen Eingaben (weil die ja Monat.Tag.Jahr schreiben).
 
am einfachsten gehts über reguläre ausdrücke. ist zwar nicht optimal bei so kleinen sachen, aber um es konform zu machen lohnt es sich definitiv. über google solltest du eig auch genügend darüber finden und fertige beispiele für ein datum sollte es denke ich auch geben.
 
Ich fand die Idee von Mr. Snoot ganz gut und hab da mal angefangen:

PHP:
[...]
for ($i = 2000; $i <= 2050; $i++) {
    $year .= "<option value='.$i.'>'.$i.'</option>";
}

for ($i = 1; $i <= 12; $i++) {
    $month .= "<option value='.$i.'>'.$i.'</option>";
}

for ($i = 1; $i <= 31; $i++) {
    $day .= "<option value='.$i.'>'.$i.'</option>";
}
[...]
$tpl->set('year', $year);
$tpl->set('month', $month);
$tpl->set('day', $day);
[...]

HTML:
[...]
<tr>
	    <td class="Cmite">Datum</td>
		   <td class="Cnorm">
                      <select name="year" size="1">
                        {year}
                      </select>
                      <select name="month" size="1">
                        {month}
                      </select>
                      <select name="day" size="1">
                        {day}
                      </select>
                   </td>
</tr>
[...]

Die "Options" sollten eig. via Templatesystem an die entsprechende html Datei weitergegeben werden, allerdings werden keine Optionen angezeigt... :/
Wisst ihr was ich falsch mache? :)
Danke
 
Du kannst mit JavaScript eine Erstvalidierung deines Eingabefeldes machen. Zusätzlich musst du dann halt (falls kein JS aktiviert ist) mit PHP den Wert überprüfen (die Lösung mit regulären Ausdrücken ist da wie schon erwähnt ganz gut).

Anderes gibt es keine Lösung den User bei der Eingabe einzuschränken.
 
wie wärs mit nem mini java kalender? is "stylischer" als sone boxen. gibt viele kostenlose.
 
"<option value='.$i.'>'.$i.'</option>"

ahm wieso machst du vor und nach $i Punkte? probiers so:

"<option value='$i'>$i</option>"
 
Fatal Error schrieb:
"<option value='$i'>$i</option>"
kommt aufs gleiche raus, nur dass das nicht konform ist (attributwerte werden in html mit " " angegeben). desweiteren ist das parsen von ' ' schneller. anderes thema... mehr gibts über google.
 
eigentlich nicht, er beginnt einen string mit " (doppelten hochkomma) und endet ihn mit einfachen hochkomma.

wenn dann müsste es so aussehen:

'<option value="'.$i.'">'.$i.'</option>'
 
nene, das was claW. sagt ist schon richtig...wenn ich das ganze mit echo ausgebe funktioniert es auch...allerdings habe ich probleme mit dem templatesystem von ilch und ich kann die werte nicht an die entpsrechende html datei übergeben.
aber damit habe ich mich an das ilch forum gewand.
danke an alle die mir geholfen haben ;)
 
claW. schrieb:
am einfachsten gehts über reguläre ausdrücke. ist zwar nicht optimal bei so kleinen sachen, aber um es konform zu machen lohnt es sich definitiv.


Gerade deswegen ist es doch optimal. Geringe Komplexität des Musters, kurzer String. Praktisch gleich performant wie native Stringoperationen.
 
Zurück
Oben