Griever: Tage zwischen bla und blabla ...

Hi there.

Auch nach ausgiebiger Suche habe ich nicht das gefunden, was ich benötige. Auf mein Post wird auch nicht mehr geantwortet und Google sowie die dort gefundenen Foreneinträge bei anderen Foren halfen mir in der Hinsicht nicht weiter.

Ich weiß, dass dies sowas wie ein Doppelposting ist, aber was soll ich machen, wenn auf meine Frage nicht geantwortet wird?

Ich habe folgendes:

  
$s_d=explode(".",$_REQUEST['datum_start']);  
$e_d=explode(".",$_REQUEST['datum_end']);  
echo "$s_d[0] / $s_d[1] / $s_d[2] - ";  
echo "$e_d[0] / $e_d[1] / $e_d[2]<br>";  
$s_d=gmmktime(0,0,0,$s_d[0]-0,$s_d[1]-0,$s_d[2]-0);  
$e_d=gmmktime(0,0,0,$e_d[0]-0,$e_d[1]-0,$e_d[2]-0);  
$tage;  
  
// Hier möchte ich die Berechnung zwischen "$s_d", welches das Start-  
// Datum enthält als Timestamp und  
// "$e_d", welches das End-Datum als Timestamp enthält, wo ich dann  
// die Anzahl Tage (Keine Monate,  
// Jahre oder Stunden oder so.) in die Variable "$tage" bekomme  
  
echo "Es sind " . $tage . " Tage"; # Dient nur der Überprüfung  

Und möchte nun, dass genau dort, wo das Komentar steht, eine Berechnung abläuft, welche mir die genaue Anzahl an Tagen gibt.
Gespeichert in die Variable $tage.

Das Echo habe ich zum Test genutzt, da ich schon Härtefälle hatte, bei dem von 02.06.2006 bis zum 05.06.2006 über 100 Tage abgerechnet wurden.

Die Datumsübergabe ist immer exakt gleich. TT.MM.JJJJ

Bitte um Hilfe

MFG
Griever

  1. Ich habe die Lösung gefunden

    Hab mir selbst eine Funktion gebastelt.

    "Vielen Dank" für eure Hilfe ...

    MFG
    Griever

    1. Lieber Griever,

      "Vielen Dank" für eure Hilfe ...

      tja, wenn Du es sooo eilig hast, dass Du nichteinmal 24 Stunden auf eine Antwort warten kannst, dann ist mir klar, warum Du ein Doppelposting verfasst...

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

    2. Moin.

      Ich habe die Lösung gefunden
      Hab mir selbst eine Funktion gebastelt.

      Wollte gerade einen Lösungsansatz posten (so mit umrechnen in UnixTime, aus der Differenz beider Zahlen die Anzahl der Tage mittels einfacher Division ermitteln u.s.w)

      Aber wenn Du's nun selbst gefunden hast... Poste es doch, damit der nächste Suchenden (D)eine Lösung finden kann und es ihm nicht so geht wie Dir.

      "Vielen Dank" für eure Hilfe ...

      Bitte. Und sei nicht immer so ungeduldig...

      Gruß Frank

      1. Wollte gerade einen Lösungsansatz posten (so mit umrechnen in UnixTime, aus der Differenz beider Zahlen die Anzahl der Tage mittels einfacher Division ermitteln u.s.w)

        Aber wenn Du's nun selbst gefunden hast... Poste es doch, damit der nächste Suchenden (D)eine Lösung finden kann und es ihm nicht so geht wie Dir.

        "Vielen Dank" für eure Hilfe ...
        Bitte. Und sei nicht immer so ungeduldig...

        Sorry. Hatte es aber etwas Eilig.

        Hier meine "recht einfache" Lösung:

          
        // Ist klar, dass das die Datumsangaben im Format TT.MM.YYYY sind.  
              $s_d=explode(".",$_REQUEST['datum_start']);  
              $e_d=explode(".",$_REQUEST['datum_end']  );  
          
        // Aktuelles Datum hinterlegen ... um 1 Tag verringern, damits mitgezählt wird.  
              $currentDatum = mktime(0,0,0,$s_d[1]-0,$s_d[0]-0,$s_d[2]-0) - 86400;  
          
        // Start und Enddatum Errechnen.  
              $startdatum = mktime(0,0,0,$s_d[1]-0,$s_d[0]-0,$s_d[2]-0);  
              $enddatum =   mktime(0,0,0,$e_d[1]-0,$e_d[0]-0,$e_d[2]-0);  
          
        // Tage errechnen  Eigentlich unbrauchbar geworden ...  
              $tage = (($enddatum-$startdatum)/86400)+1;  
          
        // MySql-Logindaten  
              include("logindaten.txt");  
          
        // Verbindungsherstellung  
              if(@mysql_connect($host,$name,$pass))  
              {  
          
        // Ausgabekorrekturpuffer ...  
                $d = 0;  
          
        // Datenbank wählen ...  
                mysql_select_db($daba);  
          
        // Selbsterklärend, oder? Enddatum +1 Tag, damit es nicht 1 Tag früher aufhört mit durchlaufen.  
                while($currentDatum != ($enddatum+86400))  
                {  
          
        // Sql erstellen.  
                  $sql = 'INSERT INTO `sondertage` (`datum`) VALUES ("' . date("d.m.Y",$currentDatum) . '");';  
          
        // Korrekturpuffer prüfen ...  
                  if($d != 0)  
                  {  
                    if(mysql_query($sql))  
                    {  
        // Erfolg - Ausgabe  
                      echo "eingetragen<br>";  
                    }  
                    else  
                    {  
        // Fehler - Ausgabe  
                      echo "Fehler aufgetreten!<br>";  
        // Fehlermeldung - Ausgabe  
                      echo mysql_error();  
                      break;  
                    }  
                  }  
                  else  
                  {  
          
        // Ausgabe  
                    echo date("d.m.Y",$currentDatum)." wird eingetragen ... eingetragen<br>";  
                  }  
        // Korrekturpuffer erhöhen ...  
                  $d++;  
          
        // Tag hinzurechnen  
                  $currentDatum += 86400;  
          
        // Letzten Tag abfragen ... (Damit am ende nicht "05.03.2006 wird eingetragen ...", obwohl nur bis 04.03.2006 geht ...)  
                  if($currentDatum != ($enddatum+86400))  
                  echo date("d.m.Y",$currentDatum)." wird eingetragen ... ";  
                }  
        
        

        Sieht vielleicht etwas Umständlich aus. Bin auch für Korrekturvorschläge offen.
        --------------------------------------------------------------------------------------------------
        Aber ich habe jetzt ein weiteres Problem. Ich kann die Einträge aus der Datenbank nicht löschen.
        Hier der Code. (Stelle Markiert ...)

        <?

          
        // Musste ich mit Request abfangen, da selbst mit "globals = on" die Werte nicht  
        // als Variablen existierten auf meinen Apache (aktuell).  
          
        // Logindaten.  
        include("logindaten.txt");  
        @mysql_connect($host,$name,$pass);  
        mysql_select_db($daba);  
          
        // Fragen, ob a = del ist. (Wird auch gemacht, wenn man eins löscht.)  
        if($_GET['a'] == "del")  
        {  
        // Fragt, ob d gesetzt ist und stellt es dann einer einfachen variable zur verfügung.  
        if(isset($_GET['d']))  
        $d=$_GET['d'];  
          
        // Sql erzeugen.  
          $sql = 'DELETE FROM `sondertage` WHERE CONVERT(`datum` USING utf8) = \''+$d+'\' LIMIT 1;# Betroffene Datensätze: 1';  
          
        // Query ausführen und gleichzeitig abfragen.  
          if(mysql_query($sql))  
          {  
            echo "Eintrag für den " . $d . " gelöscht.";  
          }  
          
        // es funktioniert aber nicht.  
        }  
        $sql = 'SELECT * FROM `sondertage` LIMIT 0, 9999999 ';  
        $tages = mysql_query($sql);  
        $s = 0;  
        echo "<b>Bisherige Daten:</b><hr>";  
        while($i = mysql_fetch_row($tages))  
        {  
          $v = $i[0];  
          
        // Hier die Löschlinks ...  
          echo "$v - <a href='sondertage.php?a=del&d=$v'>Löschen</a><br>\n";  
          $s++;  
        }  
        
        

        ?>

        (Würde ja gerne den ganzen Code posten, aber der ist zu gewaltig.)

        Brauch da jetzt wieder Help.

        Und, Sorry wegen dem Drängelpost ...

        MFG
        Griever

        1. Hallo Griever,

          Hier meine "recht einfache" Lösung:

          die von gesetzlichen Regelungen in unserem Lande zu bestimmten Zeiten ausgehebelt wird :-) Berücksichtige diese gesetzlichen Regelungen. Oder besser noch, mache Deine Berechung davon unabhängig.

          // Sql erstellen.
                    $sql = 'INSERT INTO sondertage (datum) VALUES ("' . date("d.m.Y",$currentDatum) . '");';

          Warum verwendest Du für Datumsangaben nicht den Datentyp DATE? Mit solch wunderbaren Datentypen wie DATE oder DATETIME können Datenbankmanagementsysteme sogar rechnen. Vielleicht machen diese Rechenmöglichkeiten Deine PHP-Experimente überflüssig.

          // Fragt, ob d gesetzt ist und stellt es dann einer einfachen variable zur verfügung.
          if(isset($_GET['d']))
          $d=$_GET['d'];

          Hast Du $d außerhalb sauber initialisiert? Wenn nein, dann solltest Du dies tun. Noch besser wäre es auf diese Variable zu verzichten.

          // Sql erzeugen.
            $sql = 'DELETE FROM sondertage WHERE CONVERT(datum USING utf8) = ''+$d+'' LIMIT 1;# Betroffene Datensätze: 1';

          Wow, jetzt noch CONVERT() einsetzen. Verwende doch einen Datumstyp. Dazu eine tolle Quotierungsorgie, die Du Dir bei geschickterer Auswahl von Anführungszeichen ersparen könntest.

          // Query ausführen und gleichzeitig abfragen.
            if(mysql_query($sql))
            {
              echo "Eintrag für den " . $d . " gelöscht.";
            }

          // es funktioniert aber nicht.

          Was noch nie eine Fehlerbeschreibung war und auch hier keine ist. Gibt es einen else-Zweig? Nein. Befragst Du MySQL, ob es Fehlermeldungen gab? Nein.

          Dein erster Schritt sollte in der Optimierung Deiner Tabellenstruktur liegen. Ersetze alle Spalten, in denen Du Datumsangaben in Zeichenketten speicherst durch Spalten, die das gleiche Datum mit dem Datentyp DATE oder DATETIME enthalten. Das hat wahrscheinlich Konsequenzen für Deine ganzen Skripte, auf Dauer sollte es Dir die Arbeit erleichtern.

          Freundliche Grüße

          Vinzenz

          1. Hallo Griever,

            Hier meine "recht einfache" Lösung:

            die von gesetzlichen Regelungen in unserem Lande zu bestimmten Zeiten ausgehebelt wird :-) Berücksichtige diese gesetzlichen Regelungen. Oder besser noch, mache Deine Berechung davon unabhängig.

            Ich peil nicht, was du damit meinst ... Welche gesetzlichen Regelungen?

            // Sql erstellen.
                      $sql = 'INSERT INTO sondertage (datum) VALUES ("' . date("d.m.Y",$currentDatum) . '");';

            Warum verwendest Du für Datumsangaben nicht den Datentyp DATE? Mit solch wunderbaren Datentypen wie DATE oder DATETIME können Datenbankmanagementsysteme sogar rechnen. Vielleicht machen diese Rechenmöglichkeiten Deine PHP-Experimente überflüssig.

            Hab ich versucht. Aber irgendwie hat er mir da schon 3 mal die komplette Datenbank verorkst. Sie ist noch eingetragen, die DB. Aber ich kann sie weder wählen, noch löschen (0hne, dass es abschmiert oder in einem Overflow Exception von Windows endet). Ich weiß genau, dass es an dem DATE-Format liegt. Da in allen Tabellen, wo dieses Date-Format verwendet wird, die Tabelle viele hundert Fehler in phpmyadmin aufweißt.

            Die Site soll für Intranet-Zwecke vorliegen. Wie die Daten drin stehen, ist sch.... egal. Hauptsache ist, dass sie übernommen werden.

            // Fragt, ob d gesetzt ist und stellt es dann einer einfachen variable zur verfügung.
            if(isset($_GET['d']))
            $d=$_GET['d'];

            Hast Du $d außerhalb sauber initialisiert? Wenn nein, dann solltest Du dies tun. Noch besser wäre es auf diese Variable zu verzichten.

            $d ist der Wert, den ich für die Datumsübergabe benötige. Ohne diesen, kann ich nicht auf das Item zugreifen.

            // Sql erzeugen.
              $sql = 'DELETE FROM sondertage WHERE CONVERT(datum USING utf8) = ''+$d+'' LIMIT 1;# Betroffene Datensätze: 1';

            Wow, jetzt noch CONVERT() einsetzen. Verwende doch einen Datumstyp. Dazu eine tolle Quotierungsorgie, die Du Dir bei geschickterer Auswahl von Anführungszeichen ersparen könntest.

            Das hat mir phpMyAdmin so gegeben ... Ich hab halt nur den Wert eingefügt ...

            // Query ausführen und gleichzeitig abfragen.
              if(mysql_query($sql))
              {
                echo "Eintrag für den " . $d . " gelöscht.";
              }

            // es funktioniert aber nicht.

            Was noch nie eine Fehlerbeschreibung war und auch hier keine ist. Gibt es einen else-Zweig? Nein. Befragst Du MySQL, ob es Fehlermeldungen gab? Nein.

            Hab ich auch schon probiert. Aber eine leere Fehlermeldung hab ich auch noch nicht bei einem Fehler von MySql gesehen.

            So hab ichs bewerkstelligen wollen:

              
            if(mysql_query($sql))  
            {  
              echo "$d"; // Verkürzt ...  
            }  
            else  
            {  
              echo mysql_error()."<br>";  
            }  
            
            

            Dein erster Schritt sollte in der Optimierung Deiner Tabellenstruktur liegen. Ersetze alle Spalten, in denen Du Datumsangaben in Zeichenketten speicherst durch Spalten, die das gleiche Datum mit dem Datentyp DATE oder DATETIME enthalten. Das hat wahrscheinlich Konsequenzen für Deine ganzen Skripte, auf Dauer sollte es Dir die Arbeit erleichtern.

            Thats the Problem! Da zerhaut es meine Datenbank ... (Apache unter Xampp)

            MFG
            Griever

            1. Hallo Griever,

              Hier meine "recht einfache" Lösung:

              die von gesetzlichen Regelungen in unserem Lande zu bestimmten Zeiten ausgehebelt wird :-) Berücksichtige diese gesetzlichen Regelungen. Oder besser noch, mache Deine Berechung davon unabhängig.

              Ich peil nicht, was du damit meinst ... Welche gesetzlichen Regelungen?

              Ach es gibt so gesetzliche Regelungen, die die Länge des Tages in Sekunden betreffen. Die, die ich hier meine, die schlägt zweimal im Jahr zu.

              In Deinem Ausgangsposting machst Du es ja noch richtig :-)

              Viel besser wäre es, wenn Du meinen Vorschlag in Deinem Originalthread verwenden würdest. Du machst Dich von der Länge des Tages in Sekunden unabhängig.

              Warum verwendest Du für Datumsangaben nicht den Datentyp DATE? Mit solch wunderbaren Datentypen wie DATE oder DATETIME können Datenbankmanagementsysteme sogar rechnen. Vielleicht machen diese Rechenmöglichkeiten Deine PHP-Experimente überflüssig.

              Hab ich versucht. Aber irgendwie hat er mir da schon 3 mal die komplette Datenbank verorkst. Sie ist noch eingetragen, die DB. Aber ich kann sie weder wählen, noch löschen (0hne, dass es abschmiert oder in einem Overflow Exception von Windows endet).

              Dann machst Du etwas falsch. DATE ist wundervoll geeignet. Keine einzige MySQL-Installation, weder unter Linux noch unter Windows, hat bisher damit Probleme gehabt. Ich vermute, das Problem sitzt an der Tastatur. *fg*

              Die Site soll für Intranet-Zwecke vorliegen. Wie die Daten drin stehen, ist sch.... egal. Hauptsache ist, dass sie übernommen werden.

              Tolle Einstellung. Ich glaube, ich sollte diese Einstellung zu Deinem Problem übernehmen.

              $sql = 'DELETE FROM sondertage WHERE CONVERT(datum USING utf8) = ''+$d+'' LIMIT 1;# Betroffene Datensätze: 1';

              Wow, jetzt noch CONVERT() einsetzen. Verwende doch einen Datumstyp. Dazu eine tolle Quotierungsorgie, die Du Dir bei geschickterer Auswahl von Anführungszeichen ersparen könntest.

              Das hat mir phpMyAdmin so gegeben ... Ich hab halt nur den Wert eingefügt ...

              Du solltest die Werkzeuge, die Du einsetzt, beherrschen und Dich nicht von Diesen beherrschen lassen.

              Im Übrigen meinte ich primär noch nicht einmal die Backticks ...

              Freundliche Grüße

              Vinzenz

              1. Hallo Griever,

                Hier meine "recht einfache" Lösung:

                die von gesetzlichen Regelungen in unserem Lande zu bestimmten Zeiten ausgehebelt wird :-) Berücksichtige diese gesetzlichen Regelungen. Oder besser noch, mache Deine Berechung davon unabhängig.

                Ich peil nicht, was du damit meinst ... Welche gesetzlichen Regelungen?

                Ach es gibt so gesetzliche Regelungen, die die Länge des Tages in Sekunden betreffen. Die, die ich hier meine, die schlägt zweimal im Jahr zu.

                Darum geht es mir ja nicht. Ob das jetzt 300 Tage in Sekunden - 300 Sekunden sind ist doch gehüpft wie gesprungen. Das wird doch sowieso gerundet ...

                In Deinem Ausgangsposting machst Du es ja noch richtig :-)

                Scheinbar nicht. Da ich da trotz korrekten Datumsangaben manchmal negative Werte hatte.

                Viel besser wäre es, wenn Du meinen Vorschlag in Deinem Originalthread verwenden würdest. Du machst Dich von der Länge des Tages in Sekunden unabhängig.

                Hm. Da hab ich noch nie von gehört ...

                Warum verwendest Du für Datumsangaben nicht den Datentyp DATE? Mit solch wunderbaren Datentypen wie DATE oder DATETIME können Datenbankmanagementsysteme sogar rechnen. Vielleicht machen diese Rechenmöglichkeiten Deine PHP-Experimente überflüssig.

                Hab ich versucht. Aber irgendwie hat er mir da schon 3 mal die komplette Datenbank verorkst. Sie ist noch eingetragen, die DB. Aber ich kann sie weder wählen, noch löschen (0hne, dass es abschmiert oder in einem Overflow Exception von Windows endet).

                Dann machst Du etwas falsch. DATE ist wundervoll geeignet. Keine einzige MySQL-Installation, weder unter Linux noch unter Windows, hat bisher damit Probleme gehabt. Ich vermute, das Problem sitzt an der Tastatur. *fg*

                Soll wohl ein Scherz sein. Ich habe so eine tabelle angelegt und habe versucht via phpMyAdmin dort einen wert einzutragen. Da ballert der mir alles in den Wind. Der Wert wurde nicht übernommen und die Tabelle ließ sich nicht mehr anwählen. Was soll ich da bitte falsch gemacht haben? phpmyadmin ist ja wohl so aufgebaut, dass normalerweise sowas verhindert wird.

                Ich möcht mich jetzt nicht weiter streiten, ob DATE oder CHARwieauchimmer. Die Werte werden sowieso ausgelesen und mit einer Schleife für die Tabelle verglichen. If-Else-Abfrage bestimmt dann, ob der Farbwert dunkler, oder heller ausfallen soll. Es dient zur anzeige von Tagen, wo etwas besonderes sein soll. Ferien, Verschiebbare Feiertage.

                Wenn du mir ein Tutorial zeigen kannst, womit man zumindestens Ferientage berechnen lassen kann, die dann auch noch problemlos in eine MySql-Tabelle eingetragen werden, dann wäre das geregelt. Dann würde ich auch alles Umschreiben, was mit Date zu tun hat. Auch die MySql-Tabellen. Muss aber natürlich erstmal einen anderen Server finden, der mir nicht gleich alles zerballert ... (Das ist echt nicht von meiner seite ein Fehler.)

                Die Site soll für Intranet-Zwecke vorliegen. Wie die Daten drin stehen, ist sch.... egal. Hauptsache ist, dass sie übernommen werden.

                Tolle Einstellung. Ich glaube, ich sollte diese Einstellung zu Deinem Problem übernehmen.

                Hm. Wenn du meinst. Ich habe halt versucht, die Datenbank so aufzubauen. So sah ich es am leichtesten.

                $sql = 'DELETE FROM sondertage WHERE CONVERT(datum USING utf8) = ''+$d+'' LIMIT 1;# Betroffene Datensätze: 1';

                Wow, jetzt noch CONVERT() einsetzen. Verwende doch einen Datumstyp. Dazu eine tolle Quotierungsorgie, die Du Dir bei geschickterer Auswahl von Anführungszeichen ersparen könntest.

                Das hat mir phpMyAdmin so gegeben ... Ich hab halt nur den Wert eingefügt ...

                Du solltest die Werkzeuge, die Du einsetzt, beherrschen und Dich nicht von Diesen beherrschen lassen.

                Ich bin noch kein Profi. Aber ich bin vielleicht auf den Weg dahin. In manchen Sachen habe ich halt viel Ahnung, und in manchen Sachen mach ich halt mal müll. Korrigier mich, wenn ich jetzt was falsches sage: Nobody is perfect!

                Im Übrigen meinte ich primär noch nicht einmal die Backticks ...

                Hab kein Plan von Forumchinesisch. Was sind Backticks?

                Freundliche Grüße

                So freundlich hörte sich das nu aber net an ...

                MFG
                Griever

                1. Hallo Griever,

                  Ach es gibt so gesetzliche Regelungen, die die Länge des Tages in Sekunden betreffen. Die, die ich hier meine, die schlägt zweimal im Jahr zu.

                  Darum geht es mir ja nicht. Ob das jetzt 300 Tage in Sekunden - 300 Sekunden sind ist doch gehüpft wie gesprungen. Das wird doch sowieso gerundet ...

                  Wo rundest Du? Davon ist _nichts_ zu sehen.

                  In Deinem Ausgangsposting machst Du es ja noch richtig :-)

                  Scheinbar nicht. Da ich da trotz korrekten Datumsangaben manchmal negative Werte hatte.

                  Ich habe mir nicht Deine Logik angeschaut, zumindest nutzt Du Funktionen, die von solchen Dingen wie der Sommerzeit unabhängig sind. Warum setzt Du diese bei Deinem erneuten Versuch nicht ein?

                  Viel besser wäre es, wenn Du meinen Vorschlag in Deinem Originalthread verwenden würdest. Du machst Dich von der Länge des Tages in Sekunden unabhängig.

                  Hm. Da hab ich noch nie von gehört ...

                  Dann lies es. Bilde Dich weiter.

                  Warum verwendest Du für Datumsangaben nicht den Datentyp DATE? Mit solch wunderbaren Datentypen wie DATE oder DATETIME können Datenbankmanagementsysteme sogar rechnen. Vielleicht machen diese Rechenmöglichkeiten Deine PHP-Experimente überflüssig.

                  Hab ich versucht. Aber irgendwie hat er mir da schon 3 mal die komplette Datenbank verorkst. Sie ist noch eingetragen, die DB. Aber ich kann sie weder wählen, noch löschen (0hne, dass es abschmiert oder in einem Overflow Exception von Windows endet).

                  Dann machst Du etwas falsch. DATE ist wundervoll geeignet. Keine einzige MySQL-Installation, weder unter Linux noch unter Windows, hat bisher damit Probleme gehabt. Ich vermute, das Problem sitzt an der Tastatur. *fg*

                  Soll wohl ein Scherz sein. Ich habe so eine tabelle angelegt und habe versucht via phpMyAdmin dort einen wert einzutragen. Da ballert der mir alles in den Wind.

                  Das ist eine hervorragende Fehlerbeschreibung. Es ist eine absolut nachvollziehbare Beschreibung, was Du unternommen hast.

                  Der Wert wurde nicht übernommen und die Tabelle ließ sich nicht mehr anwählen. Was soll ich da bitte falsch gemacht haben? phpmyadmin ist ja wohl so aufgebaut, dass normalerweise sowas verhindert wird.

                  Nein. phpMyAdmin ist nicht so aufgebaut, dass jeder Unsinn verhindert wird. phpMyAdmin hat Dich ja leider auch nicht daran gehindert, nicht sinnvolle Felddatentypen zu verwenden. Ich kann mich nur wiederholen: Auch mit phpMyAdmin hatte ich noch nie Probleme Datumswerte in Datumsfelder mit dem Datentyp DATE einzutragen. Und ich kenne auch niemanden, der damit Deine Probleme hatte.

                  Könntest Du bitte hier die entsprechende Tabellendefinition posten und das Datum, das Du versucht hast einzutragen. Vielleicht läßt sich somit Dein Fehler finden bzw. Dein Problem nachvollziehen.

                  Ich möcht mich jetzt nicht weiter streiten, ob DATE oder CHARwieauchimmer. Die Werte werden sowieso ausgelesen und mit einer Schleife für die Tabelle verglichen. If-Else-Abfrage bestimmt dann, ob der Farbwert dunkler, oder heller ausfallen soll. Es dient zur anzeige von Tagen, wo etwas besonderes sein soll. Ferien, Verschiebbare Feiertage.

                  Hier hast Du zum einen gesetzliche Regelungen (Ferien). Was die Feiertage angeht, so gibt es schon Berechnungsformeln dafür. Ich empfehle Dir die lesenswerten FAQ der  Kalenderberechnungsseite der Salesianer. Dort wird die Gaußsche Osterformel benutzt, dazu ein Link zur Physikalisch-Technischen Bundesanstalt.

                  Wenn du mir ein Tutorial zeigen kannst, womit man zumindestens Ferientage berechnen lassen kann,

                  Machst Du Witze? Ferien sind gesetzlich geregelt, nicht über einen Algorithmus.

                  die dann auch noch problemlos in eine MySql-Tabelle eingetragen werden, dann wäre das geregelt.

                  Dann würde ich auch alles Umschreiben, was mit Date zu tun hat. Auch die MySql-Tabellen. Muss aber natürlich erstmal einen anderen Server finden, der mir nicht gleich alles zerballert ... (Das ist echt nicht von meiner seite ein Fehler.)

                  Mit an Sicherheit grenzender Wahrscheinlichkeit ist es Dein Fehler. MySQL ist bei der Behandlung von Spalten des Datentyps DATE durchaus sehr robust. Die werden weltweit erfolgreich eingesetzt. Es gibt wundervolle Funktionen für Datums- und Zeitberechnungen. Diese werden nicht nur von mir gern genutzt.

                  Die Site soll für Intranet-Zwecke vorliegen. Wie die Daten drin stehen, ist sch.... egal. Hauptsache ist, dass sie übernommen werden.

                  Tolle Einstellung. Ich glaube, ich sollte diese Einstellung zu Deinem Problem übernehmen.

                  Hm. Wenn du meinst. Ich habe halt versucht, die Datenbank so aufzubauen. So sah ich es am leichtesten.

                  Was anfangs leicht aussieht, entwickelt sich oft später zu einem Monster. Verwende bei Datenbanken stets den angemessenen Felddatentyp. Das ist ein ganz einfacher Grundsatz, den Du beachten solltest. Es erleichtert die Arbeit wunderbar. Du bekommst sogar ggf. Fehlermeldungen :-)

                  Du solltest die Werkzeuge, die Du einsetzt, beherrschen und Dich nicht von Diesen beherrschen lassen.

                  Ich bin noch kein Profi. Aber ich bin vielleicht auf den Weg dahin. In manchen Sachen habe ich halt viel Ahnung, und in manchen Sachen mach ich halt mal müll. Korrigier mich, wenn ich jetzt was falsches sage: Nobody is perfect!

                  Verlange ich das von Dir? Nein. Aber ich wünsche mir, dass Du Deinen Verstand etwas öfter einsetzt. Versuche, Zusammenhänge zu verstehen.

                  Im Übrigen meinte ich primär noch nicht einmal die Backticks ...
                  Hab kein Plan von Forumchinesisch. Was sind Backticks?

                  Ich kann auch kein Chinesisch, erst recht kein Forumschinesisch. Backticks haben in meinem Posting nichts mit dem Forum zu tun.

                  Freundliche Grüße

                  Vinzenz

                  1. Ich denke, wir sollten hier den Streit ... oder was immer wir hier veranstalten, niederlegen und ein Kompromiss eingehen.

                    1. Ich werde meine Daten, welche ich als String drin hab, in Date's umwandeln. (Server hab ich mir jetzt gdownloadet und installiert. Leider zu früh. Hab danach erst dein Post gelesen.)

                    2. Keine Disskusion mehr über das ******* MySql. Ok?

                    MFG
                    Griever

                    1. Hallo Griever,

                      Ich denke, wir sollten hier den Streit ... oder was immer wir hier veranstalten, niederlegen und ein Kompromiss eingehen.

                      Streit? Ich streite nur selten. Hier im Thread gar nicht.

                      Wenn Du Dir meine Postings durchliest, so kannst Du feststellen, dass ich

                      • Dir einen Link gegeben habe, damit Du ohne Timestampoperationen
                          die Anzahl von Tagen zwischen zwei Datumsangaben mittels einer
                          einfachen Subtraktion berechnen kannst,
                      • Dich auf einen vernünftigen Felddatentyp für Datumsangaben hingewisen habe,
                      • Dir den Tipp gegeben habe, geschickt " und ' einzusetzen, damit Du
                          Dir unnötiges Maskieren ersparen kannst,
                      • Dich auf fehlende Fehlerbehandlung hingewiesen habe,
                      • Dich auf die Behandlung von reservierten Namen
                          in MySQL aufmerksam gemacht habe,
                      • Dich auf Methoden zur Feiertagsberechnung hingewiesen habe und
                      • Dich auf sinnvolles Tabellendesign hingewiesen habe.

                      Du hast von mir eine ganze Menge an nützlichen Tipps und Links erhalten, um Deine Problemstellung besser bewältigen zu können. Dazu weitere Hinweise, die Dir Deine Arbeit in Zukunft erleichtern kann. Nennst Du dies Streit?

                      Freundliche Grüße

                      Vinzenz