Problem mit der Datumausgabe

aleks hat gesagt.:
Ja, ja hab ich schon geändert in :
PHP:
 $timestamp = mktime(0, 0, 0, $_POST['monat'], $_POST['tag'], $_POST['jahr']);
kommt aber die selbe Fehlermeldung.:(
Liegt das vielleicht daran das Server bei mir unter Windows läuft.(!) Oder gibt da eine andere Erklärung?
Ich hoffe ich nerve ich mit meiner Fragerei. Bin wie gesagt auf diesen Gebiet noch ohne Erfahrung:)

Nein, liegt einfach daran, dass der Timestamp erst mit dem 1.1.1970 beginnt.
Dein Aktueller Timestamp gibt nämlich nix anderes als die bis jetzt vergangenen Sekunden aus, ganz simpel erklärt.

Wofür dient denn dein Script? Bringt nix, es local laufen zu lassen, da kann man die Wirkung nocht sehen, keinen Webspace?

Also, was soll dein Script bewirken, wäre jetzt meine Frage.
 
Wofür dient denn dein Script? Bringt nix
Also wenn dieses Problem gelöst sein sollte will ich noch prüfen ob das Ausgewählte Datum gültig ist. Dann wird das ganze in ein Anmeldungsformular integriert. Was das am ende wird mal sehen.
Aber vielleicht ja Jemand da drausen eine Idee wie auch Daten vor 1970 ausgeben kann.:(
Wäre für jede Hielfe dankbar.:)
 
Hallo Zasammen,
irgendwie hab ich gestern was falsches geschrieben das bei mir die Funktion mit einem Datum nach 1970 funktioniert. Dem ist nicht so.
Egal was für ein Datum man eingibt wird das Datum des akuellen Tages ausgegeben. Ich will,aber daß das Script das Datum aus dem Pulldown-Menue ausgibt. Wie mach' ich das?:( Bitte helft mir laß mich nicht alleine:rolleyes:Danke schon mal.
 
PHP:
$timestamp = date('d.m.Y',$timestamp);
Wenn du möchtest, dass ein anderer als der derzeitige Timestamp verwendet wird, musst du ihn bei der date()-Funktion auch angeben.

Ceppi
 
Danke erst einmal Ceppi:) Und wie komme ich das mit Datums vor 1970 hin? Da bekome eine Fehlermeldung:
Warning: mktime() [function.mktime]: Windows does not support negative values for this function in C:\Programme\xampp\xampp\htdocs\beispiel.php on line 10

Warning: date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in C:\Programme\xampp\xampp\htdocs\beispiel.php on line 11.
Mir ist schon bekannt das der Unix-Timrstamp erst ab 1970 zählt. Aber wie kann denn es dann lösen für Datums vor 1970.:( Könnt Ihr mich nicht mal noch einen Tipp geben. Würde mich sehr freuen darüber;)
 
Du willst doch nur prüfen, ob es ein Datum wirklich gibt, oder?
Ist ganz einfache Mathematik.

Alle Jahre, die durch 4 Teilbar sind, sind Schaltjahre, heißt du schaust einfach, wo du durch 4 teilen kannst und gut is.

Ansonsten musst du dir deinen eigenen TimeStamp, bzw. hier Datestamp programmieren.

Da es sich nur um Daten handelt, Tag Monat Jahr, ist das ganz einfach.

Wann willst du beginnen? Jahr 1900?
Dann ist der 1.1.1900 --> 0

Schreib dir nen Array, indem du die Anzahl der Tage, die bis zum letzten Monat vergangen sind notierst, Jan 0 Feb 31 Mrz 59 usw..

Jetzt rechnest du dir die vergangenen Tage bis zum heutigen Tag aus.
(aktuelles Jahr-1)*365 + Floor((aktuelles Jahr-1)/4) // Floor gibt die nächstkleinere Zahl aus.

Dann die Tage Monate[aktueller Monat]+Aktuelle Tage.
// aus dem Array genommen.

Dann prüfst du ob der Februar schon vorbei ist, bzw wir uns mit dem Monat im März befinden

IF (aktueller Monat>2) Tage=Tage + Floor((aktuelles Jahr-1)/4)

So, das wars. Die Rückumwandlung ist ebenso easy.
Tage bekommst du mit der Restwertfunktion von PHP raus Würde ich auch als Array speichern.

Schon hast deinen eigenen DateStamp, der zudem auch noch wesentlich kleiner ist, für 200 Jahre gerade mal 17 Bit.
 
Hallo Tschuldigung das mich ein paar Tage nitcht gemeldet habe... hatte ein paar Problem mit meinem Internetzugang. Und danke für die Ratschläge.;)
So jetzt haber zurück zum Thema:ich habe das Script etwas weiter entwickelt es sieht jetzt so aus:
PHP:
<?php


setlocale(LC_ALL, "DEU");
    $allesok = false;
    if( isset($_POST['ueberpruefung']) ) {
        $allesok = true;
    }
    if( $allesok ) {
    $timestamp = mktime(0, 0, 0, $_POST['monat'], $_POST['tag'], $_POST['jahr']);
		if(($POST_['tag']!='Tag')&&($_POST_['monat']!='Monat')&&($_POST['jahr']!='Jahr'))
		{  
        if(checkdate($_POST['monat'],$_POST['tag'],$_POST['jahr']))
        {
        $timestamp = date('d.m.Y',$timestamp);
        $ausgabe= $timestamp;
        echo "Der $ausgabe ist ein gültiges Datum";
      }
      else
      {
	    echo "Das Datum ist falsch";
	  }
	}
	else
	{
	  echo "Sie müssen ein Datum auswählen";
	}
    }

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Datum per Formular</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="ueberpruefung" value="1" />
<select name="tag">
<?php
    echo'<option selected>Tag</option> ';
    for( $i=1; $i<=31; $i++ ) {
    if($_POST['tag'] == $i) {
            echo '<option value="'.$i.'" selected>'.$i.'</option>';
    }
      else {
            echo '<option value="'.$i.'">'.$i.'</option>';
    }
    }
?>
</select>
Tag
&nbsp; 

<select name="monat">
<?php
    echo'<option value=""selected>Monat</option> ';
	for( $i=1; $i<=12; $i++ ) {
    if($_POST['monat'] == $i) {
            echo '<option value="'.$i.'" selected>'.$i.'</option>';
    }
    else {
            echo '<option value="'.$i.'">'.$i.'</option>';
    }
    }
?>
</select> 
Monat
&nbsp;

<select name="jahr">
<?php
    echo'<option value=""selected>Jahr</option> ';
	$aktuellesJahr = date('Y');
    for($i=($aktuellesJahr - 110); $i<=$aktuellesJahr+1; $i++ ) {
    if($_POST['jahr'] == $i) {
            echo '<option value="'.$i.'" selected>'.$i.'</option>';
    }
    else {
            echo '<option value="'.$i.'">'.$i.'</option>';
    }
    }
?>
</select>    
Jahr
<br />
<input type="submit" name="Anmeldung" value="Absenden" />
</form>
</body>
</html>
Jetzt habe mit diesem Code ein kleines Problem wenn Jemand versehendlich Tag, Monat, Jahr abschickt, dann gibt der Parser zum einem zwei Warnungen aus und zum anderen spring in die Falsche Schleife. Konkred er sollte dann den Text ausgeben:"Sie müssen ein Datum auswählen", aber gibt aus:"Das Datum ist falsch":confused:
Und jetzt habe ein paar Fragen dazu: 1. Wieso gibt er den falschen Text aus. 2. Soll ich die Warnungen unterdrücken mit den"@"Zeichen oder muß man dies ganz anders lösen? Wäre für jeden Vorschlag dankbar.

Gruß Aleks
 
Zurück