Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Zeiträumen PHP und MySQL

Einklappen

Neue Werbung 2019

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

  • xavie
    hat ein Thema erstellt Problem mit Zeiträumen PHP und MySQL.

    Problem mit Zeiträumen PHP und MySQL

    Hallo Leute,
    ich bin das erste mal hier und wollte hier mal eine frage stellen mit der ich mich aussernander setze und zur keiner lösung komme.

    ich habe eine fahrzeuge tabelle in der eine generelle verfügbarkeitszeit drinne steht also z.B

    TABELLE FAHRZEUGE

    Fahrzeug ID = 1
    Fahrzeug NAME = TRALALA
    Verfügbar VON = 01.01.2008
    Verfügbar BIS = 31.12.2008

    der mysql aufruf dafür ist ja einfach aber nun kann man dieses fahrzeug für einen zeitraum mieten und dafür habe ich eine tabelle die ich vermietet nenne und diese sieht so aus

    TABELLE VERMIETET

    Fahrzeug ID = 1
    Vermietet VON = 02.03.2008
    Vermietet BIS = 13.03.2008

    wenn jetzt jemand eine suche startet mit von 28.02.2008 bis 17.03.2008 brauche ich einen mysql select der nur fahrzeuge ausgibt die in diesem zeitraum generell verfügbar sind und auch nicht innerhalb dieses zeitraums vermietet sind.

    ps: für meine zeitfelder benutzer ich interger-felder die mit timetamps gefüllt sind.
    vg
    xavie

  • xavie
    antwortet
    nochmals danke
    werde mal damit weiterarbeiten und spätestens morgen mal hier reinschreiben ob es funktioniert hat.
    vg
    xavie

    Einen Kommentar schreiben:


  • David
    antwortet
    Das könnte mit
    Code:
    SELECT
      fahrzeuge.name  
    FROM
      fahrzeuge  
    WHERE
      {suche_von} BETWEEN fahrzeuge.von AND fahrzeuge.bis
      AND {suche_bis} BETWEEN fahrzeuge.von AND fahrzeuge.bis
      AND NOT EXISTS (  
        SELECT    
          *      
        FROM    
          vermietet      
        WHERE    
          vermietet.fahrzeug_id = fahrzeuge.id
          AND (
            {suche_von} BETWEEN vermietet.von AND vermietet.bis
            OR {suche_bis} BETWEEN vermietet.von AND vermietet.bis
          )
      )
    funktionieren.
    {suche_von} und {suche_bis} musst Du dann durch Deine Zeitangaben ersetzen.
    Wie das mit den Grenzen von
    AND (
    {suche_von} BETWEEN vermietet.von AND vermietet.bis
    OR {suche_bis} BETWEEN vermietet.von AND vermietet.bis
    )
    aussieht (also ob das so stimmt), kann ich Dir allerdings nicht aus dem Ärmel schütteln. Es ist nur eine Idee

    Einen Kommentar schreiben:


  • xavie
    antwortet
    erstmal danke an david

    also das von david sieht schon sehr vielversprechend aus aber kann ich dem between anstadt curdate() 2 zeitangaben geben? wenn ja wie müsste das geschrieben werden? mit einem komma?

    es wird ja immer nach einem zeitraum und keinem zeitpunk gesucht.
    vg
    xavie

    Einen Kommentar schreiben:


  • David
    antwortet
    Wenn Deine MySQL Version ausreichend neu für Subqueries ist:
    Code:
    SELECT
      fahrzeuge.name  
    FROM
      fahrzeuge  
    WHERE
      Curdate() BETWEEN fahrzeuge.von AND fahrzeuge.bis
      AND NOT EXISTS (  
        SELECT    
          *      
        FROM    
          vermietet      
        WHERE    
          vermietet.fahrzeug_id = fahrzeuge.id
          AND Curdate() BETWEEN vermietet.von AND vermietet.bis
      )
    edit
    ps: für meine zeitfelder benutzer ich interger-felder die mit timetamps gefüllt sind.
    Oh, das ist mir jetzt zu kompliziert

    Einen Kommentar schreiben:


  • Klener
    antwortet
    Hmm vllt. gehts mit LIMIT 0 oder so..

    also
    PHP-Code:
    SELECT FROM mieten Where Vermietet von $zeitraum LIMIT 0 
    Bin mir nicht sicher das der Code so stimmt ^^

    Einen Kommentar schreiben:

Lädt...
X