#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#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>'; ?> + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren