Datums/Timestamp Problem

Daensch

Erfahrenes Mitglied
So.. Hallo erstmal =)

Ich hab ein Problem mit der Realisierung meiner Idee.

Und zwar lasse ich inzwischen alles per Timestamps laufen auf meiner Webseite, funktioniert eig. auch wunderbar.
Allesdings is mir gerade aufgefallen, das ich nicht weiss wie ich z.b. ein Geburtstagsdatum was man eingeben muss als "Benutzer" wie ich das umwandel. bz. auch in welchem Format ich es von ihm akzeptiere.
Hab bislang eine Form :
PHP:
<p>
<span class="schrift">Geb.-Datum : <select name="tag"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select>

<select name="monat"><option value="1">Januar</option><option value="2">Februar</option><option value="3">März</option><option value="4">April</option><option value="5">Mai</option><option value="6">Juni</option><option value="7">Juli</option><option value="8">August</option><option value="9">September</option><option value="10">Oktober</option><option value="11">November</option><option value="12">Dezember</option></select>

<select name="jahr"><option value="1940">1940</option><option value="1941">1941</option><option value="1942">1942</option><option value="1943">1943</option><option value="1944">1944</option><option value="1945">1945</option><option value="1946">1946</option><option value="1947">1947</option><option value="1948">1948</option><option value="1949">1949</option><option value="1950">1950</option><option value="1951">1951</option><option value="1952">1952</option><option value="1953">1953</option><option value="1954">1954</option><option value="1955">1955</option><option value="1956">1956</option><option value="1957">1957</option><option value="1958">1958</option><option value="1959">1959</option><option value="1960">1960</option><option value="1961">1961</option><option value="1962">1962</option><option value="1963">1963</option><option value="1964">1964</option><option value="1965">1965</option><option value="1966">1966</option><option value="1967">1967</option><option value="1968">1968</option><option value="1969">1969</option><option value="1970">1970</option><option value="1971">1971</option><option value="1972">1972</option><option value="1973">1973</option><option value="1974">1974</option><option value="1975">1975</option><option value="1976">1976</option><option value="1977">1977</option><option value="1978">1978</option><option value="1979">1979</option><option value="1980">1980</option><option value="1981">1981</option><option value="1982">1982</option><option value="1983">1983</option><option value="1984">1984</option><option value="1985">1985</option><option value="1986">1986</option><option value="1987">1987</option><option value="1988">1988</option><option value="1989">1989</option><option value="1990">1990</option><option value="1991">1991</option><option value="1992">1992</option><option value="1993">1993</option><option value="1994">1994</option><option value="1995">1995</option><option value="1996">1996</option><option value="1997">1997</option><option value="1998">1998</option><option value="1999">1999</option><option value="2000">2000</option></select></span></p>

Wie dies =) so kann der Benutzer zumindest für mich keine grossen Fehler machen.
wie wandel ich jetzt dies eingegebene in ein Timestamp um? (kann ja ruhig 0:01H sein)
Und wie handle ich das Problem mit den Daten vor 1970?

PHP:
echo $tag.".".$monat.".".$jahr  // ?  -  17.1.1970

Hab n bissl über den Befehl strtotime() gelesen, nur versteh ich es nicht ganz! =(

Vielen Dank schonma für jede Hilfe!

mfg & greetz²all

Daensch
 
Hatte da mal ne ältere Funktion geschrieben, villeicht hilfts dir!
PHP:
function make_strtotime($datum,$art) {
  $monat[1] = "January";
  $monat[2] = "February";
  $monat[3] = "March";
  $monat[4] = "April";
  $monat[5] = "May";
  $monat[6] = "June";
  $monat[7] = "July";
  $monat[8] = "August";
  $monat[9] = "September";
  $monat[10] = "October";
  $monat[11] = "November";
  $monat[12] = "December";
  $dmy = explode(".",$datum);
  if (strlen($dmy[1]) == 2) {
    if ($dmy[1] <= 9) {
      $mon = explode("0",$dmy[1]);
      $month = $monat[$mon[1]];
    }
    else {
      $month = $monat[$dmy[1]];
    }
  }
  if ($dmy[0]+1 > 31) {
    $month = $monat[$dmy[1]+1];
    $day = 1;
  }
  else {
    $day = $dmy[0];
    $day++;
  }
  $year = $dmy[2];
  $str = $day." ".$month." ".$year;
  if ($art == 1) {
    $str = $day." ".$month." ".$year;
  }
  elseif ($art == 2) {
    $str = strtotime($str);
  }
  return $str;
}
$art kann 1 oder 2 sein, bei 1 wird ein Datum zurückgegeben, bei 2 ein Timestamp :)

/€dit:
Nur als Tipp:
Mach doch die Select-Felder mit ner For-Schleife, ist einfacher und übersichtlicher (z.B. die Jahre)
PHP:
<select name="jahr">
<?
for ($i=1950;$i<=1990;$i++) {
echo "<option value=\"".$i."\">".$i."</option>";
}
?>
</select>
:)
 
Zuletzt bearbeitet:
Operator_Jon hat gesagt.:
Hatte da mal ne ältere Funktion geschrieben, villeicht hilfts dir!
:suspekt: Umständlicher gehts nich mehr? Warum nicht in der Datenbank die entsprechende Spalte als datetime anlegen und Datum im ISO-Format (yyyy-mm-dd hh:mm:ss) übergeben? :rolleyes:
 
Hallo,

so wie ich das Verstanden hab möchtest du überprüfen ob die Angaben die ein User macht Sinn machen und er keien Quatsch schreiben kann.
Da muss ich dir eins sagen das wäre dann das falsche Forum, das wäre dann eher Javascript klar geht es in PHP auch aber Java hat den vorteil das die Seite nicht erst neu geladen werden muss. Ich hab dir mal just ein Beispiel aus selfHTML copiert (da hättest du auch mal gucken sollen).
HTML:
<html>
<head>
<title>Formulareingaben &uuml;berpr&uuml;fen</title>
<script type="text/javascript">
<!--
function chkFormular(){
if(document.Formular.User.value == "") { alert("Bitte Ihren Namen eingeben!");
document.Formular.User.focus();
return false;
}
if(document.Formular.Ort.value == "") {
alert("Bitte Ihren Wohnort eingeben!");
document.Formular.Ort.focus(); return false;
}
if(document.Formular.Mail.value == "") {
alert("Bitte Ihre E-Mail-Adresse eingeben!");
document.Formular.Mail.focus(); return false;
}
if(document.Formular.Mail.value.indexOf('@') == -1) {
alert("Keine E-Mail-Adresse!");
document.Formular.Mail.focus(); return false;
}
if(document.Formular.Alter.value == "") {
alert("Bitte Ihr Alter eingeben!");
document.Formular.Alter.focus(); return false;
}
var chkZ = 1;
for(i=0;i<document.Formular.Alter.value.length;++i)
if(document.Formular.Alter.value.charAt(i) < "0" || document.Formular.Alter.value.charAt(i) > "9") chkZ = -1; if(chkZ == -1) {
alert("Altersangabe keine Zahl!");
document.Formular.Alter.focus(); return false;
}
}
//-->
</script>
</head>
<body bgcolor="#EEEEEE" text="#000000">
<h1>Formular</h1>
<form name="Formular" action="http://selfaktuell.teamone.de/cgi-bin/formview.pl" method="post" onSubmit="return chkFormular()">
<pre>Name: <input type="text" size="40" name="User">
Wohnort: <input type="text" size="40" name="Ort">
E-Mail: <input type="text" size="40" name="Mail">
Alter: <input type="text" size="40" name="Alter">
Formular: <input type="submit" value="Absenden"><input type="reset" value="Abbrechen">
Zum Absenden muss eine Internetverbindung bestehen!</pre>
</form>
</body>
</html>
Ich hoffe das wasrs was du wolltest, wenn nicht dann sags einfach.
 
Security hat gesagt.:
Hallo,

so wie ich das Verstanden hab möchtest du überprüfen ob die Angaben die ein User macht Sinn machen und er keien Quatsch schreiben kann.
(...)
Ich hoffe das wasrs was du wolltest, wenn nicht dann sags einfach.
Huhm, da scheinst Du aber was nicht richtig verstanden zu haben :p

Daensch wollte vielmehr wissen, in welchem Format er das Datum aus dem Formular in die Datenbank schreiben soll bzw. wie er das vom Benutzer ausgewählte Datum in einen Timestamp formatiert bekommt.
 
Ja das habe ich dann auch gemerk leider erst als es zu spät war. Als ich angefangen hab zu Posten, hatte noch keiner geschrieben und als ich dann gesendet, hatte waren schon 3 vor mir.
 
ja.. danke erstma für die antworten =)

@chino : Und wie ? @ 1sten Post

und allgm. meine ich mit Keinen Mist eingeben, das der benutzer z.b. in einem Textfeld jetzt schreiben könnte:

1 Januar 02

der nächste dann

04/10/22

Mit dem Auswahlform bin ich eigentlich schon recht zufrieden, so wählt er zwischen einen von mir vorgegebenen Variablen lediglich den Wert =) sozusagen..
Jez fehlt mir halt noch. Wie ich dann meine 3 Variablen mit TAG, MONAT, JAHR
als (am besten halt als timestamp) in die datenbank bekomme!
Da fehlts mir irgendwie an einer kreativen Idee, bzw den richtigen Funktionen/Befehlen!
Mein script was ich jez habe, hohlt sich aus der Datenbank das Geb.-Datum als
z.b. 18.12.1940
und rechnet dies dann halt in sein Alter um auf den Details vom jeweiligen!
Nur ich würde das gerne per timestamp machen bzw umschreiben wollen, da ich das später vielleicht nochmal gebrauchen werde.

greetz²all & thx !


@Secure: Sachmal, kannst du mir vielleicht n javascript geben, womit ich ein POPUP erscheinen lassen kann, wenn z.b. in einer Datenbank ein Eintrag besteht (ein bestimmter) Die Abfrage selbst könnte man ja auf jeder Seite zu anfang machen, nur das POPUP weiss ich halt nich wie das geht!
PHP:
IF (isset($fehler)) { POPUP }
 
Zuletzt bearbeitet:
So wie ich das jetzt verstanden habe, willst du ein Script für n PopUp und ich hoffe dieses mal habe ich dich verstanden. 8)
Ich gebe dir mal die Standart Variante es gibt zwar welche die selbst PopUpBlocker austrixen, aber das muss ja nicht sein.
HTML:
 <script type=text/javascript>
<!--
function popup() {
F = window.open("seite.php","Popup","width=670,height=500");
}
// -->
</script>
Der entsprechende Befehl zu offenen wäre dann und ich schreibe ihn mal gleich so, dass es sich bei laden der Seite öffnet:
HTML:
<body onLoad="javascript:popup()">
Ich hoffe das wars jetzt was du wolltest.
 
Zurück