MYSQL - Abfrage: von bis Zeitraum

Dieses Thema im Forum "Webentwicklung" wurde erstellt von freakZ, 6. Mai 2014 .

Schlagworte:
  1. 6. Mai 2014
    hi,

    ich habe folgendes Problem:
    start datum 2014-05-06 und End datum 2014-05-12 , nun möchte ich wenn ein Gast das ganze sucht er eine Anzahl bekommt ob er dies Buchen kann oder nicht.
    Hab mich jetzt Stunden gespielt und nichts erreicht, ich habe start: 2014-05-06 ende: 2014-05-12 angelegt das ganze 2x (quasi 2 räume vergeben).

    Doch leider erhalte ich keinerlei COUNT(room) Ergebnisse ;(, obwohl eigentlich dann 2 kommen müssten.
    Hoffe ihr wisst was ich meine.

    Derzeitig -> SELECT roomnumber FROM zimmer WHERE status = 1 AND von > 2014-05-06 AND bis > 2014-05-12
    --
    Problem 2:

    Preisplan es ist ein Standartpreis definiert dieser ist mit 01-05-2014 bis 02-12-2014 definiert nun kann aber sein das z.b zwischen 10-05 und 12-05 eine aktion ist sprich der standarpreis dann ungültig ist wie prüfe ich das in einer query derzeit gibts für den standartpreis ne eigene zeile als auch für die aktion.
     
  2. 6. Mai 2014
    AW: MYSQL - Abfrage: von bis Zeitraum

    dein datum ist mit einem trennzeichen separiert, entferne es dann sollte es gehen.

    ca so:
    SELECT *, DATE_FORMAT(von, '%Y%m%d') AS von_datum, DATE_FORMAT(bis, '%Y%m%d) AS bis_datum
    FROM room
    WHERE STATUS = 1 AND von >= 20140506 AND bis <= 20140512
     
  3. 7. Mai 2014
    AW: MYSQL - Abfrage: von bis Zeitraum

    Hab eine Preistabelle:
    STandartpreis und Aktionspreis .. wenn sich beide "Preise" also der Standart und der Aktionszeitraum überlappen bei der Buchung wie ermittle ich dann welche tage quasi normal sind und welche aktion?
     
  4. 8. Mai 2014
    AW: MYSQL - Abfrage: von bis Zeitraum

    Probier das hier mal aus

    meine db schaut folgendermaßen aus:
    room:
    id,zimmer,status,von,bis

    preise:
    id,rel_id,preis,sonderpreis


    Code:
    <?php
    // Funktion zum ermitteln von Tagen zwischen einem Zeitraum
    function seDay($begin,$end,$format,$sep){
    
     $pos1 = strpos($format, 'd');
     $pos2 = strpos($format, 'm');
     $pos3 = strpos($format, 'Y');
     
     $begin = explode($sep,$begin);
     $end = explode($sep,$end);
     
     $first = GregorianToJD($end[$pos2],$end[$pos1],$end[$pos3]);
     $second = GregorianToJD($begin[$pos2],$begin[$pos1],$begin[$pos3]);
     
     if($first > $second)
     return $first - $second;
     else
     return $second - $first;
    }
    
    // DB Verbindung
    $con = mysql_connect("127.0.0.1", "root", "");
    mysql_select_db("hotel",$con);
    
    // MySQL Abfrage mit Datumsformatierung
    $sql = "SELECT A.*, DATE_FORMAT(von, '%d%m%Y') AS von_datum, DATE_FORMAT(bis, '%d%m%Y') AS bis_datum, B.* 
     
     FROM room A
     
     INNER JOIN preise B
     ON A.id = B.rel_id
     
     WHERE von >= 06052012 AND bis <= 20140524";
    
    ?>
    <table border="1" style="font-family:'Lucida Grande', sans-serif; font-size: 14px;">
    <tr>
     <td>ID</td>
     <td>Zimmer</td>
     <td>Status</td>
     <td>Von</td>
     <td>Bis</td>
     <td>Aufenthalt</td>
     <td>Kosten</td>
    </tr>
    
    <?php
    $result=mysql_query($sql);
    while ($rows=mysql_fetch_assoc($result))
    { 
     // Aufrufen der seDay Funktion um festzustellen wieviele Tage in dem Zeitraum sind
     $duration = seDay($rows['von'],$rows['bis'],"Ymd","-");
    
     echo '<tr>';
     echo ' <td>'.$rows['id'].'</td>';
     echo ' <td>'.$rows['zimmer'].'</td>';
     echo ' <td>'.$rows['status'].'</td>';
     echo ' <td>'.$rows['von'].'</td>';
     echo ' <td>'.$rows['bis'].'</td>';
     echo ' <td>'.$duration.'</td>';
     
     // Sofern Status den Sonderpreis vorgibt, also wenn Status auf 0 ist,
     // dann ist keine Sonderpreisaktion und es wird der normale Preis angezeigt
     if($rows['status'] == 0)
     echo ' <td>'.$rows['preis'] * $duration.'</td>';
     else
     echo ' <td>'.$rows['sonderpreis'] * $duration.'</td>';
     
     echo '</tr>';
    }
    echo '</table>';
    ?>
    
     
  5. 9. Mai 2014
    AW: MYSQL - Abfrage: von bis Zeitraum

    Meine akuelle Struktur

    Code:
    /*! zimmernummer = eindeutige zimmer nummer / art = single room oder double zimmer / fotourl = url zum foto / maxusage = maximale personen / status = 0 frei oder 1 = vergeben / von und bis -> in dieser zeit soll es nicht angezeigt werden da ausgebucht */;
    INSERT INTO `zimmer` (`id`, `zimmernummer`, `art`, `fotourl`, `maxusage`, `status`, `von`, `bis`) VALUES
     (1, 'E1.1', 'single', 'http://at/demo.jpg', '1', '0', '2014-05-06', '2014-05-12'),
     (3, 'E1.3', 'double', 'http://at/demo.jpg', '2', '1', '2014-05-16', '2014-05-18'),
    
    Hab leider schon einiges versucht aber gescheitert
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.