Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbank in Normalform?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Ich verstehe nicht ganz -> was soll da passieren?
    Dann sortiere die beiden Uhrzeiten aufsteigend ohne Berücksichtigung des Datums.
    Was das Problem der Zeitüberschneidungen angeht: es geht hier weniger um Datenintegrität sondern mehr um eine vernünftige Übersicht. Vom Ende der einen Reservierung bis zum Beginn der nächsten muß ja ohnehin ein Karenzzeit eingeplant werden. (Ich vermute, daß es sich hier um einen Plan für die Gastronomie handelt?)

    Kommentar


    • #17
      Zitat von akretschmer
      wie Du 2 Reservierungen für den selben Tisch, eine von 15-17 und die andere von 16 bis 18 uhr, via Unique Index verhindern willst
      ...

      Zitat von hausl
      du holst aus der db die beiden "von-bis"-zeiträume und prüft mit php ob diese beiden zeiträume sich überschneiden.
      Zitat von akretschmer Beitrag anzeigen
      lol.
      ?. Ich meinte, das beim Anlegen einer neuen Reservierung, wenn sich an diesem Tag Überschneidungen ergeben, kann die Applikation ja zB warnen oder wie auch immer. Die Anzahl der Reservierungen pro Tag wird sich in einem Rahmen halten, dass das auch auch mit PHP kein Problem sein wird, dahingehend.

      Sowas in der Art, ohne Fehlerprüfungen, Minutenreiterei, etc..

      PHP-Code:
      function hasTimeOverlap($sFrom1$sTo1$sFrom2$sTo2$iBufferMinutes 0$sTimezone 'Europe/Berlin') {
          
          
      $oTimezone = new DateTimezone($sTimezone);
          
          
      $o1From = new DateTime($sFrom1$oTimezone);
          
      $o1To   = new DateTime($sTo1$oTimezone);
          
          
      $o2From = new DateTime($sFrom2$oTimezone);
          
      $o2To   = new DateTime($sTo2$oTimezone);
         
          
      // Buffer - ersten Zeitraum wenn gewünscht nach vorne und hinten erweitern / "aufblasen"
          
      if ($iBufferMinutes 0) {
              
      $o1From->modify('-'.$iBufferMinutes.' minutes');
              
      $o1To->modify('+'.$iBufferMinutes.' minutes');
          }

          
      // Check mögliche Überschneidungen
          
          // Beginn Zeitraum 2 liegt innerhalb Zeitraum 1
          
      if ($o2From $o1From && $o2From $o1To) {
              return 
      true;    
          }

          
      // Ende Zeitraum 2 liegt innerhalb Zeitraum 1
          
      if ($o2To $o1From && $o2To $o1To) {
              return 
      true;    
          }
         
          
      // Zeitraum 2 umfasst Zeitraum 1
          
      if ($o2From $o1From && $o2To $o1To) {
              return 
      true;
          }

          
      // keine Überschneidung
          
      return false;

      PHP-Code:
      var_dump
          
      hasTimeOverlap('2014-09-14 15:00''2014-09-14 17:00''2014-09-14 16:00''2014-09-14 18:00')  // true
      ); 
      LG
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #18
        Zitat von hausl Beitrag anzeigen
        Du holst aus der DB die beiden "von-bis"-Zeiträume und prüft mit PHP ob diese beiden Zeiträume sich überschneiden.



        Such mal etwas hier im Board, das kam schon öfters vor. Achte aber darauf das du etwas verwendet mit der DateTime KLasse von PHP.

        Wie wäre es, wenn du nur prüfst ob es einen Eintrag hat, der sich überschneidet? Dazu benötigt man noch kein PHP.
        [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

        Kommentar


        • #19
          ... wenn du nur prüfst ob es einen Eintrag hat, der sich überschneidet?
          Oder so
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar

          Lädt...
          X