Fehler im Formular

aleks

Mitglied
Hallo Zusammen,
ich hab ein Problem mit einem Formular.Es führt den Fehlertext für mein Datummenue nicht aus, obwohl er es sollte. In diesem Formular gibt es Auswahl für ein Datum, nun will ich das er eine Fehlermeldung ausgibt wenn im Menue nichts ausgewählt wurde. D:h. Tag, Monat, Jahr sind stehen geblieben.Irgend wie bekomme ich das mit dem Punktoperator nicht hin.:confused:
Hier ist jedenfalls der relevante Quellcode:
PHP:
?
  
$timestamp=date('d.m.Y', $timestamp).'Das ist kein gültiges Datum.';
Was mache ich hier falsch ?
Hoffe auf eine Antwort;-)

Gruß Aleks
 
Hi,
probiers mal so:
PHP:
<?php
$timestamp=date('d.m.Y', $timestamp) or die 'Das ist kein gültiges Datum.';
?>
Gruß,
Snowowl
 
Danke Snowowl erst mal den Tipp, bloß wenn das bei mir ersetze bekomme einen Syntaxfehler:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\Programme\xampp\xampp\htdocs\anmeldung.php on line 73
Das war's woll nicht;)
Schade
Was kann man den hier machen?

Gruß Aleks
 
Zuletzt bearbeitet:
Danke für die Antwort RS9999, bloß dannn bekomme die Fehlermeldung: Parse error: syntax error, unexpected $end in C:\Programme\xampp\xampp\htdocs\anmeldung.php on line 463
Bloß die Sache ist die in Zeile 463 steht bei mir nur ein einfaches "</html>". Wie ist dies zu verstehen? Deswegen poste mal den ganzen Code dieses Abschnittes:
PHP:
 if(isset($_POST['tag'])&&($_POST['monat'])&&($_POST['jahr']))
 {
   if( @checkdate($_POST['monat'], $_POST['tag'], $_POST['jahr']) ) 
   {
            $timestamp = mktime(0, 0, 0, $_POST['monat'], $_POST['tag'], $_POST['jahr']);
           $timestamp=date('d.m.Y', $timestamp) or die ('Das ist kein gültiges Datum.');  
?>
   }  
		else 
		{
		  $allesok=0;
            $error[geburtstag]= "Das Datum ist kein Datum.";
        }
    
 }
Vielleicht hilft es ja.;)
Und jetzt wie sieht's aus?
Hat Jemand eine Idee wo der Hund begraben liegt?

Gruß Aleks
 
Verstehe nicht wie Du da prüfen willst, aber hier einmal
einen Code der prüft ob das Datum in Ordnung ist!
Beispiel:


PHP:
<?php
      $_POST['tag'] = "01";
      $_POST['monat'] ="01"; 
      $_POST['jahr'] = "2006";
      
      if(isset($_POST['tag'])&&($_POST['monat'])&& ($_POST['jahr'])){
      
     if(!@checkdate($_POST['monat'],$_POST['tag'],$_POST['jahr'])){ // Ist nicht sehr zuverlässig! z.B 20066 gibt auch TRUE aus! 
         echo "Das ist kein gültiges Datum.";
      } 
      else{           
        
         echo "Das Datum ist ein gültiges Datum.";
          } 
       }
       else{
            echo "Achtung, Sie haben keine Angaben zum Datum gemacht!";
           }
      
?>
 
Zuletzt bearbeitet:
Noch ein Hinweis: Zeichnet doch bitte alle auch als solche aus. Und vielleicht könntet ihr euch ja auch auf eine Auszeichnung beschränken, um nicht ständig zwischen der Auszeichnung mit einfachen und mit doppelten Anführungszeichen zu wechseln.
 
@GUMBO

Ein String kann auf drei verschiedene Weisen geschrieben werden.
• Einfache Anführungszeichen (single quoted)
• Doppelte Anführungszeichen (double quoted)
• Heredoc Syntax
Der leichteste Weg einen einfachen String zu schreiben,
ist der Einschluss in einfache Anführungszeichen (').

Stimmt!

Doch solange ich mit einem mir geläufigen System die Anführungszeichen
sauber setzte und diese zu keiner Fehlermeldung führt, werde ich das
auch weiterhin so machen.

Hinweis:
Ein String oder auch Zeichenkette genannt ist eine Folge von Buchstaben,
Ziffern und Sonderzeichen. Ein String wird von Anführungszeichen eingeschlossen,
entweder von einfachen (Apostrophen) oder doppelten. Hierbei ist zu beachten,
dass unbedingt gerade Anführungszeichen +<2> und Apostrophe +<#> verwendet werden.
Im Gegensatz zu anderen Programmiersprachen ist es hierbei egal, ob einfache oder
doppelte Anführungszeichen verwendet werden, Hauptsache, die Zeichenkette wird mit
derselben Art von Anführungszeichen beendet wie sie eingeleitet worden ist.
 
Danke erst einmal für die Antworten. Hat geholfen.
So ist es bei mir jetzt aus:
PHP:
if(isset($_POST['tag'])&&($_POST['monat'])&&($_POST['jahr']))
 {
   if( @checkdate($_POST['monat'], $_POST['tag'], $_POST['jahr']) ) 
   {
            $timestamp = mktime(0, 0, 0, $_POST['monat'], $_POST['tag'], $_POST['jahr']);
           $timestamp=date('d.m.Y', $timestamp);  

   }  
		else 
		{
		  $allesok=0;
            $error[geburtstag]= "Das Datum ist kein Datum.";
        }
    
 } 
 else
 {
    $allesok=0;
	$error2[geburtstag]="Falsche angaben zum Datum";
}
. Danke noch mal. An frage hätte noch an RS9999
if(!@checkdate($_POST['monat'],$_POST['tag'],$_POST['jahr'])){ // Ist nicht sehr zuverlässig! z.B 20066 gibt auch TRUE aus!
echo "Das ist kein gültiges Datum.";
Wieso ist das nicht zu verläßig? Zu deiner Info tag, monat und jahr sind Pulldown-Menues aus einem Formular,dort muß man Auswahl treffen.
 
Da hab ich mich mal im Handbuch schlau gemacht da ich die Funktion Checkdate nicht kannte. Und das könnte wohl auch dein Problem sein.

bool checkdate ( int Monat, int Tag, int Jahr )

Ist das angegebene Datum gültig, wird TRUE zurückgegeben, ansonsten FALSE. Prüft die Gültigkeit der angebenen Datumswerte. Ein Datum wird als gültig angesehen, wenn
  • das Jahr zwischen 1 und 32767 (inklusive) ist,
  • der Monat zwischen 1 und 12 (inklusive) ist und
  • der Tag innerhalb der erlaubten Werte des angegebenen Monats ist. SchaltJahre werden berücksichtigt.
Am besten prüfst Du das Datum so das Du es zusammensetzt und einen regexp drüber jagst.

PHP:
<?php

$date = $_POST['day'].".".$_POST['month'].".".$_POST['Year'];
$pattern = "/((\d){1,2}\.){2}(\d){2.4}/";

if(preg_match($pattern , $date, $matches))
     echo "gültiges Datum";
?>

Könnte so klappen aber nun keine Garantie darauf zwecks Pattern.
 
Zuletzt bearbeitet:
Zurück