Fehler im Formular

Alles, was PHP betrifft, kann hier besprochen werden.

Fehler im Formular

Postby gummi » 05. March 2006 22:04

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.
Hier ist jedenfalls der relevante Quellcode:
Code: Select all
$timestamp=date('d.m.Y', $timestamp).'Das ist kein gültiges Datum.';


Was mache ich hier falsch ?
Hoffe auf eine Antwort

Gruß Aleks
gummi
 
Posts: 16
Joined: 01. March 2006 20:31
Location: Dortmund

Postby Wiedmann » 05. March 2006 22:17

Nichts, aber da fehlt ja noch ein haufen Code ausenherum:
a) fehlt die von dir erwähnte Condition die fehlerhaft sein könnte
b) der Code der für die Ausgabe von $timestamp zuständig ist könnte fehlerhaft sein.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby gummi » 05. March 2006 22:49

Erst mal danke für die Antwort Wiedmann.
Damit den Zusammenhang besser versteht poste ich mal den ganzen Code der Schleife:
Code: Select all
   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) .'Das ist kein gültiges Datum.'; 
?>
   } 
      else
      {
        $allesok=0;
            $error[geburtstag]= "Das Datum ist kein Datum.";
        }
   
 }   

Ich hoffe der Zusammen ist jetzt deutlich geworden.
Und hab Ihr jetzt eine Idee, wo der Hund begraben liegt?

Gruß Aleks
gummi
 
Posts: 16
Joined: 01. March 2006 20:31
Location: Dortmund

Postby Wiedmann » 05. March 2006 22:55

a)
mit "?>" beendest du den PHP-Teil der Datei. Alles danach versucht dein Browser jetzt als HTML zu interpretieren.

b)
die Zeile:
Code: Select all
$timestamp=date('d.m.Y', $timestamp) .'Das ist kein gültiges Datum.';

steht aber in dem Teil der Condition, wo das Datum korrekt ist...

Der Arrayindex den du im Fehlerfall setzt, wird ja dann wohl noch irgedwo ausgegeben?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby gummi » 05. March 2006 23:27

Also gut hier der Teil Codes zum besseren Verständnis:
Code: Select all
<?

  setlocale(LC_ALL, 'DEU');
    $allesok = false;

 if(isset($_POST['ueberpruefung']))
  { 
    $allesok = true;
...
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) .'Das ist kein gültiges Datum.'; 
?>
   } 
      else
      {
        $allesok=0;
            $error[geburtstag]= "Das Datum ist kein Datum.";
        }
   
 }   
...
}

  // Hier wird die IF-Bedingung von ganz oben geschlossen.
if($allesok)
{
}
else
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<link href="css/formular_table.css" rel="STYLESHEET" type="TEXT/CSS" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Webstandards-Projekt - Beipiele</title>
...
<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
...
<td align="left"><?php echo $error['geburtstag'];?><span name="geburtstag">Geburtsdatum* </td>
         <td
       
       <select name="tag">
<?php
   
    echo'<option value ="'.$_POST['tag'].'"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="'.$_POST['monat'].'"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="'.$_POST['jahr'].'"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</span>
<br />
     
         </td>
...
</form>
<?php
}
?>
...
</html>

Ich hoffe, daß es für eine Menue es jetzt verständlich genug was es macht.
Und hat einer einen Vorschlag wie man das Problem beheben kann? :?
Oder soll ich wirklich 462 Zeilen Code posten?
Gruß Aleks
gummi
 
Posts: 16
Joined: 01. March 2006 20:31
Location: Dortmund

Postby Wiedmann » 05. March 2006 23:38

Und hat einer einen Vorschlag wie man das Problem beheben kann?

Naja, ich hab dir gesagt wo die grundsätzlichen Fehler/Ungereimtheiten sind. 'ne fertige Lösung verkauen scheint doch auch nicht das Wahre.. ,-)

Zusätzlich jetzt noch 2 Punkte:
d)
benutzt du "$timestamp" noch irgendwo im Code?

e)
dein "$error[geburtstag]" ist
1.) falsch, da "geburtstag" keine Konstante ist, und
2.) wird das nie ausgegeben, da er ja bei "$allesok=0" nie das echo() dazu macht.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 9 guests